From 189171d9acda79be444606548a1d34a0548c6ce4 Mon Sep 17 00:00:00 2001 From: ankitat Date: Thu, 14 May 2026 14:14:32 +0530 Subject: [PATCH 1/7] migrate: add nvds_logger and tracker_ReID model docs from mono-repo src/utils/README.md (already migrated) referenced these two paths under its "Tooling & Model Setup" section, but the files themselves were not brought over by PR #2 (DS OSS reference apps + tools migration). This fills in the dangling references. - src/utils/nvds_logger/: setup_nvds_logger.sh + upstream README. The script configures rsyslog to capture DeepStream DSLOG messages to /var/log/nvds/. - src/utils/nvmultiobjecttracker/model/tracker_ReID/: upstream README covering SAM2 segmentation, TAO ReidentificationNet, and TAO BodyPose3DNet model prep for the multi-object tracker. Source: GitLab DeepStream mono-repo, !89 (commit 0b544bc on main). Committed-By: ankitat's Claude Agent Codex Review: Approved: --- src/utils/nvds_logger/README | 43 +++++ src/utils/nvds_logger/setup_nvds_logger.sh | 73 +++++++++ .../model/tracker_ReID/README | 153 ++++++++++++++++++ 3 files changed, 269 insertions(+) create mode 100644 src/utils/nvds_logger/README create mode 100755 src/utils/nvds_logger/setup_nvds_logger.sh create mode 100644 src/utils/nvmultiobjecttracker/model/tracker_ReID/README diff --git a/src/utils/nvds_logger/README b/src/utils/nvds_logger/README new file mode 100644 index 00000000..ffde1436 --- /dev/null +++ b/src/utils/nvds_logger/README @@ -0,0 +1,43 @@ +#################################################################################################### +# SPDX-FileCopyrightText: Copyright (c) 2018-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +#################################################################################################### +nvds_logger is a basic logging library accompanying DeepStream and related software such as adaptors, apps etc. +It is based on syslog and offers many of the related functionality, including: +* different priorities (log levels) +* log filtering and redirection +* shared logging across different deepstream instances executing simultanously +* log retirement and management (using logrotate) +* cross platform support + +See setup_dslog.sh script to setup nvds_logger + +Usage: +1) Setup nvds_logger (one time basis across system reboots): +chmod u+x ./setup_nvds_logger.sh +sudo ./setup_nvds_logger.sh + +Note that the script enables various levels that help filter logs. +Please edit the script to set the log level, as mentioned in the comments within. + +Programmatic usage: +For emitting logs from within your source code, follow these three steps + +1) Before emitting log messages, application needs to call nvds_log_open function + +2) Call nvds_log to emit log messages + +3) Prepend the log messages with a keyword (ex: DSLOG) +and match the prepended keyword in setup_nvds_logger.sh + +4) Finally close log by calling nvds_log_close upon completion (to flush logs) + +NOTE: The log file is now found at /var/log/nvds/ds.log by default. Logs must be in /var/log/ for apparmor to +allow rsyslog access. The setup script can be used to choose a filepath but it will always be prepended by /var/log/nvds/. \ No newline at end of file diff --git a/src/utils/nvds_logger/setup_nvds_logger.sh b/src/utils/nvds_logger/setup_nvds_logger.sh new file mode 100755 index 00000000..fb1628a8 --- /dev/null +++ b/src/utils/nvds_logger/setup_nvds_logger.sh @@ -0,0 +1,73 @@ +#! /bin/bash + +#################################################################################################### +# SPDX-FileCopyrightText: Copyright (c) 2018-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +#################################################################################################### + +# usage: sudo ./setup_nvds_logger.sh [log name] +# eg: sudo ./setup_nvds_logger.sh ds.log +# log name is optional, if not provided, it will default to ds.log +# Log file will be found in /var/log/nvds/[log_name] +# Note: user can set logging severity level to enable log filtering as mentioned below + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" + exit 1 +fi + +nvdslogpath="/var/log/nvds/" +nvdslogfilepath="/var/log/nvds/ds.log" + +if [ "$1" != "" ]; then + nvdslogfilepath="$nvdslogpath$1" +fi + +echo "Using logging location: $nvdslogfilepath" +rm -rf /run/rsyslogd.pid + +if [ ! -d $nvdslogpath ]; then + echo "Creating logging location: $nvdslogpath" + mkdir $nvdslogpath + if [ ! -d $nvdslogpath ]; then + echo "Unable to create directory at the given path; please check permissions" + exit 1 + fi +fi + +chown root $nvdslogpath +chgrp syslog $nvdslogpath +chmod g+w $nvdslogpath +touch 11-nvds.conf + +# Modify log severity level as required and rerun this script +# 0 Emergency: system is unusable +# 1 Alert: action must be taken immediately +# 2 Critical: critical conditions +# 3 Error: error conditions +# 4 Warning: warning conditions +# 5 Notice: normal but significant condition +# 6 Informational: informational messages +# 7 Debug: debug-level messages +# refer https://tools.ietf.org/html/rfc5424.html for more information + +# Currently log level is set at INFO (6). +echo "if (\$msg contains 'DSLOG') and (\$syslogseverity <= 6) then $nvdslogfilepath" >> 11-nvds.conf +echo ":msg, contains, \"DSLOG\" ~" >> 11-nvds.conf +echo "& ~" >> 11-nvds.conf +rm -rf /etc/rsyslog.g/*-nvds.conf + +cp 11-nvds.conf /etc/rsyslog.d/ +rm 11-nvds.conf +# sudo touch /etc/rsyslog.d/10-mwx.conf +chgrp syslog $nvdslogpath +service rsyslog restart +echo "nvds logging setup. Logging to $nvdslogfilepath" + diff --git a/src/utils/nvmultiobjecttracker/model/tracker_ReID/README b/src/utils/nvmultiobjecttracker/model/tracker_ReID/README new file mode 100644 index 00000000..fd7e1c71 --- /dev/null +++ b/src/utils/nvmultiobjecttracker/model/tracker_ReID/README @@ -0,0 +1,153 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +################################################################################ + +# Deep Learning Models for Multi-Object Tracking + +## Overview + +The DeepStream SDK's multi-object tracker supports multiple deep learning models for enhanced tracking capabilities: + +- **Segmentation**: Meta Segment Anything Model 2 (SAM2) for multi-object tracking and segmentation +- **ReID**: NVIDIA TAO ReidentificationNet for re-identification and re-association +- **Pose Estimation**: NVIDIA TAO BodyPose3DNet for 3D tracking and human height estimation + +All models utilize TensorRT for accelerated inference. This guide demonstrates how to prepare these models for both dGPU and Jetson platforms. + +## Table of Contents + +- [Segmentation](#segmentation) +- [ReID](#reid) +- [Pose Estimation](#pose-estimation) + +## Segmentation + +The `config_tracker_MaskTracker.yml` configuration enables high-accuracy multi-object tracking and segmentation using SAM2 with memory bank support. This creates a segmentation module based on `config_tracker_module_Segmenter.yml`. + +### Model Source + +- **Model**: Meta SAM2 +- **URL**: [SAM2 GitHub Repository](https://github.com/facebookresearch/sam2) + +### Setup Instructions + +1. **Prepare Model Files** + ```bash + mkdir -p ../../samples/models/Tracker/ + git clone https://github.com/NVIDIA-AI-IOT/sam2-onnx-tensorrt.git + cd sam2-onnx-tensorrt + python3 -m venv sam2_env + source sam2_env/bin/activate + bash run.sh + ``` + + Visit [SAM2 ONNX TensorRT Conversion](https://github.com/NVIDIA-AI-IOT/sam2-onnx-tensorrt) to convert SAM2 models to ONNX. + + Place the following four ONNX files in the `Tracker` directory: + - `image_encoder.onnx` + - `mask_decoder.onnx` + - `memory_attention.onnx` + - `memory_encoder.onnx` + + > **Note**: TensorRT engine files will be automatically generated when you launch deepstream-app. + +2. **Configure DeepStream App** + - Navigate to `samples/configs/deepstream-app/` + - Modify the `[tracker]` configuration in your deepstream-app config file: + ```bash + ll-config-file=config_tracker_MaskTracker.yml + ``` + +3. **Run DeepStream App** + ```bash + deepstream-app -c + ``` + +## ReID + +The `config_tracker_NvDCF_accuracy.yml` and `config_tracker_NvDeepSORT.yml` configurations support ReID functionality with two options available. + +> **Warning**: UFF models have been deprecated by TensorRT. We recommend switching to ONNX or NVIDIA TAO models. + +### Option 1: NVIDIA Pretrained TAO ReID Model (Recommended) + +#### Model Source + +- **Model**: NVIDIA TAO ReidentificationNet +- **URL**: [NVIDIA NGC Catalog](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/reidentificationnet) + +#### Setup Instructions + +1. **Prepare Model Files** + ```bash + mkdir -p ../../samples/models/Tracker/ + wget 'https://api.ngc.nvidia.com/v2/models/nvidia/tao/reidentificationnet/versions/deployable_v1.0/files/resnet50_market1501.etlt' -P ../../samples/models/Tracker/ + ``` + +2. **Configure DeepStream App** + - Navigate to `samples/configs/deepstream-app/` + - Modify the `[tracker]` configuration in your deepstream-app config file: + ```bash + ll-config-file=config_tracker_NvDCF_accuracy.yml + # or ll-config-file=config_tracker_NvDeepSORT.yml + ``` + +3. **Run DeepStream App** + ```bash + deepstream-app -c + ``` + +### Option 2: Custom ONNX Model + +#### Prerequisites +- Convert your custom model to ONNX format + +#### Configuration Parameters +Modify the following parameters in your tracker config file based on your custom model architecture: + +```yaml +reidFeatureSize: 128 +inferDims: [128, 64, 3] +networkMode: 0 +inputOrder: 1 +colorFormat: 0 +offsets: [0.0, 0.0, 0.0] +netScaleFactor: 1.0000 +addFeatureNormalization: 1 +onnxFile: "change-to-model-name.onnx" +``` + +## Pose Estimation + +For 3D tracking examples, refer to the [DeepStream Reference Apps](https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps). Currently, only NVIDIA TAO BodyPose3DNet is supported. + +### Model Source +- **Model**: NVIDIA TAO BodyPose3DNet +- **URL**: [NVIDIA NGC Catalog](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/bodypose3dnet) + +### Setup Instructions + +1. **Prepare Model Files** + ```bash + mkdir -p ../../samples/models/Tracker/ + wget 'https://api.ngc.nvidia.com/v2/models/nvidia/tao/bodypose3dnet/versions/deployable_accuracy_v1.0/files/bodypose3dnet_accuracy.etlt' -P ../../samples/models/Tracker/ + ``` + +2. **Configure and Run DeepStream App** + + Visit [DeepStream Reference Apps](https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps) for how to setup and use single and multi-view 3D tracking. + +## Additional Resources + +- [DeepStream Documentation](https://docs.nvidia.com/metropolis/deepstream/) +- [NVIDIA NGC Catalog](https://catalog.ngc.nvidia.com/) +- [TensorRT Documentation](https://docs.nvidia.com/deeplearning/tensorrt/) + From 9e530a72c18d831c7a85327c08e68a076a7652ab Mon Sep 17 00:00:00 2001 From: ankitat Date: Thu, 14 May 2026 14:18:41 +0530 Subject: [PATCH 2/7] migrate: copy build.sh and BUILD.md from mono-repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migrates the top-level build infrastructure from the GitLab DeepStream mono-repo (post-MR-87 main): - build.sh: bash driver that builds all utils, gst-utils, gst-plugins, sample apps, and tao apps with platform-aware CUDA_VER defaults (x86=13.1, aarch64/sbsa=13.0). Includes the nvds_msgapi adaptor loop (originally MR !87 fix #4 — descends one level deeper than the general src/utils loop and handles azure_protocol_adaptor's device_client/module_client split). - BUILD.md: end-user build documentation covering prerequisites, platform support, the build flow, and the post-build install layout. Source: GitLab DeepStream mono-repo main (build.sh from MR !87, docs/sbsa/build-md updates from later MRs already folded in). Committed-By: ankitat's Claude Agent Codex Review: Approved: --- BUILD.md | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ build.sh | 138 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 311 insertions(+) create mode 100644 BUILD.md create mode 100755 build.sh diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 00000000..da86c41a --- /dev/null +++ b/BUILD.md @@ -0,0 +1,173 @@ +# DeepStream Mono-Repo — Build & Run Guide + +## Prerequisites + +### NVIDIA Compute Stack + +Before building from source, the NVIDIA compute stack must be installed on the host. Required versions: + +| Platform | OS | Driver | CUDA | cuDNN | TensorRT | +|---|---|---|---|---|---| +| x86 dGPU | Ubuntu 24.04 | 590.48.01+ | 13.1 | 9.18.0 | 10.14.x | +| Jetson (aarch64) | JetPack 7.1 GA | — (bundled) | 13.0 | 9.12.0 | 10.13.x | +| SBSA / DGX Spark | Ubuntu 24.04 | 590.48.01+ | 13.0 | 9.18.0 | 10.14.x | + +For installation instructions, refer to the official [DeepStream SDK Installation Guide](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html). + +> **Docker users:** NVIDIA NGC provides pre-built DeepStream 9.0 containers with the full compute stack pre-installed. If using a container, skip this section and proceed to Git LFS setup below. + +--- + +### Clone the Repository + +```bash +sudo apt-get install cmake +``` + +### x86 (dGPU) + +1. Download the DS 9.0 public released Debian package, install it, and add the + DeepStream lib directory to `LD_LIBRARY_PATH` so the runtime can locate the + shared libraries: + ```bash + sudo apt install ./deepstream-9.0_9.0.0-1_amd64.deb + sudo /opt/nvidia/deepstream/deepstream-9.0/install.sh + export LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream-9.0/lib:$LD_LIBRARY_PATH + ``` + Append the `export` line to `~/.bashrc` to persist it across shells. + +2. Install system dependencies: + ```bash + sudo apt install \ + libssl3 \ + libssl-dev \ + libcurl4-openssl-dev \ + libgles2-mesa-dev \ + libgstreamer1.0-0 \ + gstreamer1.0-tools \ + gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad \ + gstreamer1.0-plugins-ugly \ + gstreamer1.0-libav \ + libgstreamer-plugins-base1.0-dev \ + libgstrtspserver-1.0-0 \ + libjansson4 \ + libjsoncpp-dev \ + libyaml-cpp-dev \ + libmosquitto1 + ``` + + See also the [DeepStream Installation Guide — Install Prerequisite Packages](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html#id2). + +### aarch64 (Jetson) + +1. Download the DS 9.0 public released Debian package, install it, and add the + DeepStream lib directory to `LD_LIBRARY_PATH` so the runtime can locate the + shared libraries: + ```bash + sudo apt install ./deepstream-9.0_9.0.0-1_arm64.deb + sudo /opt/nvidia/deepstream/deepstream-9.0/install.sh + export LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream-9.0/lib:$LD_LIBRARY_PATH + ``` + Append the `export` line to `~/.bashrc` to persist it across shells. + +2. Install system dependencies: + ```bash + sudo apt install \ + libssl3 \ + libssl-dev \ + libcurl4-openssl-dev \ + libgstreamer1.0-0 \ + gstreamer1.0-tools \ + gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad \ + gstreamer1.0-plugins-ugly \ + gstreamer1.0-libav \ + libgstreamer-plugins-base1.0-dev \ + libgstrtspserver-1.0-0 \ + libjansson4 \ + libjsoncpp-dev \ + libyaml-cpp-dev \ + libmosquitto1 + ``` + + See also the [DeepStream Installation Guide — Install Prerequisite Packages](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html#install-prerequisite-packages). + +### SBSA / DGX Spark (Server Base System Architecture) + +SBSA and DGX Spark share the same code path. There is no DS tar/deb package for this platform. The validated environment is the SBSA Docker image. +Build and validation must be done **inside the Docker container**. + +1. Start the SBSA Docker container (with GPU access): + ```bash + docker run -it --gpus all bash + ``` + +2. Install build prerequisites inside the container: + ```bash + apt-get update && apt-get install -y git cmake make build-essential + ``` + +3. `sudo` is not present in the container by default. Create a passthrough stub since you are already root: + ```bash + printf '#!/bin/sh\nexec env "$@"\n' > /usr/local/bin/sudo && chmod +x /usr/local/bin/sudo + ``` + +4. Clone the mono-repo: + ```bash + git clone https://gitlab-master.nvidia.com/DeepStreamSDK/deepstream -b main deepstream + cd deepstream + ``` + +--- + +## Build and Install + +`build.sh` auto-detects the host platform and: +- On SBSA / DGX Spark: passes `AARCH64_IS_SBSA=1` to all Makefiles (both `aarch64` and `sbsa` report `uname -m` as `aarch64`; SBSA is identified by the absence of `/etc/nv_tegra_release`) +- Builds and installs open-source dependencies (opentelemetry, civetweb, prometheus-cpp, azure-iot-sdk) +- Builds all source components and installs them directly to `/opt/nvidia/deepstream/deepstream-/` + +```bash +sudo bash build.sh +``` + +Default CUDA version is architecture-dependent (`13.1` for x86_64, `13.0` for aarch64/sbsa/DGX Spark). To override: + +```bash +sudo CUDA_VER=13.1 bash build.sh # x86 +sudo CUDA_VER=13.0 bash build.sh # aarch64 +``` + +To override the target DeepStream version (default: 9.0): + +```bash +sudo NVDS_VERSION=9.0 bash build.sh +``` + +After first run, clear the GStreamer plugin cache so it picks up newly installed plugins: + +```bash +rm -rf ~/.cache/gstreamer-1.0/ +``` + +**Build outputs:** +- GStreamer plugins → `/opt/nvidia/deepstream/deepstream-/lib/gst-plugins/` +- Utility libs → `/opt/nvidia/deepstream/deepstream-/lib/` +- Sample app binaries → `/opt/nvidia/deepstream/deepstream-/bin/` +- service-maker app bins → `/opt/nvidia/deepstream/deepstream-/bin/service-maker-` +- service-maker modules → `/opt/nvidia/deepstream/deepstream-/service-maker/modules/` + +--- + +## service-maker — Local Compilation + +Individual service-maker apps can be compiled locally without running `build.sh`. +From within any app directory (e.g. `src/service-maker/sources/apps/cpp/deepstream_test1_app/`): + +```bash +mkdir build && cd build && cmake .. && make +``` + +The binary is placed in the local `build/` directory and nothing is installed to `/opt`. +See each app's `README` for usage instructions. diff --git a/build.sh b/build.sh new file mode 100755 index 00000000..c192c1b0 --- /dev/null +++ b/build.sh @@ -0,0 +1,138 @@ +#!/usr/bin/env bash +# Build and install all DeepStream mono-repo components. +# Usage: bash build.sh [CUDA_VER=] +set -e + +ARCH=$(uname -m) +case "$ARCH" in + x86_64) PLATFORM=x86; CUDA_VER_DEFAULT=13.1 ;; + aarch64) + # Distinguish Jetson (has /etc/nv_tegra_release) from SBSA server hardware + if [ -f /etc/nv_tegra_release ]; then + PLATFORM=aarch64 + else + PLATFORM=sbsa + fi + CUDA_VER_DEFAULT=13.0 + ;; + *) echo "Unsupported architecture: $ARCH"; exit 1 ;; +esac + +CUDA_VER=${CUDA_VER:-$CUDA_VER_DEFAULT} +NVDS_VERSION=${NVDS_VERSION:-9.0} +SM_APP_BUILD=/tmp/ds-sm-apps +SM_MOD_BUILD=/tmp/ds-sm-modules +SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) + +# Extra make flags for SBSA — passes AARCH64_IS_SBSA=1 to all Makefiles +PLATFORM_MAKE_FLAGS= +[ "$PLATFORM" = "sbsa" ] && PLATFORM_MAKE_FLAGS="AARCH64_IS_SBSA=1" + +# --------------------------------------------------------------------------- +# Prerequisites: install open-source dependencies +# (Proprietary prebuilt libs are provided by the DS 9.0 deb install at +# /opt/nvidia/deepstream/deepstream-${NVDS_VERSION}/lib/.) +# --------------------------------------------------------------------------- +echo "==> Installing open-source dependencies" +sudo NVDS_VERSION=$NVDS_VERSION bash "$SCRIPT_DIR/scripts/install_opensource_deps.sh" + +echo "==> Building PLATFORM=$PLATFORM CUDA_VER=$CUDA_VER (outputs directly to /opt/nvidia/deepstream/deepstream-${NVDS_VERSION}/)" + +MK="CUDA_VER=$CUDA_VER NVDS_VERSION=$NVDS_VERSION $PLATFORM_MAKE_FLAGS" + +# nvds_rest_server must be built before gstnvdscustomhelper (it links against it) +make -C src/utils/nvds_rest_server $MK + +# gst-utils (order matters — gstnvcustomhelper must come first) +make -C src/gst-utils/gstnvcustomhelper $MK +make -C src/gst-utils/gst-nvdssr $MK +make -C src/gst-utils/gstnvdscustomhelper $MK + +# Utils (no top-level Makefile — build each individually) +for dir in src/utils/*/; do + make -C "$dir" $MK 2>/dev/null || true +done + +# nvds_msgapi message broker adaptors (Makefiles live one level deeper than +# the rest of src/utils, and azure_protocol_adaptor splits further into +# device_client/ and module_client/). +for dir in src/utils/nvds_msgapi/*/; do + if [ -f "$dir/Makefile" ]; then + make -C "$dir" $MK 2>/dev/null || true + else + for sub in "$dir"*/; do + [ -f "$sub/Makefile" ] && make -C "$sub" $MK 2>/dev/null || true + done + fi +done + +# GStreamer plugins (no top-level Makefile — build each individually) +for dir in src/gst-plugins/*/; do + make -C "$dir" $MK 2>/dev/null || true +done + +# Sample apps (no top-level Makefile — build each individually) +# Build to a staging dir first so a failed link step does not delete the +# deb-installed binary from the DS bin dir (make removes its output on error). +SA_BIN_STAGE=/tmp/ds-sample-apps-bin +DS_BIN=/opt/nvidia/deepstream/deepstream-${NVDS_VERSION}/bin +mkdir -p "$SA_BIN_STAGE" +for dir in src/apps/sample_apps/*/; do + make -C "$dir" $MK BIN_DIR="$SA_BIN_STAGE" 2>/dev/null || true + for bin in "$SA_BIN_STAGE"/deepstream-*; do + [ -f "$bin" ] && [ -x "$bin" ] && cp -v "$bin" "$DS_BIN/" || true + done + rm -f "$SA_BIN_STAGE"/deepstream-* +done +rm -rf "$SA_BIN_STAGE" + +# Prepare Eigen lib +sudo apt update || true +sudo apt install -y libeigen3-dev +sudo ln -sf /usr/include/eigen3/Eigen /usr/include/Eigen + +#Customized Yolo postprocessing lib +make -C tools/yolo_deepstream/deepstream_yolo/nvdsinfer_custom_impl_Yolo/ $MK 2>/dev/null || true + +# tao-apps — build and install via top-level Makefile +git submodule update --init --recursive || true +make -C src/apps/tao_apps $MK 2>/dev/null || true + +# Reference apps (no top-level Makefile — build each individually) +RA_BIN_STAGE=/tmp/ds-reference-apps-bin +mkdir -p "$RA_BIN_STAGE" +for dir in src/apps/reference_apps/*/; do + make -C "$dir" $MK BIN_DIR="$RA_BIN_STAGE" 2>/dev/null || true + for bin in "$RA_BIN_STAGE"/deepstream-*; do + [ -f "$bin" ] && [ -x "$bin" ] && cp -v "$bin" "$DS_BIN/" || true + done + rm -f "$RA_BIN_STAGE"/deepstream-* +done +rm -rf "$RA_BIN_STAGE" + +# service-maker apps (cmake-based) — build and install +SM_BIN_INSTALL=/opt/nvidia/deepstream/deepstream-${NVDS_VERSION}/bin +for dir in src/service-maker/sources/apps/cpp/*/; do + app=$(basename "$dir") + cmake -S "$dir" -B "$SM_APP_BUILD/$app" -DCMAKE_BUILD_TYPE=Release + cmake --build "$SM_APP_BUILD/$app" -j$(nproc) + for bin in "$SM_APP_BUILD/$app"/deepstream-*; do + [ -f "$bin" ] && [ -x "$bin" ] || continue + name=$(basename "$bin" | sed 's/^deepstream-/service-maker-/') + cp -v "$bin" "$SM_BIN_INSTALL/$name" + done +done +rm -rf "$SM_APP_BUILD" + +# service-maker modules (cmake-based) — build and install +SM_MODULES_INSTALL=/opt/nvidia/deepstream/deepstream-${NVDS_VERSION}/service-maker/modules +mkdir -p "$SM_MODULES_INSTALL" +for dir in src/service-maker/sources/modules/*/; do + mod=$(basename "$dir") + cmake -S "$dir" -B "$SM_MOD_BUILD/$mod" -DCMAKE_BUILD_TYPE=Release + cmake --build "$SM_MOD_BUILD/$mod" -j$(nproc) + cp -v "$SM_MOD_BUILD/$mod/lib${mod}.so" "$SM_MODULES_INSTALL/" +done +rm -rf "$SM_MOD_BUILD" + +echo "==> Done" From 8bd3b97549126f2b3a573791ab5c5e27469c5d26 Mon Sep 17 00:00:00 2001 From: ankitat Date: Thu, 14 May 2026 14:32:53 +0530 Subject: [PATCH 3/7] migrate: port MR 89 Triton samples + README section additions Brings the remaining MR !89 content over from the mono-repo: - src/apps/sample_apps/TritonBackendEnsemble: Triton ensemble + custom C++ backend sample. Top-level delegating Makefile wires the nvdsinferserver_custom_impl_ensemble library into build.sh's sample_apps loop. nvds_triton_cpp_custom_backend is cmake-based (external Triton repos) and is intentionally not wired into build.sh -- README documents the manual build. - src/apps/sample_apps/TritonOnnxYolo: ONNX YoloV3 dynamic-tensor custom-process sample. Same delegating-Makefile pattern. - src/apps/sample_apps/README.md: add Triton Inference Server section describing the two library-only samples and their run flow. - src/utils/README.md: add Tooling & Model Setup section indexing nvds_logger and nvmultiobjecttracker/model (which were ported in the earlier commit on this branch and were previously dangling references). Source: GitLab DeepStream mono-repo main (MR !89 + follow-up commits). Committed-By: ankitat's Claude Agent Codex Review: Approved: --- src/apps/sample_apps/README.md | 19 + .../TritonBackendEnsemble/Makefile | 22 + .../sample_apps/TritonBackendEnsemble/README | 169 ++++ .../config_infer_primary.txt | 84 ++ .../config_infer_secondary_ensemble.txt | 76 ++ ...eam_app_config_triton_backend_ensemble.txt | 173 ++++ .../CMakeLists.txt | 208 +++++ .../TutorialRecommendedBackendConfig.cmake.in | 67 ++ .../src/libtriton_recommended.ldscript | 57 ++ .../src/recommended.cc | 813 ++++++++++++++++++ .../Makefile | 49 ++ ...vdsinferserver_custom_process_ensemble.cpp | 566 ++++++++++++ .../1/placeholder.txt | 1 + .../config.pbtxt | 47 + .../1/placeholder.txt | 1 + .../config.pbtxt | 97 +++ .../triton_custom_backend_ensemble/labels.txt | 3 + src/apps/sample_apps/TritonOnnxYolo/Makefile | 20 + src/apps/sample_apps/TritonOnnxYolo/README | 105 +++ ...inferserver_primary_yolov3_onnx_custom.txt | 89 ++ .../deepstream_app_triton_config_yolov3.txt | 79 ++ .../nvdsinferserver_custom_impl_yolo/Makefile | 45 + .../nvdsinferserver_custom_process_yolo.cpp | 506 +++++++++++ .../yolov3-10_onnx/config.pbtxt | 56 ++ src/utils/README.md | 12 + 25 files changed, 3364 insertions(+) create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/Makefile create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/README create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/config_infer_primary.txt create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/config_infer_secondary_ensemble.txt create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/deepstream_app_config_triton_backend_ensemble.txt create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/CMakeLists.txt create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/cmake/TutorialRecommendedBackendConfig.cmake.in create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/src/libtriton_recommended.ldscript create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/src/recommended.cc create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/nvdsinferserver_custom_impl_ensemble/Makefile create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/nvdsinferserver_custom_impl_ensemble/nvdsinferserver_custom_process_ensemble.cpp create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/deepstream_triton_custom_cpp_backend/1/placeholder.txt create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/deepstream_triton_custom_cpp_backend/config.pbtxt create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/1/placeholder.txt create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/config.pbtxt create mode 100644 src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/labels.txt create mode 100644 src/apps/sample_apps/TritonOnnxYolo/Makefile create mode 100644 src/apps/sample_apps/TritonOnnxYolo/README create mode 100644 src/apps/sample_apps/TritonOnnxYolo/config_triton_inferserver_primary_yolov3_onnx_custom.txt create mode 100644 src/apps/sample_apps/TritonOnnxYolo/deepstream_app_triton_config_yolov3.txt create mode 100644 src/apps/sample_apps/TritonOnnxYolo/nvdsinferserver_custom_impl_yolo/Makefile create mode 100644 src/apps/sample_apps/TritonOnnxYolo/nvdsinferserver_custom_impl_yolo/nvdsinferserver_custom_process_yolo.cpp create mode 100644 src/apps/sample_apps/TritonOnnxYolo/triton_model_repo/yolov3-10_onnx/config.pbtxt diff --git a/src/apps/sample_apps/README.md b/src/apps/sample_apps/README.md index 1309dc82..e5e0d1ce 100644 --- a/src/apps/sample_apps/README.md +++ b/src/apps/sample_apps/README.md @@ -106,3 +106,22 @@ Refer to the `README` in each app's directory for app-specific prerequisites, ru | App | Binary | Description | |---|---|---| | `deepstream-opencv-test` | `deepstream-opencv-test` | Access frame data in CPU memory for OpenCV processing. | + +### Triton Inference Server + +These samples do not produce a standalone binary. Each builds an `nvinferserver` +custom-process library (`.so`) and is driven by the deb-installed `deepstream-app` +with the included config file. See each sample's `README` for the prerequisite +Triton container setup and model download steps. + +| Sample | Library | Description | +|---|---|---| +| `TritonBackendEnsemble` | `libnvdstriton_custom_impl_ensemble.so` | Triton ensemble model used as SGIE plus a custom Triton C++ backend that reads DeepStream stream IDs. | +| `TritonOnnxYolo` | `libnvdstriton_custom_impl_yolo.so` | DS-Triton custom-lib for ONNX YoloV3 with dynamic-sized output tensors and multi-input postprocessing. | + +Run flow: + +```bash +cd src/apps/sample_apps/ +deepstream-app -c .txt +``` diff --git a/src/apps/sample_apps/TritonBackendEnsemble/Makefile b/src/apps/sample_apps/TritonBackendEnsemble/Makefile new file mode 100644 index 00000000..a38de0e6 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/Makefile @@ -0,0 +1,22 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +################################################################################ + +# Delegates to the nvdsinferserver custom-process library so the mono-repo +# build.sh sample_apps loop picks this sample up. The Triton C++ custom +# backend under nvds_triton_cpp_custom_backend/ is built separately via cmake +# (see README) and is not wired into build.sh. + +SUBDIRS := nvdsinferserver_custom_impl_ensemble + +.PHONY: all clean $(SUBDIRS) + +all: $(SUBDIRS) + +$(SUBDIRS): + $(MAKE) -C $@ + +clean: + $(MAKE) -C nvdsinferserver_custom_impl_ensemble clean diff --git a/src/apps/sample_apps/TritonBackendEnsemble/README b/src/apps/sample_apps/TritonBackendEnsemble/README new file mode 100644 index 00000000..2e308d12 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/README @@ -0,0 +1,169 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2023-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +# +################################################################################ + +This sample demonstrates +- Use of a Triton ensemble model for inference in a DeepStream pipeline. +- Implementation of a custom Triton C++ backend for accessing DeepStream + metadata like stream IDs in the Triton server. + +The included deepstream-app configuration file sets up a pipeline as follows: + source -> pgie -> tracker -> sgie -> tiler -> sink. +The PGIE, Primary_Detector, is a 4 class detector model and it detects the +classes "Vehicle , RoadSign, TwoWheeler, Person". The SGIE is a Triton +ensemble model that has Secondary_VehicleMake, Secondary_VehicleTypes, +and a custom Triton C++ backend as it's component +models. The vehicle objects detected by the PGIE and tracked by the tracker +are used as input to the ensemble model along with corresponding stream IDs. +The objects are inferred by the SGIE component classifier models. The stream +IDs are given as input to the C++ backend. In this example, the C++ backend +is used to keep track of number of inference requests seen for a particular +stream ID. The output of the C++ backend is the current count of inference +requests for corresponding stream IDs. +The stream IDs are sent as an extra input to the ensemble model. A custom +processor instance (nvdsinferserver::IInferCustomProcessor) is used to +set the stream ID input tensor and to parse the output tensors from the +model. + +The Triton custom C++ backend implementation is derived from the "Recommended +Triton Backend" example. Please refer this link for more details: +https://github.com/triton-inference-server/backend/blob/main/examples/README.md#recommended-triton-backend + +=============================================================================== +1. Sample Contents: +=============================================================================== +Sample contents for DeepStream Triton: +- deepstream_app_config_triton_backend_ensemble.txt: DeepStream reference app + configuration file for using the Triton ensemble model as the secondary detector. +- config_infer_primary.txt: nvinferserver configuration file for primary inference. +- config_infer_secondary_ensemble.txt: nvinferserver configuration file for + secondary inference using Triton ensemble model. +- nvds_triton_cpp_custom_backend: Implementation of the Triton C++ custom backend + along with the required cmake build files. Derived from the Triton recommended + backend example. +- nvdsinferserver_custom_impl_ensemble/nvdsinferserver_custom_process_ensemble.cpp: + nvdsinferserver::IInferCustomProcessor instance to do extra + input processing, ouptut tensor parsing and attaching classification metadata + into nvds metadata. +- triton_model_repo/triton_custom_backend_ensemble/config.pbtxt: + Configuration file for the example Triton Ensemble model. This ensemble works + as a secondary GIE. The component models of this ensemble are + Secondary_VehicleMake, Secondary_VehicleType and deepstream_triton_custom_cpp_backend. +- triton_model_repo/deepstream_triton_custom_cpp_backend/config.pbtxt: + Triton model configuration file for the Triton custom C++ backend that processes + DeepStream metadata, stream IDs in this example. +- triton_model_repo/Primary_Detector, Secondary_VehicleMake, Secondary_VehicleTypes: + Softlinks to the corresponding Triton models. These softlinks are NOT shipped + in the mono-repo source tree; they are created when you run + prepare_ds_triton_model_repo.sh (see Prerequisites section). The script + populates triton_model_repo/ with links pointing at the deb-installed models + under /opt/nvidia/deepstream/deepstream/samples/triton_model_repo/. + +=============================================================================== +2. Prerequisites: +=============================================================================== +Pre-requisites: +- For X86 platform, please follow instructions from + https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream + to download deepstream-triton image. + $ docker pull nvcr.io/nvidia/deepstream:[version]-triton + [version] means deepstream version numbers e.g. 9.0.0 + $ xhost + + Set correct $DISPLAY variables on host, then run deepstream-triton docker container. + $ docker run --gpus '"'device=0'"' -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY --net=host nvcr.io/nvidia/deepstream:[version]-triton + Note: Set correct GPU id in `device=$id`. + +- For Jetson platform, please install Triton dependencies. + $ cd /opt/nvidia/deepstream/deepstream/samples + $ sudo ./triton_backend_setup.sh + $ rm -rf ~/.cache/gstreamer-1.0/ + +- Build the Triton model repository + $ cd /opt/nvidia/deepstream/deepstream/samples + $ ./prepare_ds_triton_model_repo.sh + +- Install Rapid JSON library: + $ apt install rapidjson-dev + +- Install cmake 3.31.8 or later: + $ mkdir -p $HOME/.local + + For x86: + $ wget -q -O /tmp/cmake-linux.sh https://github.com/Kitware/CMake/releases/download/v3.31.8/cmake-3.31.8-linux-x86_64.sh + For Jetson (aarch64): + $ wget -q -O /tmp/cmake-linux.sh https://github.com/Kitware/CMake/releases/download/v3.31.8/cmake-3.31.8-linux-aarch64.sh + + $ sh /tmp/cmake-linux.sh -- --skip-license --prefix=$HOME/.local + $ rm /tmp/cmake-linux.sh + + - Generate makefiles for the Triton custom C++ backend: + $ cd nvds_triton_cpp_custom_backend + $ mkdir build + $ cd build + + For x86: + $ ~/.local/bin/cmake -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/install -DTRITON_ENABLE_GPU=ON \ + -DTRITON_BACKEND_REPO_TAG=r26.01 -DTRITON_CORE_REPO_TAG=r26.01 \ + -DTRITON_COMMON_REPO_TAG=r26.01 .. + For Jetson: + $ ~/.local/bin/cmake -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/install -DTRITON_ENABLE_GPU=ON \ + -DTRITON_BACKEND_REPO_TAG=r25.08 -DTRITON_CORE_REPO_TAG=r25.08 \ + -DTRITON_COMMON_REPO_TAG=r25.08 .. + + $ mkdir -p /opt/tritonserver/backends/recommended/ + +NOTE: Run with "sudo -E" or root if there is file permission issues. + +=============================================================================== +3. To Compile: +=============================================================================== + - Compile the custom library: + Set CUDA_VER in the MakeFile as per platform. + For x86, CUDA_VER=13.1 + For jetson & SBSA, CUDA_VER=13.0 + + $ make -C nvdsinferserver_custom_impl_ensemble + + - Build the Triton custom C++ backend: + $ cd nvds_triton_cpp_custom_backend + $ cd build + $ make install + $ cp install/backends/recommended/libtriton_recommended.so ../triton_model_repo/deepstream_triton_custom_cpp_backend/1/ + +NOTE: To compile the sources, run make with "sudo -E" or root permission. + +=============================================================================== +4. Usage: +=============================================================================== +Run the sample with nvinferserver in Triton C-API mode: + Run cmdline: + $ deepstream-app -c deepstream_app_config_triton_backend_ensemble.txt + + +Run the with nvinferserver using Triton gRPC remote inference: + Follow instructions in `samples/configs/deepstream-app-triton-grpc/README` to + start tritonserver by + $ tritonserver \ + --model-repository=$(pwd)/triton_model_repo + + Update configuration files config_infer_primary.txt and config_infer_secondary_ensemble.txt to + disable 'model_repo{}' block and enable 'grpc{}' with correct url. + + Then run gRPC test: + $ deepstream-app -c deepstream_app_config_triton_backend_ensemble.txt + + +To print the inference count output returned by the model, rebuild the +custom processor with debug prints enabled: + $ make -C nvdsinferserver_custom_impl_ensemble/ clean + $ make -C nvdsinferserver_custom_impl_ensemble/ ENABLE_DEBUG=1 diff --git a/src/apps/sample_apps/TritonBackendEnsemble/config_infer_primary.txt b/src/apps/sample_apps/TritonBackendEnsemble/config_infer_primary.txt new file mode 100644 index 00000000..a4c70a1f --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/config_infer_primary.txt @@ -0,0 +1,84 @@ +#################################################################################################### +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +#################################################################################################### + +infer_config { + unique_id: 1 + gpu_ids: [0] + max_batch_size: 30 + backend { + inputs: [ { + name: "input_1:0" + }] + outputs: [ + {name: "output_cov/Sigmoid:0"}, + {name: "output_bbox/BiasAdd:0"} + ] + triton { + model_name: "Primary_Detector" + version: -1 + + # model_repo block is enabled for using nvinferserver in + # Triton C-API mode. + model_repo { + root: "triton_model_repo" + strict_model_config: true + } + + # To run Triton client remote inference, enable 'grpc' block, + # and disalbe 'model_repo' block. + # Setup Tritonserver, goto current directory, run + # tritonserver --model-repository=triton_model_repo + #grpc { + # url: "localhost:8001" + #} + } + } + + preprocess { + network_format: MEDIA_FORMAT_NONE + tensor_order: TENSOR_ORDER_LINEAR + tensor_name: "input_1:0" + maintain_aspect_ratio: 0 + frame_scaling_hw: FRAME_SCALING_HW_DEFAULT + frame_scaling_filter: 1 + normalize { + scale_factor: 0.00392156862745098 + channel_offsets: [0, 0, 0] + } + } + + postprocess { + labelfile_path: "../../samples/models/Primary_Detector/labels.txt" + detection { + num_detected_classes: 4 + per_class_params { + key: 0 + value { pre_threshold: 0.4 } + } + nms { + confidence_threshold:0.2 + topk:20 + iou_threshold:0.5 + } + } + } + + extra { + copy_input_to_host_buffers: false + output_buffer_pool_size: 2 + } +} +input_control { + process_mode: PROCESS_MODE_FULL_FRAME + operate_on_gie_id: -1 + interval: 0 +} diff --git a/src/apps/sample_apps/TritonBackendEnsemble/config_infer_secondary_ensemble.txt b/src/apps/sample_apps/TritonBackendEnsemble/config_infer_secondary_ensemble.txt new file mode 100644 index 00000000..9a3e7b04 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/config_infer_secondary_ensemble.txt @@ -0,0 +1,76 @@ +#################################################################################################### +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +#################################################################################################### + +infer_config { + unique_id: 5 + gpu_ids: [0] + max_batch_size: 16 + backend { + output_mem_type: MEMORY_TYPE_CPU + triton { + model_name: "triton_custom_backend_ensemble" + version: -1 + + # model_repo block is enabled for using nvinferserver in + # Triton C-API mode. + model_repo { + root: "triton_model_repo" + strict_model_config: true + } + + # To run Triton client remote inference, enable 'grpc' block, + # and disalbe 'model_repo' block. + # Setup Tritonserver, goto current directory, run + # tritonserver --model-repository=triton_model_repo + #grpc { + # url: "localhost:8001" + #} + } + } + + preprocess { + network_format: IMAGE_FORMAT_BGR + tensor_order: TENSOR_ORDER_LINEAR + maintain_aspect_ratio: 0 + frame_scaling_hw: FRAME_SCALING_HW_DEFAULT + frame_scaling_filter: 1 + normalize { + scale_factor: 1 + } + } + + postprocess { + other { } + } + + extra { + custom_process_funcion: "CreateInferServerCustomProcess" + } + + custom_lib { + path: "nvdsinferserver_custom_impl_ensemble/libnvdstriton_custom_impl_ensemble.so" + } + +} +input_control { + process_mode: PROCESS_MODE_CLIP_OBJECTS + operate_on_gie_id: 1 + operate_on_class_ids: [0] + secondary_reinfer_interval: 90 + async_mode: true + object_control { + bbox_filter { + min_width: 128 + min_height: 128 + } + } +} diff --git a/src/apps/sample_apps/TritonBackendEnsemble/deepstream_app_config_triton_backend_ensemble.txt b/src/apps/sample_apps/TritonBackendEnsemble/deepstream_app_config_triton_backend_ensemble.txt new file mode 100644 index 00000000..72831a78 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/deepstream_app_config_triton_backend_ensemble.txt @@ -0,0 +1,173 @@ +#################################################################################################### +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +#################################################################################################### + +[application] +enable-perf-measurement=1 +perf-measurement-interval-sec=5 +#gie-kitti-output-dir=streamscl_new + +[tiled-display] +enable=1 +rows=2 +columns=2 +width=1280 +height=720 +gpu-id=0 +#(0): nvbuf-mem-default - Default memory allocated, specific to particular platform +#(1): nvbuf-mem-cuda-pinned - Allocate Pinned/Host cuda memory, applicable for Tesla +#(2): nvbuf-mem-cuda-device - Allocate Device cuda memory, applicable for Tesla +#(3): nvbuf-mem-cuda-unified - Allocate Unified cuda memory, applicable for Tesla +#(4): nvbuf-mem-surface-array - Allocate Surface Array memory, applicable for Jetson +nvbuf-memory-type=0 + +[source0] +enable=1 +#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP +type=3 +uri=file://../../samples/streams/sample_1080p_h264.mp4 +num-sources=4 +#drop-frame-interval=2 +gpu-id=0 +# (0): memtype_device - Memory type Device +# (1): memtype_pinned - Memory type Host Pinned +# (2): memtype_unified - Memory type Unified +cudadec-memtype=0 + +[sink0] +enable=1 +#Type - 1=FakeSink 2=EglSink 3=File +type=2 +sync=1 +source-id=0 +gpu-id=0 +nvbuf-memory-type=0 + +[sink1] +enable=0 +#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming +type=3 +#1=mp4 2=mkv +container=1 +#1=h264 2=h265 +codec=1 +#encoder type 0=Hardware 1=Software +enc-type=0 +sync=0 +#iframeinterval=10 +bitrate=2000000 +#H264 Profile - 0=Baseline 2=Main 4=High +#H265 Profile - 0=Main 1=Main10 +profile=0 +output-file=out.mp4 +source-id=0 + +[sink2] +enable=0 +#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming +type=4 +#1=h264 2=h265 +codec=1 +#encoder type 0=Hardware 1=Software +enc-type=0 +sync=0 +#iframeinterval=10 +bitrate=400000 +#H264 Profile - 0=Baseline 2=Main 4=High +#H265 Profile - 0=Main 1=Main10 +profile=0 +# set below properties in case of RTSPStreaming +rtsp-port=8554 +udp-port=5400 + +[osd] +enable=1 +gpu-id=0 +border-width=1 +text-size=15 +text-color=1;1;1;1; +text-bg-color=0.3;0.3;0.3;1 +font=Serif +show-clock=0 +clock-x-offset=800 +clock-y-offset=820 +clock-text-size=12 +clock-color=1;0;0;0 +nvbuf-memory-type=0 + +[streammux] +gpu-id=0 +##Boolean property to inform muxer that sources are live +live-source=0 +batch-size=4 +##time out in usec, to wait after the first buffer is available +##to push the batch even if the complete batch is not formed +batched-push-timeout=40000 +## Set muxer output width and height +width=1920 +height=1080 +##Enable to maintain aspect ratio wrt source, and allow black borders, works +##along with width, height properties +enable-padding=0 +nvbuf-memory-type=0 +## If set to TRUE, system timestamp will be attached as ntp timestamp +## If set to FALSE, ntp timestamp from rtspsrc, if available, will be attached +# attach-sys-ts-as-ntp=1 + +# config-file property is mandatory for any gie section. +# Other properties are optional and if set will override the properties set in +# the infer config file. +[primary-gie] +enable=1 +gpu-id=0 +#(0): nvinfer - Default inference plugin based on Tensorrt +#(1): nvinferserver - inference plugin based on Tensorrt-Inference-Server +plugin-type=1 +batch-size=4 +#Required by the app for OSD, not a plugin property +bbox-border-color0=1;0;0;1 +bbox-border-color1=0;1;1;1 +bbox-border-color2=0;0;1;1 +bbox-border-color3=0;1;0;1 +interval=0 +gie-unique-id=1 +nvbuf-memory-type=0 +config-file=config_infer_primary.txt + +[tracker] +enable=1 +# For NvDCF and NvDeepSORT tracker, tracker-width and tracker-height must be a multiple of 32, respectively +tracker-width=960 +tracker-height=544 +ll-lib-file=/opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so +# ll-config-file required to set different tracker types +# ll-config-file=../deepstream-app/config_tracker_IOU.yml +# ll-config-file=../deepstream-app/config_tracker_NvSORT.yml +ll-config-file=../deepstream-app/config_tracker_NvDCF_perf.yml +# ll-config-file=../deepstream-app/config_tracker_NvDCF_accuracy.yml +# ll-config-file=../deepstream-app/config_tracker_NvDeepSORT.yml +gpu-id=0 +display-tracking-id=1 + +[secondary-gie0] +enable=1 +#(0): nvinfer; (1): nvinferserver +plugin-type=1 +# nvinferserserver's gpu-id can only set from its own config-file +#gpu-id=0 +batch-size=16 +gie-unique-id=4 +operate-on-gie-id=1 +operate-on-class-ids=0; +config-file=config_infer_secondary_ensemble.txt + +[tests] +file-loop=0 diff --git a/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/CMakeLists.txt b/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/CMakeLists.txt new file mode 100644 index 00000000..a8b914b8 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/CMakeLists.txt @@ -0,0 +1,208 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: MIT +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +################################################################################ +# +# Source: https://github.com/triton-inference-server/backend/tree/main/examples/backends/recommended +# +################################################################################ + +# Copyright 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cmake_minimum_required(VERSION 3.17) + +project(tutorialrecommendedbackend LANGUAGES C CXX) + +# +# Options +# +# Must include options required for this project as well as any +# projects included in this one by FetchContent. +# +# GPU support is disabled by default because recommended backend +# doesn't use GPUs. +# +option(TRITON_ENABLE_GPU "Enable GPU support in backend" OFF) +option(TRITON_ENABLE_STATS "Include statistics collections in backend" ON) + +set(TRITON_COMMON_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/common repo") +set(TRITON_CORE_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/core repo") +set(TRITON_BACKEND_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/backend repo") + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +# +# Dependencies +# +# FetchContent requires us to include the transitive closure of all +# repos that we depend on so that we can override the tags. +# +include(FetchContent) + +FetchContent_Declare( + repo-common + GIT_REPOSITORY https://github.com/triton-inference-server/common.git + GIT_TAG ${TRITON_COMMON_REPO_TAG} + GIT_SHALLOW ON +) +FetchContent_Declare( + repo-core + GIT_REPOSITORY https://github.com/triton-inference-server/core.git + GIT_TAG ${TRITON_CORE_REPO_TAG} + GIT_SHALLOW ON +) +FetchContent_Declare( + repo-backend + GIT_REPOSITORY https://github.com/triton-inference-server/backend.git + GIT_TAG ${TRITON_BACKEND_REPO_TAG} + GIT_SHALLOW ON +) +FetchContent_MakeAvailable(repo-common repo-core repo-backend) + +# +# The backend must be built into a shared library. Use an ldscript to +# hide all symbols except for the TRITONBACKEND API. +# +configure_file(src/libtriton_recommended.ldscript libtriton_recommended.ldscript COPYONLY) + +add_library( + triton-recommended-backend SHARED + src/recommended.cc +) + +add_library( + TutorialRecommendedBackend::triton-recommended-backend ALIAS triton-recommended-backend +) + +target_include_directories( + triton-recommended-backend + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src +) + +target_compile_features(triton-recommended-backend PRIVATE cxx_std_11) +target_compile_options( + triton-recommended-backend PRIVATE + $<$,$,$>: + -Wall -Wextra -Wno-unused-parameter -Wno-type-limits -Werror> + $<$:/Wall /D_WIN32_WINNT=0x0A00 /EHsc> +) + +target_link_libraries( + triton-recommended-backend + PRIVATE + triton-core-serverapi # from repo-core + triton-core-backendapi # from repo-core + triton-core-serverstub # from repo-core + triton-backend-utils # from repo-backend +) + +if(WIN32) + set_target_properties( + triton-recommended-backend PROPERTIES + POSITION_INDEPENDENT_CODE ON + OUTPUT_NAME triton_recommended + ) +else() + set_target_properties( + triton-recommended-backend PROPERTIES + POSITION_INDEPENDENT_CODE ON + OUTPUT_NAME triton_recommended + LINK_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/libtriton_recommended.ldscript + LINK_FLAGS "-Wl,--version-script libtriton_recommended.ldscript" + ) +endif() + +# +# Install +# +include(GNUInstallDirs) +set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/TutorialRecommendedBackend) + +install( + TARGETS + triton-recommended-backend + EXPORT + triton-recommended-backend-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/backends/recommended + RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/backends/recommended +) + +install( + EXPORT + triton-recommended-backend-targets + FILE + TutorialRecommendedBackendTargets.cmake + NAMESPACE + TutorialRecommendedBackend:: + DESTINATION + ${INSTALL_CONFIGDIR} +) + +include(CMakePackageConfigHelpers) +configure_package_config_file( + ${CMAKE_CURRENT_LIST_DIR}/cmake/TutorialRecommendedBackendConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/TutorialRecommendedBackendConfig.cmake + INSTALL_DESTINATION ${INSTALL_CONFIGDIR} +) + +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/TutorialRecommendedBackendConfig.cmake + DESTINATION ${INSTALL_CONFIGDIR} +) + +# +# Export from build tree +# +export( + EXPORT triton-recommended-backend-targets + FILE ${CMAKE_CURRENT_BINARY_DIR}/TutorialRecommendedBackendTargets.cmake + NAMESPACE TutorialRecommendedBackend:: +) + +export(PACKAGE TutorialRecommendedBackend) diff --git a/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/cmake/TutorialRecommendedBackendConfig.cmake.in b/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/cmake/TutorialRecommendedBackendConfig.cmake.in new file mode 100644 index 00000000..5dd73e7e --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/cmake/TutorialRecommendedBackendConfig.cmake.in @@ -0,0 +1,67 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: MIT +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +################################################################################ +# +# Source: +# https://github.com/triton-inference-server/backend/tree/main/examples/backends/recommended +# +################################################################################ + +# Copyright 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +include(CMakeFindDependencyMacro) + +get_filename_component( + TUTORIALRECOMMENDEDBACKEND_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH +) + +list(APPEND CMAKE_MODULE_PATH ${TUTORIALRECOMMENDEDBACKEND_CMAKE_DIR}) + +if(NOT TARGET TutorialRecommendedBackend::triton-recommended-backend) + include("${TUTORIALRECOMMENDEDBACKEND_CMAKE_DIR}/TutorialRecommendedBackendTargets.cmake") +endif() + +set(TUTORIALRECOMMENDEDBACKEND_LIBRARIES TutorialRecommendedBackend::triton-recommended-backend) diff --git a/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/src/libtriton_recommended.ldscript b/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/src/libtriton_recommended.ldscript new file mode 100644 index 00000000..f393c9bb --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/src/libtriton_recommended.ldscript @@ -0,0 +1,57 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: MIT +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +################################################################################ +# +# Source: https://github.com/triton-inference-server/backend/tree/main/examples/backends/recommended +# +################################################################################ + +# Copyright 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of NVIDIA CORPORATION nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +{ + global: + TRITONBACKEND_*; + local: *; +}; diff --git a/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/src/recommended.cc b/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/src/recommended.cc new file mode 100644 index 00000000..dd04f5f3 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/nvds_triton_cpp_custom_backend/src/recommended.cc @@ -0,0 +1,813 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ +/* + * Source: + * https://github.com/triton-inference-server/backend/tree/main/examples/backends/recommended + * + */ + +// Copyright 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// * Neither the name of NVIDIA CORPORATION nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "triton/backend/backend_common.h" +#include "triton/backend/backend_input_collector.h" +#include "triton/backend/backend_model.h" +#include "triton/backend/backend_model_instance.h" +#include "triton/backend/backend_output_responder.h" +#include "triton/core/tritonbackend.h" + +namespace triton { namespace backend { namespace recommended { + +// +// Backend that demonstrates the TRITONBACKEND API. This backend works +// for any model that has 1 input with any datatype and any shape and +// 1 output with the same shape and datatype as the input. The backend +// supports both batching and non-batching models. +// +// For each batch of requests, the backend returns the input tensor +// value in the output tensor. +// + +///////////// + +extern "C" { + +// Triton calls TRITONBACKEND_Initialize when a backend is loaded into +// Triton to allow the backend to create and initialize any state that +// is intended to be shared across all models and model instances that +// use the backend. The backend should also verify version +// compatibility with Triton in this function. +// +TRITONSERVER_Error* +TRITONBACKEND_Initialize(TRITONBACKEND_Backend* backend) +{ + const char* cname; + RETURN_IF_ERROR(TRITONBACKEND_BackendName(backend, &cname)); + std::string name(cname); + + LOG_MESSAGE( + TRITONSERVER_LOG_INFO, + (std::string("TRITONBACKEND_Initialize: ") + name).c_str()); + + // Check the backend API version that Triton supports vs. what this + // backend was compiled against. Make sure that the Triton major + // version is the same and the minor version is >= what this backend + // uses. + uint32_t api_version_major, api_version_minor; + RETURN_IF_ERROR( + TRITONBACKEND_ApiVersion(&api_version_major, &api_version_minor)); + + LOG_MESSAGE( + TRITONSERVER_LOG_INFO, + (std::string("Triton TRITONBACKEND API version: ") + + std::to_string(api_version_major) + "." + + std::to_string(api_version_minor)) + .c_str()); + LOG_MESSAGE( + TRITONSERVER_LOG_INFO, + (std::string("'") + name + "' TRITONBACKEND API version: " + + std::to_string(TRITONBACKEND_API_VERSION_MAJOR) + "." + + std::to_string(TRITONBACKEND_API_VERSION_MINOR)) + .c_str()); + + if ((api_version_major != TRITONBACKEND_API_VERSION_MAJOR) || + (api_version_minor < TRITONBACKEND_API_VERSION_MINOR)) { + return TRITONSERVER_ErrorNew( + TRITONSERVER_ERROR_UNSUPPORTED, + "triton backend API version does not support this backend"); + } + + // The backend configuration may contain information needed by the + // backend, such as tritonserver command-line arguments. This + // backend doesn't use any such configuration but for this example + // print whatever is available. + TRITONSERVER_Message* backend_config_message; + RETURN_IF_ERROR( + TRITONBACKEND_BackendConfig(backend, &backend_config_message)); + + const char* buffer; + size_t byte_size; + RETURN_IF_ERROR(TRITONSERVER_MessageSerializeToJson( + backend_config_message, &buffer, &byte_size)); + LOG_MESSAGE( + TRITONSERVER_LOG_INFO, + (std::string("backend configuration:\n") + buffer).c_str()); + + // This backend does not require any "global" state but as an + // example create a string to demonstrate. + std::string* state = new std::string("backend state"); + RETURN_IF_ERROR( + TRITONBACKEND_BackendSetState(backend, reinterpret_cast(state))); + + return nullptr; // success +} + +// Triton calls TRITONBACKEND_Finalize when a backend is no longer +// needed. +// +TRITONSERVER_Error* +TRITONBACKEND_Finalize(TRITONBACKEND_Backend* backend) +{ + // Delete the "global" state associated with the backend. + void* vstate; + RETURN_IF_ERROR(TRITONBACKEND_BackendState(backend, &vstate)); + std::string* state = reinterpret_cast(vstate); + + LOG_MESSAGE( + TRITONSERVER_LOG_INFO, + (std::string("TRITONBACKEND_Finalize: state is '") + *state + "'") + .c_str()); + + delete state; + + return nullptr; // success +} + +} // extern "C" + +///////////// + +// +// ModelState +// +// State associated with a model that is using this backend. An object +// of this class is created and associated with each +// TRITONBACKEND_Model. ModelState is derived from BackendModel class +// provided in the backend utilities that provides many common +// functions. +// +class ModelState : public BackendModel { + public: + static TRITONSERVER_Error* Create( + TRITONBACKEND_Model* triton_model, ModelState** state); + virtual ~ModelState() = default; + + // Name of the input and output tensor + const std::string& InputTensorName() const { return input_name_; } + const std::string& OutputTensorName() const { return output_name_; } + + // Datatype of the input and output tensor + TRITONSERVER_DataType TensorDataType() const { return datatype_; } + + // Shape of the input and output tensor as given in the model + // configuration file. This shape will not include the batch + // dimension (if the model has one). + const std::vector& TensorNonBatchShape() const { return nb_shape_; } + + // Shape of the input and output tensor, including the batch + // dimension (if the model has one). This method cannot be called + // until the model is completely loaded and initialized, including + // all instances of the model. In practice, this means that backend + // should only call it in TRITONBACKEND_ModelInstanceExecute. + TRITONSERVER_Error* TensorShape(std::vector& shape); + + // Validate that this model is supported by this backend. + TRITONSERVER_Error* ValidateModelConfig(); + + private: + ModelState(TRITONBACKEND_Model* triton_model); + + std::string input_name_; + std::string output_name_; + + TRITONSERVER_DataType datatype_; + + bool shape_initialized_; + std::vector nb_shape_; + std::vector shape_; +}; + +ModelState::ModelState(TRITONBACKEND_Model* triton_model) + : BackendModel(triton_model), shape_initialized_(false) +{ + // Validate that the model's configuration matches what is supported + // by this backend. + THROW_IF_BACKEND_MODEL_ERROR(ValidateModelConfig()); +} + +TRITONSERVER_Error* +ModelState::Create(TRITONBACKEND_Model* triton_model, ModelState** state) +{ + try { + *state = new ModelState(triton_model); + } + catch (const BackendModelException& ex) { + RETURN_ERROR_IF_TRUE( + ex.err_ == nullptr, TRITONSERVER_ERROR_INTERNAL, + std::string("unexpected nullptr in BackendModelException")); + RETURN_IF_ERROR(ex.err_); + } + + return nullptr; // success +} + +TRITONSERVER_Error* +ModelState::TensorShape(std::vector& shape) +{ + // This backend supports models that batch along the first dimension + // and those that don't batch. For non-batch models the output shape + // will be the shape from the model configuration. For batch models + // the output shape will be the shape from the model configuration + // prepended with [ -1 ] to represent the batch dimension. The + // backend "responder" utility used below will set the appropriate + // batch dimension value for each response. The shape needs to be + // initialized lazily because the SupportsFirstDimBatching function + // cannot be used until the model is completely loaded. + if (!shape_initialized_) { + bool supports_first_dim_batching; + RETURN_IF_ERROR(SupportsFirstDimBatching(&supports_first_dim_batching)); + if (supports_first_dim_batching) { + shape_.push_back(-1); + } + + shape_.insert(shape_.end(), nb_shape_.begin(), nb_shape_.end()); + shape_initialized_ = true; + } + + shape = shape_; + + return nullptr; // success +} + +TRITONSERVER_Error* +ModelState::ValidateModelConfig() +{ + // If verbose logging is enabled, dump the model's configuration as + // JSON into the console output. + if (TRITONSERVER_LogIsEnabled(TRITONSERVER_LOG_VERBOSE)) { + common::TritonJson::WriteBuffer buffer; + RETURN_IF_ERROR(ModelConfig().PrettyWrite(&buffer)); + LOG_MESSAGE( + TRITONSERVER_LOG_VERBOSE, + (std::string("model configuration:\n") + buffer.Contents()).c_str()); + } + + // ModelConfig is the model configuration as a TritonJson + // object. Use the TritonJson utilities to parse the JSON and + // determine if the configuration is supported by this backend. + common::TritonJson::Value inputs, outputs; + RETURN_IF_ERROR(ModelConfig().MemberAsArray("input", &inputs)); + RETURN_IF_ERROR(ModelConfig().MemberAsArray("output", &outputs)); + + // The model must have exactly 1 input and 1 output. + RETURN_ERROR_IF_FALSE( + inputs.ArraySize() == 1, TRITONSERVER_ERROR_INVALID_ARG, + std::string("model configuration must have 1 input")); + RETURN_ERROR_IF_FALSE( + outputs.ArraySize() == 1, TRITONSERVER_ERROR_INVALID_ARG, + std::string("model configuration must have 1 output")); + + common::TritonJson::Value input, output; + RETURN_IF_ERROR(inputs.IndexAsObject(0, &input)); + RETURN_IF_ERROR(outputs.IndexAsObject(0, &output)); + + // Record the input and output name in the model state. + const char* input_name; + size_t input_name_len; + RETURN_IF_ERROR(input.MemberAsString("name", &input_name, &input_name_len)); + input_name_ = std::string(input_name); + + const char* output_name; + size_t output_name_len; + RETURN_IF_ERROR( + output.MemberAsString("name", &output_name, &output_name_len)); + output_name_ = std::string(output_name); + + // Input and output must have same datatype + std::string input_dtype, output_dtype; + RETURN_IF_ERROR(input.MemberAsString("data_type", &input_dtype)); + RETURN_IF_ERROR(output.MemberAsString("data_type", &output_dtype)); + RETURN_ERROR_IF_FALSE( + input_dtype == output_dtype, TRITONSERVER_ERROR_INVALID_ARG, + std::string("expected input and output datatype to match, got ") + + input_dtype + " and " + output_dtype); + datatype_ = ModelConfigDataTypeToTritonServerDataType(input_dtype); + + // Input and output must have same shape. Reshape is not supported + // on either input or output so flag an error is the model + // configuration uses it. + triton::common::TritonJson::Value reshape; + RETURN_ERROR_IF_TRUE( + input.Find("reshape", &reshape), TRITONSERVER_ERROR_UNSUPPORTED, + std::string("reshape not supported for input tensor")); + RETURN_ERROR_IF_TRUE( + output.Find("reshape", &reshape), TRITONSERVER_ERROR_UNSUPPORTED, + std::string("reshape not supported for output tensor")); + + std::vector input_shape, output_shape; + RETURN_IF_ERROR(backend::ParseShape(input, "dims", &input_shape)); + RETURN_IF_ERROR(backend::ParseShape(output, "dims", &output_shape)); + + RETURN_ERROR_IF_FALSE( + input_shape == output_shape, TRITONSERVER_ERROR_INVALID_ARG, + std::string("expected input and output shape to match, got ") + + backend::ShapeToString(input_shape) + " and " + + backend::ShapeToString(output_shape)); + + nb_shape_ = input_shape; + + return nullptr; // success +} + +extern "C" { + +// Triton calls TRITONBACKEND_ModelInitialize when a model is loaded +// to allow the backend to create any state associated with the model, +// and to also examine the model configuration to determine if the +// configuration is suitable for the backend. Any errors reported by +// this function will prevent the model from loading. +// +TRITONSERVER_Error* +TRITONBACKEND_ModelInitialize(TRITONBACKEND_Model* model) +{ + // Create a ModelState object and associate it with the + // TRITONBACKEND_Model. If anything goes wrong with initialization + // of the model state then an error is returned and Triton will fail + // to load the model. + ModelState* model_state; + RETURN_IF_ERROR(ModelState::Create(model, &model_state)); + RETURN_IF_ERROR( + TRITONBACKEND_ModelSetState(model, reinterpret_cast(model_state))); + + return nullptr; // success +} + +// Triton calls TRITONBACKEND_ModelFinalize when a model is no longer +// needed. The backend should cleanup any state associated with the +// model. This function will not be called until all model instances +// of the model have been finalized. +// +TRITONSERVER_Error* +TRITONBACKEND_ModelFinalize(TRITONBACKEND_Model* model) +{ + void* vstate; + RETURN_IF_ERROR(TRITONBACKEND_ModelState(model, &vstate)); + ModelState* model_state = reinterpret_cast(vstate); + delete model_state; + + return nullptr; // success +} + +} // extern "C" + +///////////// + +// +// ModelInstanceState +// +// State associated with a model instance. An object of this class is +// created and associated with each +// TRITONBACKEND_ModelInstance. ModelInstanceState is derived from +// BackendModelInstance class provided in the backend utilities that +// provides many common functions. +// +class ModelInstanceState : public BackendModelInstance { + public: + static TRITONSERVER_Error* Create( + ModelState* model_state, + TRITONBACKEND_ModelInstance* triton_model_instance, + ModelInstanceState** state); + virtual ~ModelInstanceState() = default; + + // Get the state of the model that corresponds to this instance. + ModelState* StateForModel() const { return model_state_; } + + // Increment the inference counter for corresponding stream ID. + void log_request(unsigned int stream_id) { + if (inference_counts.count(stream_id)) { + inference_counts[stream_id] = inference_counts[stream_id] + 1; + } else { + inference_counts.emplace(stream_id, 1); + } + } + + // Get the inference counter for corresponding stream ID. + unsigned int get_inference_count(unsigned int stream_id) { + auto stream_info = inference_counts.find(stream_id); + if (stream_info == inference_counts.end()) { + return 0; + } else { + return stream_info->second; + } + } + + private: + ModelInstanceState( + ModelState* model_state, + TRITONBACKEND_ModelInstance* triton_model_instance) + : BackendModelInstance(model_state, triton_model_instance), + model_state_(model_state) + { + } + + // Map of stream IDs, inference count + std::unordered_map inference_counts; + + ModelState* model_state_; +}; + +TRITONSERVER_Error* +ModelInstanceState::Create( + ModelState* model_state, TRITONBACKEND_ModelInstance* triton_model_instance, + ModelInstanceState** state) +{ + try { + *state = new ModelInstanceState(model_state, triton_model_instance); + } + catch (const BackendModelInstanceException& ex) { + RETURN_ERROR_IF_TRUE( + ex.err_ == nullptr, TRITONSERVER_ERROR_INTERNAL, + std::string("unexpected nullptr in BackendModelInstanceException")); + RETURN_IF_ERROR(ex.err_); + } + + return nullptr; // success +} + +extern "C" { + +// Triton calls TRITONBACKEND_ModelInstanceInitialize when a model +// instance is created to allow the backend to initialize any state +// associated with the instance. +// +TRITONSERVER_Error* +TRITONBACKEND_ModelInstanceInitialize(TRITONBACKEND_ModelInstance* instance) +{ + // Get the model state associated with this instance's model. + TRITONBACKEND_Model* model; + RETURN_IF_ERROR(TRITONBACKEND_ModelInstanceModel(instance, &model)); + + void* vmodelstate; + RETURN_IF_ERROR(TRITONBACKEND_ModelState(model, &vmodelstate)); + ModelState* model_state = reinterpret_cast(vmodelstate); + + // Create a ModelInstanceState object and associate it with the + // TRITONBACKEND_ModelInstance. + ModelInstanceState* instance_state; + RETURN_IF_ERROR( + ModelInstanceState::Create(model_state, instance, &instance_state)); + RETURN_IF_ERROR(TRITONBACKEND_ModelInstanceSetState( + instance, reinterpret_cast(instance_state))); + + return nullptr; // success +} + +// Triton calls TRITONBACKEND_ModelInstanceFinalize when a model +// instance is no longer needed. The backend should cleanup any state +// associated with the model instance. +// +TRITONSERVER_Error* +TRITONBACKEND_ModelInstanceFinalize(TRITONBACKEND_ModelInstance* instance) +{ + void* vstate; + RETURN_IF_ERROR(TRITONBACKEND_ModelInstanceState(instance, &vstate)); + ModelInstanceState* instance_state = + reinterpret_cast(vstate); + delete instance_state; + + return nullptr; // success +} + +} // extern "C" + +///////////// + +extern "C" { + +// When Triton calls TRITONBACKEND_ModelInstanceExecute it is required +// that a backend create a response for each request in the batch. A +// response may be the output tensors required for that request or may +// be an error that is returned in the response. +// +TRITONSERVER_Error* +TRITONBACKEND_ModelInstanceExecute( + TRITONBACKEND_ModelInstance* instance, TRITONBACKEND_Request** requests, + const uint32_t request_count) +{ + // Collect various timestamps during the execution of this batch or + // requests. These values are reported below before returning from + // the function. + + uint64_t exec_start_ns = 0; + SET_TIMESTAMP(exec_start_ns); + + // Triton will not call this function simultaneously for the same + // 'instance'. But since this backend could be used by multiple + // instances from multiple models the implementation needs to handle + // multiple calls to this function at the same time (with different + // 'instance' objects). Best practice for a high-performance + // implementation is to avoid introducing mutex/lock and instead use + // only function-local and model-instance-specific state. + ModelInstanceState* instance_state; + RETURN_IF_ERROR(TRITONBACKEND_ModelInstanceState( + instance, reinterpret_cast(&instance_state))); + ModelState* model_state = instance_state->StateForModel(); + + // 'responses' is initialized as a parallel array to 'requests', + // with one TRITONBACKEND_Response object for each + // TRITONBACKEND_Request object. If something goes wrong while + // creating these response objects, the backend simply returns an + // error from TRITONBACKEND_ModelInstanceExecute, indicating to + // Triton that this backend did not create or send any responses and + // so it is up to Triton to create and send an appropriate error + // response for each request. RETURN_IF_ERROR is one of several + // useful macros for error handling that can be found in + // backend_common.h. + + std::vector responses; + responses.reserve(request_count); + for (uint32_t r = 0; r < request_count; ++r) { + TRITONBACKEND_Request* request = requests[r]; + TRITONBACKEND_Response* response; + RETURN_IF_ERROR(TRITONBACKEND_ResponseNew(&response, request)); + responses.push_back(response); + } + + // At this point, the backend takes ownership of 'requests', which + // means that it is responsible for sending a response for every + // request. From here, even if something goes wrong in processing, + // the backend must return 'nullptr' from this function to indicate + // success. Any errors and failures must be communicated via the + // response objects. + // + // To simplify error handling, the backend utilities manage + // 'responses' in a specific way and it is recommended that backends + // follow this same pattern. When an error is detected in the + // processing of a request, an appropriate error response is sent + // and the corresponding TRITONBACKEND_Response object within + // 'responses' is set to nullptr to indicate that the + // request/response has already been handled and no futher processing + // should be performed for that request. Even if all responses fail, + // the backend still allows execution to flow to the end of the + // function so that statistics are correctly reported by the calls + // to TRITONBACKEND_ModelInstanceReportStatistics and + // TRITONBACKEND_ModelInstanceReportBatchStatistics. + // RESPOND_AND_SET_NULL_IF_ERROR, and + // RESPOND_ALL_AND_SET_NULL_IF_ERROR are macros from + // backend_common.h that assist in this management of response + // objects. + + // The backend could iterate over the 'requests' and process each + // one separately. But for performance reasons it is usually + // preferred to create batched input tensors that are processed + // simultaneously. This is especially true for devices like GPUs + // that are capable of exploiting the large amount parallelism + // exposed by larger data sets. + // + // The backend utilities provide a "collector" to facilitate this + // batching process. The 'collector's ProcessTensor function will + // combine a tensor's value from each request in the batch into a + // single contiguous buffer. The buffer can be provided by the + // backend or 'collector' can create and manage it. In this backend, + // there is not a specific buffer into which the batch should be + // created, so use ProcessTensor arguments that cause collector to + // manage it. ProcessTensor does NOT support TRITONSERVER_TYPE_BYTES + // data type. + + BackendInputCollector collector( + requests, request_count, &responses, model_state->TritonMemoryManager(), + true /* pinned_disabled*/, nullptr /* stream*/); + + // To instruct ProcessTensor to "gather" the entire batch of input + // tensors into a single contiguous buffer in CPU memory, set the + // "allowed input types" to be the CPU ones (see tritonserver.h in + // the triton-inference-server/core repo for allowed memory types). + std::vector> allowed_input_types = + {{TRITONSERVER_MEMORY_CPU, 0}}; + + const char* input_buffer; + size_t input_buffer_byte_size; + TRITONSERVER_MemoryType input_buffer_memory_type; + int64_t input_buffer_memory_type_id; + + RESPOND_ALL_AND_SET_NULL_IF_ERROR( + responses, request_count, + collector.ProcessTensor( + model_state->InputTensorName().c_str(), nullptr /* existing_buffer */, + 0 /* existing_buffer_byte_size */, allowed_input_types, &input_buffer, + &input_buffer_byte_size, &input_buffer_memory_type, + &input_buffer_memory_type_id)); + + + // Finalize the collector. If 'true' is returned, 'input_buffer' + // will not be valid until the backend synchronizes the CUDA + // stream or event that was used when creating the collector. For + // this backend, GPU is not supported and so no CUDA sync should + // be needed; so if 'true' is returned simply log an error. + const bool need_cuda_input_sync = collector.Finalize(); + if (need_cuda_input_sync) { + LOG_MESSAGE( + TRITONSERVER_LOG_ERROR, + "'recommended' backend: unexpected CUDA sync required by collector"); + } + + // 'input_buffer' contains the batched input tensor. The backend can + // implement whatever logic is necessary to produce the output + // tensor. This backend simply logs the input tensor value and then + // returns the input tensor value in the output tensor so no actual + // computation is needed. + + uint64_t compute_start_ns = 0; + SET_TIMESTAMP(compute_start_ns); + + LOG_MESSAGE( + TRITONSERVER_LOG_INFO, + (std::string("model ") + model_state->Name() + ": requests in batch " + + std::to_string(request_count)) + .c_str()); + std::string tstr; + IGNORE_ERROR(BufferAsTypedString( + tstr, input_buffer, input_buffer_byte_size, + model_state->TensorDataType())); + LOG_MESSAGE( + TRITONSERVER_LOG_INFO, + (std::string("batched " + model_state->InputTensorName() + " value: ") + + tstr) + .c_str()); + + unsigned int batch_size = input_buffer_byte_size/ sizeof(unsigned int); + unsigned int* output_buffer = new unsigned int[batch_size]; + for (unsigned int batch_idx = 0; batch_idx < batch_size; batch_idx++) { + unsigned int stream_id = ((unsigned int*)input_buffer)[batch_idx]; + instance_state->log_request(stream_id); + } + + for (unsigned int batch_idx = 0; batch_idx < batch_size; batch_idx++) { + unsigned int stream_id = ((unsigned int*)input_buffer)[batch_idx]; + output_buffer[batch_idx] = instance_state->get_inference_count(stream_id); + } + + TRITONSERVER_MemoryType output_buffer_memory_type = input_buffer_memory_type; + int64_t output_buffer_memory_type_id = input_buffer_memory_type_id; + + uint64_t compute_end_ns = 0; + SET_TIMESTAMP(compute_end_ns); + + bool supports_first_dim_batching; + RESPOND_ALL_AND_SET_NULL_IF_ERROR( + responses, request_count, + model_state->SupportsFirstDimBatching(&supports_first_dim_batching)); + + std::vector tensor_shape; + RESPOND_ALL_AND_SET_NULL_IF_ERROR( + responses, request_count, model_state->TensorShape(tensor_shape)); + + // Because the output tensor values are concatenated into a single + // contiguous 'output_buffer', the backend must "scatter" them out + // to the individual response output tensors. The backend utilities + // provide a "responder" to facilitate this scattering process. + // BackendOutputResponder does NOT support TRITONSERVER_TYPE_BYTES + // data type. + + // The 'responders's ProcessTensor function will copy the portion of + // 'output_buffer' corresonding to each request's output into the + // response for that request. + + BackendOutputResponder responder( + requests, request_count, &responses, model_state->TritonMemoryManager(), + supports_first_dim_batching, false /* pinned_enabled */, + nullptr /* stream*/); + + responder.ProcessTensor( + model_state->OutputTensorName().c_str(), model_state->TensorDataType(), + tensor_shape, (char *)output_buffer, output_buffer_memory_type, + output_buffer_memory_type_id); + + // Finalize the responder. If 'true' is returned, the output + // tensors' data will not be valid until the backend synchronizes + // the CUDA stream or event that was used when creating the + // responder. For this backend, GPU is not supported and so no CUDA + // sync should be needed; so if 'true' is returned simply log an + // error. + const bool need_cuda_output_sync = responder.Finalize(); + if (need_cuda_output_sync) { + LOG_MESSAGE( + TRITONSERVER_LOG_ERROR, + "'recommended' backend: unexpected CUDA sync required by responder"); + } + + // Send all the responses that haven't already been sent because of + // an earlier error. + for (auto& response : responses) { + if (response != nullptr) { + LOG_IF_ERROR( + TRITONBACKEND_ResponseSend( + response, TRITONSERVER_RESPONSE_COMPLETE_FINAL, nullptr), + "failed to send response"); + } + } + delete[] output_buffer; + + uint64_t exec_end_ns = 0; + SET_TIMESTAMP(exec_end_ns); + +#ifdef TRITON_ENABLE_STATS + // For batch statistics need to know the total batch size of the + // requests. This is not necessarily just the number of requests, + // because if the model supports batching then any request can be a + // batched request itself. + size_t total_batch_size = 0; + if (!supports_first_dim_batching) { + total_batch_size = request_count; + } else { + for (uint32_t r = 0; r < request_count; ++r) { + auto& request = requests[r]; + TRITONBACKEND_Input* input = nullptr; + LOG_IF_ERROR( + TRITONBACKEND_RequestInputByIndex(request, 0 /* index */, &input), + "failed getting request input"); + if (input != nullptr) { + const int64_t* shape = nullptr; + LOG_IF_ERROR( + TRITONBACKEND_InputProperties( + input, nullptr, nullptr, &shape, nullptr, nullptr, nullptr), + "failed getting input properties"); + if (shape != nullptr) { + total_batch_size += shape[0]; + } + } + } + } +#else + (void)exec_start_ns; + (void)exec_end_ns; + (void)compute_start_ns; + (void)compute_end_ns; +#endif // TRITON_ENABLE_STATS + + // Report statistics for each request, and then release the request. + for (uint32_t r = 0; r < request_count; ++r) { + auto& request = requests[r]; + +#ifdef TRITON_ENABLE_STATS + LOG_IF_ERROR( + TRITONBACKEND_ModelInstanceReportStatistics( + instance_state->TritonModelInstance(), request, + (responses[r] != nullptr) /* success */, exec_start_ns, + compute_start_ns, compute_end_ns, exec_end_ns), + "failed reporting request statistics"); +#endif // TRITON_ENABLE_STATS + + LOG_IF_ERROR( + TRITONBACKEND_RequestRelease(request, TRITONSERVER_REQUEST_RELEASE_ALL), + "failed releasing request"); + } + +#ifdef TRITON_ENABLE_STATS + // Report batch statistics. + LOG_IF_ERROR( + TRITONBACKEND_ModelInstanceReportBatchStatistics( + instance_state->TritonModelInstance(), total_batch_size, + exec_start_ns, compute_start_ns, compute_end_ns, exec_end_ns), + "failed reporting batch request statistics"); +#endif // TRITON_ENABLE_STATS + + return nullptr; // success +} + +} // extern "C" + +}}} // namespace triton::backend::recommended diff --git a/src/apps/sample_apps/TritonBackendEnsemble/nvdsinferserver_custom_impl_ensemble/Makefile b/src/apps/sample_apps/TritonBackendEnsemble/nvdsinferserver_custom_impl_ensemble/Makefile new file mode 100644 index 00000000..34739353 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/nvdsinferserver_custom_impl_ensemble/Makefile @@ -0,0 +1,49 @@ +#################################################################################################### +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +#################################################################################################### + +CUDA_VER?= +ifeq ($(CUDA_VER),) + $(error "CUDA_VER is not set") +endif + +CC:= g++ + +CFLAGS := -Wall -std=c++14 -shared -fPIC -Wno-error=deprecated-declarations +CFLAGS += -I../../../../../includes \ + -I /usr/local/cuda-$(CUDA_VER)/include \ + -I../../../../../includes/nvdsinferserver \ + -I/opt/nvidia/deepstream/deepstream/sources/includes \ + -I/opt/nvidia/deepstream/deepstream/sources/includes/nvdsinferserver + +ifeq ($(ENABLE_DEBUG), 1) + CFLAGS += -DENABLE_DEBUG=1 +endif + +LIBS:= \ + -L/opt/nvidia/deepstream/deepstream/lib/ -lnvds_meta +LFLAGS:= -Wl,--start-group $(LIBS) -Wl,--end-group + +SRCFILES:= nvdsinferserver_custom_process_ensemble.cpp + +TARGET_LIB:= libnvdstriton_custom_impl_ensemble.so + +PKGS:= glib-2.0 gstreamer-1.0 +CFLAGS+=$(shell pkg-config --cflags $(PKGS)) +LIBS+=$(shell pkg-config --libs $(PKGS)) + +all: $(TARGET_LIB) + +$(TARGET_LIB) : $(SRCFILES) + $(CC) -o $@ $^ $(CFLAGS) $(LFLAGS) + +clean: + rm -rf $(TARGET_LIB) diff --git a/src/apps/sample_apps/TritonBackendEnsemble/nvdsinferserver_custom_impl_ensemble/nvdsinferserver_custom_process_ensemble.cpp b/src/apps/sample_apps/TritonBackendEnsemble/nvdsinferserver_custom_impl_ensemble/nvdsinferserver_custom_process_ensemble.cpp new file mode 100644 index 00000000..73451c05 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/nvdsinferserver_custom_impl_ensemble/nvdsinferserver_custom_process_ensemble.cpp @@ -0,0 +1,566 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2023-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: LicenseRef-NvidiaProprietary + * + * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual + * property and proprietary rights in and to this material, related + * documentation and any modifications thereto. Any use, reproduction, + * disclosure or distribution of this material and related documentation + * without an express license agreement from NVIDIA CORPORATION or + * its affiliates is strictly prohibited. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "infer_custom_process.h" +#include "infer_post_datatypes.h" +#include "nvbufsurface.h" +#include "nvdsmeta.h" +#include "gstnvdsmeta.h" + +typedef struct _GstBuffer GstBuffer; + +/** This file implements the custom extra input preprocess and custom + * postprocess for the Triton ensemble model example in DeepStream. + */ + +namespace dsis = nvdsinferserver; + +#if ENABLE_DEBUG +#define LOG_DEBUG(fmt, ...) fprintf(stdout, "%s:%d " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__) +#else +#define LOG_DEBUG(fmt, ...) +#endif + +#define LOG_ERROR(fmt, ...) fprintf(stderr, "%s:%d " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__) + +#ifndef INFER_ASSERT +#define INFER_ASSERT(expr) \ + do { \ + if (!(expr)) { \ + fprintf(stderr, "%s:%d ASSERT(%s) \n", __FILE__, __LINE__, #expr); \ + std::abort(); \ + } \ + } while (0) +#endif + +#define CSTR(str) (str).empty() ? "" : (str).c_str() + +static inline const char* safeStr(const char* str) +{ + return !str ? "" : str; +} + +static inline const char* safeStr(const std::string& str) +{ + return str.c_str(); +} + +/** Labels for the VehicleMake classifier model. */ +static const std::vector kVehicleMakeLabels = { + "acura", "audi", "bmw", "chevrolet", + "chrysler", "dodge", "ford", "gmc", + "honda", "hyundai", "infiniti", "jeep", + "kia", "lexus", "mazda", "mercedes", + "nissan", "subaru", "toyota", "volkswagen" +}; + +/** Labels for the VehicleTypes classifier model. */ +static const std::vector kVehicleTypeLabels = { + "coupe", "largevehicle", "sedan", "suv", "truck", "van" +}; + +constexpr float kClassifierThreshold = 0.51f; + +/** Define a function for custom processor for DeepStream Triton plugin(nvinferserver) + * do custom extra input preprocess and custom postprocess on triton based models. + * The sysmbol is loaded through + * infer_config { + * custom_lib { path: "path/to/custom_impl_process.so" } + * extra { + * custom_process_funcion: "CreateInferServerCustomProcess" + * }} + */ +extern "C" dsis::IInferCustomProcessor* CreateInferServerCustomProcess( + const char* config, uint32_t configLen); + +namespace { +using namespace dsis; + +std::string +memType2Str(InferMemType t) +{ + switch (t) { + case InferMemType::kGpuCuda: + return "kGpuCuda"; + case InferMemType::kCpu: + return "kCpu"; + case InferMemType::kCpuCuda: + return "kCpuPinned"; + default: + return "Unknown"; + } +} + +std::string +dataType2Str(dsis::InferDataType t) +{ + switch (t) { + case InferDataType::kFp32: + return "kFp32"; + case InferDataType::kFp16: + return "kFp16"; + case InferDataType::kInt8: + return "kInt8"; + case InferDataType::kInt32: + return "kInt32"; + case InferDataType::kInt16: + return "kInt16"; + case InferDataType::kUint8: + return "kUint8"; + case InferDataType::kUint16: + return "kUint16"; + case InferDataType::kUint32: + return "kUint32"; + case InferDataType::kFp64: + return "kFp64"; + case InferDataType::kInt64: + return "kInt64"; + case InferDataType::kUint64: + return "kUint64"; + case InferDataType::kString: + return "kString"; + case InferDataType::kBool: + return "kBool"; + default: + return "Unknown"; + } +} + +// return buffer description string +std::string +strOfBufDesc(const dsis::InferBufferDescription& desc) +{ + std::stringstream ss; + ss << "*" << desc.name << "*, shape: "; + for (uint32_t i = 0; i < desc.dims.numDims; ++i) { + if (i != 0) { + ss << "x"; + } else { + ss << "["; + } + ss << desc.dims.d[i]; + if (i == desc.dims.numDims - 1) { + ss << "]"; + } + } + ss << ", dataType:" << dataType2Str(desc.dataType); + ss << ", memType:" << memType2Str(desc.memType); + return ss.str(); +} + +} // namespace + +/** Example of a Custom process instance for deepstream-triton(gst-nvinferserver) plugin + * It is derived from nvdsinferserver::IInferCustomProcessor + * If should be loaded through + * config_triton_inferserver_primary_fasterRCNN.txt: + * infer_config { + * custom_lib { path: "path/to/custom_impl_process.so" } + * extra { + * custom_process_funcion: "CreateInferServerCustomProcess" + * } + * } + */ +class NvInferServerCustomProcess : public dsis::IInferCustomProcessor { +private: + std::map> _streamFeedback; + std::mutex _streamMutex; + +public: + ~NvInferServerCustomProcess() override = default; + /** override function + * Specifies supported extraInputs memtype in extraInputProcess() + */ + void supportInputMemType(dsis::InferMemType& type) override { type = dsis::InferMemType::kCpu; } + + /** Override function + * check whether custom loop process needed. + * If return True, extraInputProcess() and inferenceDone() runs in order per stream_ids + * This is usually for LSTM loop purpose. FasterRCNN does not need it. + * The code for requireInferLoop() conditions just sample when user has + * a LSTM-like Loop model and requires loop custom processing. + * */ + bool requireInferLoop() const override { return false; } + + /** + * Override function + * Do custom processing on extra inputs. + * @primaryInput is already preprocessed. DO NOT update it again. + * @extraInputs, do custom processing and fill all data according the tensor shape + * @options, it has most of the common Deepstream metadata along with primary data. + * e.g. NvDsBatchMeta, NvDsObjectMeta, NvDsFrameMeta, stream ids... + * see infer_ioptions.h to see all the potential key name and structures + * in the key-value table. + */ + NvDsInferStatus extraInputProcess( + const std::vector& + primaryInputs, // primary tensor(image) has been processed + std::vector& extraInputs, const dsis::IOptions* options) override + { + INFER_ASSERT(primaryInputs.size() > 0); + INFER_ASSERT(extraInputs.size() == 1); + // primary input tensor: INPUT [batch, channel, height, width] + dsis::InferBufferDescription input0Desc = primaryInputs[0]->getBufDesc(); + // extra input tensor: STREAM_ID [batch, 1] + dsis::InferBufferDescription extra1Desc = extraInputs[0]->getBufDesc(); + INFER_ASSERT(extra1Desc.dataType == dsis::InferDataType::kInt32); + INFER_ASSERT(extra1Desc.elementSize == sizeof(int32_t)); // bytes per element + + INFER_ASSERT(!strOfBufDesc(input0Desc).empty()); + LOG_DEBUG("extraInputProcess: primary input %s", strOfBufDesc(input0Desc).c_str()); + LOG_DEBUG("extraInputProcess: extra input %s", strOfBufDesc(extra1Desc).c_str()); + + // batch size must be get from primary input tensor. + // extra inputs 'image_shape' does not have a batch size in this specific model + int batchSize = input0Desc.dims.d[0]; + INFER_ASSERT(extra1Desc.dims.numDims == 2 && extra1Desc.dims.d[0] == batchSize); + INFER_ASSERT(batchSize >= 1); + if (!options) { + LOG_ERROR("custom process does not receive IOptions"); + return NVDSINFER_CUSTOM_LIB_FAILED; + } + + NvDsBatchMeta* batchMeta = nullptr; + std::vector frameMetaList; + NvBufSurface* bufSurf = nullptr; + std::vector surfParamsList; + std::vector streamIds; + int64_t unique_id = 0; + INFER_ASSERT(options->getValueArray(OPTION_NVDS_SREAM_IDS, streamIds) == NVDSINFER_SUCCESS); + INFER_ASSERT(streamIds.size() == (uint32_t)batchSize); + + // get NvBufSurface + if (options->hasValue(OPTION_NVDS_BUF_SURFACE)) { + INFER_ASSERT(options->getObj(OPTION_NVDS_BUF_SURFACE, bufSurf) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(bufSurf); + + // get NvDsBatchMeta + if (options->hasValue(OPTION_NVDS_BATCH_META)) { + INFER_ASSERT(options->getObj(OPTION_NVDS_BATCH_META, batchMeta) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(batchMeta); + + // get all frame meta list into vector + if (options->hasValue(OPTION_NVDS_FRAME_META_LIST)) { + INFER_ASSERT( + options->getValueArray(OPTION_NVDS_FRAME_META_LIST, frameMetaList) == + NVDSINFER_SUCCESS); + } + + // get unique_id + if (options->hasValue(OPTION_NVDS_UNIQUE_ID)) { + INFER_ASSERT(options->getInt(OPTION_NVDS_UNIQUE_ID, unique_id) == NVDSINFER_SUCCESS); + } + + // get all surface params list into vector + if (options->hasValue(OPTION_NVDS_BUF_SURFACE_PARAMS_LIST)) { + INFER_ASSERT( + options->getValueArray(OPTION_NVDS_BUF_SURFACE_PARAMS_LIST, surfParamsList) == + NVDSINFER_SUCCESS); + } + + // fill extra input tensor "STREAM_ID[-1,1]" + int32_t* streamIdTensor = (int32_t*)extraInputs[0]->getBufPtr(0); + + for (int iBatch = 0; iBatch < batchSize; ++iBatch) { + streamIdTensor[iBatch] = streamIds[iBatch]; + } + return NVDSINFER_SUCCESS; + } + + /** Override function + * Custom processing for inferenced output tensors. + * output memory types is controlled by gst-nvinferserver config file + * infer_config { + * backend { output_mem_type: MEMORY_TYPE_CPU } + * } + * User can even attach parsed metadata into GstBuffer from this function + */ + NvDsInferStatus inferenceDone( + const dsis::IBatchArray* outputs, const dsis::IOptions* inOptions) override + { + std::vector streamIds; + INFER_ASSERT( + inOptions->getValueArray(OPTION_NVDS_SREAM_IDS, streamIds) == NVDSINFER_SUCCESS); + INFER_ASSERT(!streamIds.empty()); + uint32_t batchSize = streamIds.size(); + + // add output tensors into map + std::unordered_map tensors; + + for (uint32_t iTensor = 0; iTensor < outputs->getSize(); ++iTensor) { + const dsis::IBatchBuffer* outTensor = outputs->getBuffer(iTensor); + INFER_ASSERT(outTensor); + auto desc = outTensor->getBufDesc(); + LOG_DEBUG("out tensor: %s, desc: %s \n", CSTR(desc.name), strOfBufDesc(desc).c_str()); + tensors.emplace(desc.name, outTensor); + } + + auto outputBuf = tensors["INFERENCE_COUNT"]; + INFER_ASSERT(outputBuf); + auto outDesc = outputBuf->getBufDesc(); + INFER_ASSERT(outDesc.dims.numDims == 2 && outDesc.dims.d[1] == 1); + INFER_ASSERT(outDesc.dims.d[0] == (int32_t)batchSize); + + /* Read the inference count output and print using debug logs. */ + int32_t* outInferenceCounts = (int32_t*)outputBuf->getBufPtr(0); + for (int idx = 0; idx < outDesc.dims.d[0]; ++idx) { + LOG_DEBUG("Inference count = %d for batch index %d\n", outInferenceCounts[idx], idx); + (void)outInferenceCounts; // avoid warning + } + + /* Parse the classifier outputs. */ + std::vector classTensorOutput; + std::vector> labels; + + classTensorOutput.push_back(tensors["VEHICLE_MAKE"]); + classTensorOutput.push_back(tensors["VEHICLE_TYPE"]); + + labels.push_back(kVehicleMakeLabels); + labels.push_back(kVehicleTypeLabels); + + /* Get the number of attributes supported by the classifier. */ + unsigned int numAttributes = classTensorOutput.size(); + /* Iterate through all the output coverage layers of the classifier. */ + for (unsigned int l = 0; l < numAttributes; l++) { + const dsis::IBatchBuffer* outputBuf = classTensorOutput[l]; + INFER_ASSERT(outputBuf); + auto outDesc = outputBuf->getBufDesc(); + // Support both 2D [batch, classes] and 4D [batch, classes, 1, 1] tensor formats + LOG_DEBUG("Classifier output %u: name=%s, numDims=%d, dims=[%d, %d, %d, %d]\n", + l, CSTR(outDesc.name), outDesc.dims.numDims, + outDesc.dims.d[0], outDesc.dims.d[1], + outDesc.dims.numDims > 2 ? outDesc.dims.d[2] : 0, + outDesc.dims.numDims > 3 ? outDesc.dims.d[3] : 0); + + INFER_ASSERT(outDesc.dims.numDims == 2 || outDesc.dims.numDims == 4); + + int numClasses = outDesc.dims.d[1]; + INFER_ASSERT(numClasses == (int)labels[l].size()); + LOG_DEBUG("Verified: numClasses=%d matches labels[%u].size()=%zu\n", + numClasses, l, labels[l].size()); + INFER_ASSERT(outDesc.dims.d[0] == (int32_t)batchSize); + } + + for (unsigned int idx = 0; idx < batchSize; ++idx) { + std::string attrString; + std::vector attributes; + + for (unsigned int l = 0; l < numAttributes; l++) { + const dsis::IBatchBuffer* outputBuf = classTensorOutput[l]; + auto outDesc = outputBuf->getBufDesc(); + + // Calculate numClasses and pointer offset based on tensor dimensions + unsigned int numClasses = outDesc.dims.d[1]; + int stridePerBatch = numClasses; + + // For 4D tensors [batch, classes, h, w], stride is classes * h * w + if (outDesc.dims.numDims == 4) { + stridePerBatch = outDesc.dims.d[1] * outDesc.dims.d[2] * outDesc.dims.d[3]; + } + + float* outPtr = (float*)outputBuf->getBufPtr(0) + idx * stridePerBatch; + float maxProbability = 0; + bool attrFound = false; + NvDsInferAttribute attr; + + /* Iterate through all the probabilities that the object belongs to + * each class. Find the maximum probability and the corresponding class + * which meets the minimum threshold. */ + for (unsigned int c = 0; c < numClasses; c++) { + float probability = outPtr[c]; + if (probability > kClassifierThreshold && + probability > maxProbability) { + maxProbability = probability; + attrFound = true; + attr.attributeIndex = l; + attr.attributeValue = c; + attr.attributeConfidence = probability; + } + } + if (attrFound) { + if (labels.size() > attr.attributeIndex && + attr.attributeValue < labels[attr.attributeIndex].size()) + attr.attributeLabel = + strdup(labels[attr.attributeIndex][attr.attributeValue].c_str()); + else + attr.attributeLabel = nullptr; + attributes.push_back(attr); + if (attr.attributeLabel) + attrString.append(attr.attributeLabel).append(" "); + } + } + + InferClassificationOutput output; + + for (auto& attr : attributes) { + InferAttribute safeAttr; + static_cast(safeAttr) = attr; + safeAttr.safeAttributeLabel = safeStr(attr.attributeLabel); + safeAttr.attributeLabel = (char *) safeAttr.safeAttributeLabel.c_str(); + output.attributes.emplace_back(safeAttr); + free(attr.attributeLabel); + } + + INFER_ASSERT(attachClassificationMeta(inOptions, output, idx) + == NVDSINFER_SUCCESS); + + } + + return NVDSINFER_SUCCESS; + } + + /** override function + * Receiving errors if anything wrong inside lowlevel lib + */ + void notifyError(NvDsInferStatus s) override + { + std::unique_lock locker(_streamMutex); + _streamFeedback.clear(); + } + +private: + /** function for loop processing only. not requried for fasterRCNN + */ + NvDsInferStatus feedbackStreamInput( + const dsis::IBatchArray* outputs, const dsis::IOptions* inOptions); + + /** + * attach bounding boxes into NvDsBatchMeta and NvDsFrameMeta + */ + NvDsInferStatus attachClassificationMeta( + const dsis::IOptions* inOptions, InferClassificationOutput& objInfo, + uint32_t batchIdx); +}; + +/** Implementation to create a custom processor for DeepStream Triton + * plugin (nvinferserver) to do custom extra input preprocess and custom + * postprocess on triton based models. + */ +extern "C" { +dsis::IInferCustomProcessor* +CreateInferServerCustomProcess(const char* config, uint32_t configLen) +{ + return new NvInferServerCustomProcess(); +} +} + +/** + * Attach classification results into NvDsObjectMeta + */ +NvDsInferStatus +NvInferServerCustomProcess::attachClassificationMeta( + const dsis::IOptions* inOptions, InferClassificationOutput& objInfo, + uint32_t batchIdx) +{ + INFER_ASSERT(inOptions); + GstBuffer* gstBuf = nullptr; + NvDsBatchMeta* batchMeta = nullptr; + std::vector objectMetaList; + NvBufSurface* bufSurf = nullptr; + std::vector surfParamsList; + int64_t unique_id = 0; + + // get GstBuffer + if (inOptions->hasValue(OPTION_NVDS_GST_BUFFER)) { + INFER_ASSERT(inOptions->getObj(OPTION_NVDS_GST_BUFFER, gstBuf) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(gstBuf); + + // get NvBufSurface + if (inOptions->hasValue(OPTION_NVDS_BUF_SURFACE)) { + INFER_ASSERT(inOptions->getObj(OPTION_NVDS_BUF_SURFACE, bufSurf) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(bufSurf); + + // get NvDsBatchMeta + if (inOptions->hasValue(OPTION_NVDS_BATCH_META)) { + INFER_ASSERT(inOptions->getObj(OPTION_NVDS_BATCH_META, batchMeta) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(batchMeta); + + // get all object meta list into vector for secondary classifier + if (inOptions->hasValue(OPTION_NVDS_OBJ_META_LIST)) { + INFER_ASSERT( + inOptions->getValueArray(OPTION_NVDS_OBJ_META_LIST, objectMetaList) == + NVDSINFER_SUCCESS); + } + INFER_ASSERT(batchIdx < objectMetaList.size()); // batchsize + + // get unique_id + if (inOptions->hasValue(OPTION_NVDS_UNIQUE_ID)) { + INFER_ASSERT(inOptions->getInt(OPTION_NVDS_UNIQUE_ID, unique_id) == NVDSINFER_SUCCESS); + } + + // get all surface params list into vector + if (inOptions->hasValue(OPTION_NVDS_BUF_SURFACE_PARAMS_LIST)) { + INFER_ASSERT( + inOptions->getValueArray(OPTION_NVDS_BUF_SURFACE_PARAMS_LIST, surfParamsList) == + NVDSINFER_SUCCESS); + } + INFER_ASSERT(batchIdx < surfParamsList.size()); // batchsize + + auto objMeta = objectMetaList[batchIdx]; + std::string string_label = objInfo.label; + + /* Fill the attribute info structure for the object. */ + guint numAttrs = objInfo.attributes.size(); + + nvds_acquire_meta_lock(batchMeta); + + NvDsClassifierMeta* classifier_meta = + nvds_acquire_classifier_meta_from_pool(batchMeta); + + classifier_meta->unique_component_id = unique_id; + + for (unsigned int i = 0; i < numAttrs; i++) { + NvDsLabelInfo* label_info = + nvds_acquire_label_info_meta_from_pool(batchMeta); + const InferAttribute& attr = objInfo.attributes[i]; + label_info->label_id = attr.attributeIndex; + label_info->result_class_id = attr.attributeValue; + label_info->result_prob = attr.attributeConfidence; + if (!attr.safeAttributeLabel.empty()) { + g_strlcpy( + label_info->result_label, attr.safeAttributeLabel.c_str(), + MAX_LABEL_SIZE); + if (objInfo.label.length() == 0) + string_label.append(attr.safeAttributeLabel).append(" "); + } + + nvds_add_label_info_meta_to_classifier(classifier_meta, label_info); + } + + if (string_label.length() > 0 && objMeta) { + gchar* temp = objMeta->text_params.display_text; + objMeta->text_params.display_text = + g_strconcat(temp, " ", string_label.c_str(), nullptr); + g_free(temp); + } + + nvds_add_classifier_meta_to_object(objMeta, classifier_meta); + nvds_release_meta_lock(batchMeta); + + return NVDSINFER_SUCCESS; +} diff --git a/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/deepstream_triton_custom_cpp_backend/1/placeholder.txt b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/deepstream_triton_custom_cpp_backend/1/placeholder.txt new file mode 100644 index 00000000..fd2c27e6 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/deepstream_triton_custom_cpp_backend/1/placeholder.txt @@ -0,0 +1 @@ +Place holder for DeepStream Triton custom C++ backend model version 1. diff --git a/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/deepstream_triton_custom_cpp_backend/config.pbtxt b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/deepstream_triton_custom_cpp_backend/config.pbtxt new file mode 100644 index 00000000..7155f2a3 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/deepstream_triton_custom_cpp_backend/config.pbtxt @@ -0,0 +1,47 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: MIT +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +################################################################################ + + +backend: "recommended" +max_batch_size: 16 +dynamic_batching { +} +input [ + { + name: "INPUT" + data_type: TYPE_INT32 + dims: [1] + } +] +output [ + { + name: "OUTPUT" + data_type: TYPE_INT32 + dims: [1] + } +] +instance_group [ + { + kind: KIND_CPU + } +] diff --git a/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/1/placeholder.txt b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/1/placeholder.txt new file mode 100644 index 00000000..f6ab2ee5 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/1/placeholder.txt @@ -0,0 +1 @@ +Place holder for Triton Ensemble model version 1. diff --git a/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/config.pbtxt b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/config.pbtxt new file mode 100644 index 00000000..48959ee8 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/config.pbtxt @@ -0,0 +1,97 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: MIT +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +################################################################################ + +name: "triton_custom_backend_ensemble" +platform: "ensemble" +max_batch_size: 16 +input [ + { + name: "OBJECT" + data_type: TYPE_FP32 + format: FORMAT_NCHW + dims: [3, 224, 224] + }, + { + name: "STREAM_ID" + data_type: TYPE_INT32 + dims: [1] + } +] +output [ + { + name: "VEHICLE_MAKE" + data_type: TYPE_FP32 + dims: [20] + }, + { + name: "VEHICLE_TYPE" + data_type: TYPE_FP32 + dims: [6] + }, + { + name: "INFERENCE_COUNT" + data_type: TYPE_INT32 + dims: [1] + } + +] +ensemble_scheduling { + step [ + { + model_name: "deepstream_triton_custom_cpp_backend" + model_version: 1 + input_map { + key: "INPUT" + value: "STREAM_ID" + } + output_map { + key: "OUTPUT" + value: "INFERENCE_COUNT" + } + }, + { + model_name: "Secondary_VehicleMake" + model_version: 1 + input_map { + key: "input_1:0" + value: "OBJECT" + } + output_map { + key: "predictions/Softmax:0" + value: "VEHICLE_MAKE" + } + }, + { + model_name: "Secondary_VehicleTypes" + model_version: 1 + input_map { + key: "input_1:0" + value: "OBJECT" + } + output_map { + key: "predictions/Softmax:0" + value: "VEHICLE_TYPE" + } + } + ] +} diff --git a/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/labels.txt b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/labels.txt new file mode 100644 index 00000000..8308ab75 --- /dev/null +++ b/src/apps/sample_apps/TritonBackendEnsemble/triton_model_repo/triton_custom_backend_ensemble/labels.txt @@ -0,0 +1,3 @@ +black;blue;brown;gold;green;grey;maroon;orange;red;silver;white;yellow +acura;audi;bmw;chevrolet;chrysler;dodge;ford;gmc;honda;hyundai;infiniti;jeep;kia;lexus;mazda;mercedes;nissan;subaru;toyota;volkswagen +coupe;largevehicle;sedan;suv;truck;van diff --git a/src/apps/sample_apps/TritonOnnxYolo/Makefile b/src/apps/sample_apps/TritonOnnxYolo/Makefile new file mode 100644 index 00000000..6f4b2916 --- /dev/null +++ b/src/apps/sample_apps/TritonOnnxYolo/Makefile @@ -0,0 +1,20 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +################################################################################ + +# Delegates to the nvdsinferserver custom-process library so the mono-repo +# build.sh sample_apps loop picks this sample up. + +SUBDIRS := nvdsinferserver_custom_impl_yolo + +.PHONY: all clean $(SUBDIRS) + +all: $(SUBDIRS) + +$(SUBDIRS): + $(MAKE) -C $@ + +clean: + $(MAKE) -C nvdsinferserver_custom_impl_yolo clean diff --git a/src/apps/sample_apps/TritonOnnxYolo/README b/src/apps/sample_apps/TritonOnnxYolo/README new file mode 100644 index 00000000..4665ec59 --- /dev/null +++ b/src/apps/sample_apps/TritonOnnxYolo/README @@ -0,0 +1,105 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2022-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +# +################################################################################ + +This sample shows +- using DS-Triton to run models with dynamic-sized output tensors. +- implmenting DS-Triton(nvdsinferserver) custom-lib to run ONNX YoloV3 models with + multi-input tensors and how to postprocess mixed-batch tensor data and attach them + into nvds metadata. + +=============================================================================== +1. Sample Contents: +=============================================================================== +Sample contents for DeepStream Triton: +- deepstream_app_triton_config_yolov3.txt - DeepStream triton reference app + configuration for ONNX YoloV3 model as the primary detector. +- config_triton_inferserver_primary_yolov3_onnx_custom.txt, an custom processing config + file for Gst-nvinferserver plugin. It configured with `output_mem_type: MEMORY_TYPE_CPU` + and `custom_process_funcion: "CreateInferServerCustomProcess"` for custom-lib to parsing + ONNX YoloV3 output tensors manually. +- nvdsinferserver_custom_impl_yolo/nvdsinferserver_custom_process_yolo.cpp - Example + how to create an customized nvdsinferserver::IInferCustomProcessor instance to do extra + input processing, ouptut tensor parsing and detection boundingbox attaching into nvds + metadata. +- triton_model_repo/yolov3-10_onnx/config.pbtxt - Triton config file for FasterRCNN model +- triton_model_repo/yolov3-10_onnx/1/yolov3-10.onnx - Users need to follow pre-requisites + to download the model manually. + +=============================================================================== +2. Prerequisites: +=============================================================================== +Pre-requisites: +- For X86 platform, please follow instructions from + https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream + to download deepstream-triton image. + $ docker pull nvcr.io/nvidia/deepstream:[version]-triton + [version] means deepstream version numbers e.g. 9.0.0 + $ xhost + + Set correct $DISPLAY variables on host, then run deepstream-triton docker container. + $ docker run --gpus '"'device=0'"' -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY --net=host nvcr.io/nvidia/deepstream:[version]-triton + Note: Set correct GPU id in `device=$id`. + +- For Jetson platform, please install Triton dependencies. + $ cd /opt/nvidia/deepstream/deepstream/samples + $ sudo ./triton_backend_setup.sh + $ rm -rf ~/.cache/gstreamer-1.0/ + +- Back to current directory and download ONNX yolo-v3 model file. + $ mkdir -p triton_model_repo/yolov3-10_onnx/1/ + $ wget --no-check-certificate \ + https://github.com/onnx/models/raw/main/validated/vision/object_detection_segmentation/yolov3/model/yolov3-10.onnx \ + -O triton_model_repo/yolov3-10_onnx/1/yolov3-10.onnx +NOTE: Run with "sudo -E" or root if there is file permission issues. + +=============================================================================== +3. To Compile: +=============================================================================== +Compile the custom library: + + $ Set CUDA_VER in the MakeFile as per platform. + For x86, CUDA_VER=13.1 + For jetson & SBSA, CUDA_VER=13.0 + + $ make -C nvdsinferserver_custom_impl_yolo + +NOTE: To compile the sources, run make with "sudo -E" or root permission. + +=============================================================================== +4. Usage: +=============================================================================== +Run the ONNX sample with DeepStream Triton(Gst-nvinferserver) Native CAPI: + Run cmdline: + $ deepstream-app -c deepstream_app_triton_config_yolov3.txt + + NOTE: Regarding dynamic-sized output tensors, users could update + `max_buffer_bytes` to preserve a large memory size for each output tensors. e.g. + outputs { + name: "yolonms_layer_1/concat_2:0" + max_buffer_bytes: 2048 + } + Even this value is not configured or the value is smaller than actual required + size, DS-Triton could still auto-grow the memory size during runtime which might + affect performance a bit. + +Run the ONNX sample with DeepStream Triton gRPC remote inference: + Follow instructions in `samples/configs/deepstream-app-triton-grpc/README` to + start tritonserver by + $ tritonserver \ + --model-repository=$(pwd)/triton_model_repo + + Update config_triton_inferserver_primary_yolov3_onnx_custom.txt, + disable 'model_repo{}' block and enable 'grpc{}' with correct url. + + Then run gRPC test: + $ deepstream-app -c deepstream_app_triton_config_yolov3.txt diff --git a/src/apps/sample_apps/TritonOnnxYolo/config_triton_inferserver_primary_yolov3_onnx_custom.txt b/src/apps/sample_apps/TritonOnnxYolo/config_triton_inferserver_primary_yolov3_onnx_custom.txt new file mode 100644 index 00000000..75c0ad94 --- /dev/null +++ b/src/apps/sample_apps/TritonOnnxYolo/config_triton_inferserver_primary_yolov3_onnx_custom.txt @@ -0,0 +1,89 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +################################################################################ + +infer_config { + unique_id: 1 + gpu_ids: [0] + max_batch_size: 4 + backend { + triton { + model_name: "yolov3-10_onnx" + version: -1 + + # model_repo block is enabled for Triton Server CAPI inference. + model_repo { + root: "./triton_model_repo" + log_level: 2 + strict_model_config: true + # Triton runtime would reserve 64MB pinned memory + pinned_memory_pool_byte_size: 67108864 + # Triton runtim would reserve 64MB CUDA device memory on GPU 0 + cuda_device_memory { device: 0, memory_pool_byte_size: 67108864 } + } + + # To run Triton client remote inference, users need enable 'grpc' block, + # and disalbe 'model_repo' block. + # Setup Tritonserver, goto current directory, run + # tritonserver --model-repository=triton_model_repo + #grpc { + # url: "localhost:8001" + #} + } + output_mem_type: MEMORY_TYPE_CPU + outputs [ + { + name: "yolonms_layer_1/ExpandDims_1:0" + }, + { + name: "yolonms_layer_1/ExpandDims_3:0" + }, + { + name: "yolonms_layer_1/concat_2:0" + max_buffer_bytes: 2048 + } + ] + } + + preprocess { + network_format: IMAGE_FORMAT_RGB + tensor_order: TENSOR_ORDER_LINEAR + maintain_aspect_ratio: 1 + symmetric_padding: 1 + frame_scaling_hw: FRAME_SCALING_HW_DEFAULT + frame_scaling_filter: 1 + normalize { + scale_factor: 0.00392157 + channel_offsets: [0, 0, 0] + } + } + + postprocess { + other { } + } + + extra { + custom_process_funcion: "CreateInferServerCustomProcess" + } + + custom_lib { + path: "nvdsinferserver_custom_impl_yolo/libnvdstriton_custom_impl_yolo.so" + } +} + +input_control { + process_mode: PROCESS_MODE_FULL_FRAME + interval: 0 +} + +output_control { + output_tensor_meta: false +} diff --git a/src/apps/sample_apps/TritonOnnxYolo/deepstream_app_triton_config_yolov3.txt b/src/apps/sample_apps/TritonOnnxYolo/deepstream_app_triton_config_yolov3.txt new file mode 100644 index 00000000..e10f2a59 --- /dev/null +++ b/src/apps/sample_apps/TritonOnnxYolo/deepstream_app_triton_config_yolov3.txt @@ -0,0 +1,79 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +################################################################################ + +[application] +enable-perf-measurement=1 +perf-measurement-interval-sec=1 +gie-kitti-output-dir=streamscl + +[tiled-display] +enable=0 +rows=1 +columns=1 +width=1280 +height=720 +gpu-id=0 +nvbuf-memory-type=0 + +[source0] +enable=1 +#Type - 1=CameraV4L2 2=URI 3=MultiURI +type=3 +num-sources=1 +uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.mp4 +gpu-id=0 +cudadec-memtype=0 + +[streammux] +gpu-id=0 +batch-size=1 +batched-push-timeout=-1 +## Set muxer output width and height +width=1920 +height=1080 +nvbuf-memory-type=0 + +[sink0] +enable=1 +#Type - 1=FakeSink 2=EglSink 3=File +type=2 +sync=0 +source-id=0 +gpu-id=0 + +[osd] +enable=1 +gpu-id=0 +border-width=3 +text-size=15 +text-color=1;1;1;1; +text-bg-color=0.3;0.3;0.3;1 +font=Serif +show-clock=0 +clock-x-offset=800 +clock-y-offset=820 +clock-text-size=12 +clock-color=1;0;0;0 +nvbuf-memory-type=0 + +[primary-gie] +enable=1 +gpu-id=0 +batch-size=1 +gie-unique-id=1 +nvbuf-memory-type=0 + +# plugin-type +#(0): nvinfer - Default inference plugin based on Tensorrt +#(1): nvinferserver - inference plugin based on Tensorrt-Inference-Server +plugin-type=1 +config-file=config_triton_inferserver_primary_yolov3_onnx_custom.txt diff --git a/src/apps/sample_apps/TritonOnnxYolo/nvdsinferserver_custom_impl_yolo/Makefile b/src/apps/sample_apps/TritonOnnxYolo/nvdsinferserver_custom_impl_yolo/Makefile new file mode 100644 index 00000000..257a4551 --- /dev/null +++ b/src/apps/sample_apps/TritonOnnxYolo/nvdsinferserver_custom_impl_yolo/Makefile @@ -0,0 +1,45 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +################################################################################ + +CUDA_VER?= +ifeq ($(CUDA_VER),) + $(error "CUDA_VER is not set") +endif + +CC:= g++ + +CFLAGS:= -Wall -std=c++14 -shared -fPIC -Wno-error=deprecated-declarations +CFLAGS+= -I../../../../../includes \ + -I /usr/local/cuda-$(CUDA_VER)/include \ + -I../../../../../includes/nvdsinferserver \ + -I/opt/nvidia/deepstream/deepstream/sources/includes \ + -I/opt/nvidia/deepstream/deepstream/sources/includes/nvdsinferserver + +LIBS:= \ + -L/opt/nvidia/deepstream/deepstream/lib/ -lnvds_meta +LFLAGS:= -Wl,--start-group $(LIBS) -Wl,--end-group + +SRCFILES:= nvdsinferserver_custom_process_yolo.cpp + +TARGET_LIB:= libnvdstriton_custom_impl_yolo.so + +PKGS:= glib-2.0 +CFLAGS+=$(shell pkg-config --cflags $(PKGS)) +LIBS+=$(shell pkg-config --libs $(PKGS)) + +all: $(TARGET_LIB) + +$(TARGET_LIB) : $(SRCFILES) + $(CC) -o $@ $^ $(CFLAGS) $(LFLAGS) + +clean: + rm -rf $(TARGET_LIB) diff --git a/src/apps/sample_apps/TritonOnnxYolo/nvdsinferserver_custom_impl_yolo/nvdsinferserver_custom_process_yolo.cpp b/src/apps/sample_apps/TritonOnnxYolo/nvdsinferserver_custom_impl_yolo/nvdsinferserver_custom_process_yolo.cpp new file mode 100644 index 00000000..874508a6 --- /dev/null +++ b/src/apps/sample_apps/TritonOnnxYolo/nvdsinferserver_custom_impl_yolo/nvdsinferserver_custom_process_yolo.cpp @@ -0,0 +1,506 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2022-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: LicenseRef-NvidiaProprietary + * + * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual + * property and proprietary rights in and to this material, related + * documentation and any modifications thereto. Any use, reproduction, + * disclosure or distribution of this material and related documentation + * without an express license agreement from NVIDIA CORPORATION or + * its affiliates is strictly prohibited. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "infer_custom_process.h" +#include "nvbufsurface.h" +#include "nvdsmeta.h" + +typedef struct _GstBuffer GstBuffer; + +/** This is a example how DeepStream Triton plugin(gst-nvinferserver) do + * custom extra input preprocess and custom postprocess on triton based models. + */ + +// enable debug log +#define ENABLE_DEBUG 0 + +namespace dsis = nvdsinferserver; + +#if ENABLE_DEBUG +#define LOG_DEBUG(fmt, ...) fprintf(stdout, "%s:%d" fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__) +#else +#define LOG_DEBUG(fmt, ...) +#endif + +#define LOG_ERROR(fmt, ...) fprintf(stderr, "%s:%d" fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__) + +#ifndef INFER_ASSERT +#define INFER_ASSERT(expr) \ + do { \ + if (!(expr)) { \ + fprintf(stderr, "%s:%d ASSERT(%s) \n", __FILE__, __LINE__, #expr); \ + std::abort(); \ + } \ + } while (0) +#endif + +#define CSTR(str) (str).empty() ? "" : (str).c_str() + +// constant values definition +static const std::vector kClassLabels = { + "person", "bicycle", "car", "motorbike", + "aeroplane", "bus", "train", "truck", + "boat", "traffic light", "fire hydrant", "stop sign", + "parking meter", "bench", "bird", "cat", + "dog", "horse", "sheep", "cow", + "elephant", "bear", "zebra", "giraffe", + "backpack", "umbrella", "handbag", "tie", + "suitcase", "frisbee", "skis", "snowboard", + "sports ball", "kite", "baseball bat", "baseball glove", + "skateboard", "surfboard", "tennis racket", "bottle", + "wine glass", "cup", "fork", "knife", + "spoon", "bowl", "banana", "apple", + "sandwich", "orange", "broccoli", "carrot", + "hot dog", "pizza", "donut", "cake", + "chair", "sofa", "pottedplant", "bed", + "diningtable", "toilet", "tvmonitor", "laptop", + "mouse", "remote", "keyboard", "cell phone", + "microwave", "oven", "toaster", "sink", + "refrigerator", "book", "clock", "vase", + "scissors", "teddy bear", "hair drier", "toothbrush", +}; + +/** Define a function for custom processor for DeepStream Triton plugin(nvinferserver) + * do custom extra input preprocess and custom postprocess on triton based models. + * The sysmbol is loaded through + * infer_config { + * custom_lib { path: "path/to/custom_impl_process.so" } + * extra { + * custom_process_funcion: "CreateInferServerCustomProcess" + * }} + */ +extern "C" dsis::IInferCustomProcessor* CreateInferServerCustomProcess( + const char* config, uint32_t configLen); + +namespace { +using namespace dsis; + +std::string +memType2Str(InferMemType t) +{ + switch (t) { + case InferMemType::kGpuCuda: + return "kGpuCuda"; + case InferMemType::kCpu: + return "kCpu"; + case InferMemType::kCpuCuda: + return "kCpuPinned"; + default: + return "Unknown"; + } +} + +std::string +dataType2Str(dsis::InferDataType t) +{ + switch (t) { + case InferDataType::kFp32: + return "kFp32"; + case InferDataType::kFp16: + return "kFp16"; + case InferDataType::kInt8: + return "kInt8"; + case InferDataType::kInt32: + return "kInt32"; + case InferDataType::kInt16: + return "kInt16"; + case InferDataType::kUint8: + return "kUint8"; + case InferDataType::kUint16: + return "kUint16"; + case InferDataType::kUint32: + return "kUint32"; + case InferDataType::kFp64: + return "kFp64"; + case InferDataType::kInt64: + return "kInt64"; + case InferDataType::kUint64: + return "kUint64"; + case InferDataType::kString: + return "kString"; + case InferDataType::kBool: + return "kBool"; + default: + return "Unknown"; + } +} + +// return buffer description string +std::string +strOfBufDesc(const dsis::InferBufferDescription& desc) +{ + std::stringstream ss; + ss << "*" << desc.name << "*, shape: "; + for (uint32_t i = 0; i < desc.dims.numDims; ++i) { + if (i != 0) { + ss << "x"; + } else { + ss << "["; + } + ss << desc.dims.d[i]; + if (i == desc.dims.numDims - 1) { + ss << "]"; + } + } + ss << ", dataType:" << dataType2Str(desc.dataType); + ss << ", memType:" << memType2Str(desc.memType); + return ss.str(); +} + +} // namespace + +/** Example of a Custom process instance for deepstream-triton(gst-nvinferserver) plugin + * It is derived from nvdsinferserver::IInferCustomProcessor + * If should be loaded through + * config_triton_inferserver_primary_fasterRCNN.txt: + * infer_config { + * custom_lib { path: "path/to/custom_impl_process.so" } + * extra { + * custom_process_funcion: "CreateInferServerCustomProcess" + * } + * } + */ +class NvInferServerCustomProcess : public dsis::IInferCustomProcessor { +private: + std::map> _streamFeedback; + std::mutex _streamMutex; + +public: + ~NvInferServerCustomProcess() override = default; + /** override function + * Specifies supported extraInputs memtype in extraInputProcess() + */ + void supportInputMemType(dsis::InferMemType& type) override { type = dsis::InferMemType::kCpu; } + + /** override function + * check whether custom loop process needed. + * If return True, extraInputProcess() and inferenceDone() runs in order per stream_ids + * This is usually for LSTM loop purpose. FasterRCNN does not need it. + * The code for requireInferLoop() conditions just sample when user has + * a LSTM-like Loop model and requires loop custom processing. + * */ + bool requireInferLoop() const override { return false; } + + /** + * override function + * Do custom processing on extra inputs. + * @primaryInput is already preprocessed. DO NOT update it again. + * @extraInputs, do custom processing and fill all data according the tensor shape + * @options, it has most of the common Deepstream metadata along with primary data. + * e.g. NvDsBatchMeta, NvDsObjectMeta, NvDsFrameMeta, stream ids... + * see infer_ioptions.h to see all the potential key name and structures + * in the key-value table. + */ + NvDsInferStatus extraInputProcess( + const std::vector& + primaryInputs, // primary tensor(image) has been processed + std::vector& extraInputs, const dsis::IOptions* options) override + { + INFER_ASSERT(primaryInputs.size() > 0); + INFER_ASSERT(extraInputs.size() == 1); + // primary input tensor: input_1 [batch, channel, height, width] + dsis::InferBufferDescription input0Desc = primaryInputs[0]->getBufDesc(); + // extra input tensor: image_shape [batch, 2] + dsis::InferBufferDescription extra1Desc = extraInputs[0]->getBufDesc(); + INFER_ASSERT(extra1Desc.dataType == dsis::InferDataType::kFp32); + INFER_ASSERT(extra1Desc.elementSize == sizeof(float)); // bytes per element + + INFER_ASSERT(!strOfBufDesc(input0Desc).empty()); + LOG_DEBUG("extraInputProcess: primary input %s", strOfBufDesc(input0Desc).c_str()); + LOG_DEBUG("extraInputProcess: extra input %s", strOfBufDesc(extra1Desc).c_str()); + + // batch size must be get from primary input tensor. + // extra inputs 'image_shape' does not have a batch size in this specific model + int batchSize = input0Desc.dims.d[0]; + INFER_ASSERT(extra1Desc.dims.numDims == 2 && extra1Desc.dims.d[0] == batchSize); + INFER_ASSERT(batchSize >= 1); + if (!options) { + LOG_ERROR("custom process does not receive IOptions"); + return NVDSINFER_CUSTOM_LIB_FAILED; + } + + NvDsBatchMeta* batchMeta = nullptr; + std::vector frameMetaList; + NvBufSurface* bufSurf = nullptr; + std::vector surfParamsList; + std::vector streamIds; + int64_t unique_id = 0; + INFER_ASSERT(options->getValueArray(OPTION_NVDS_SREAM_IDS, streamIds) == NVDSINFER_SUCCESS); + INFER_ASSERT(streamIds.size() == (uint32_t)batchSize); + + // get NvBufSurface + if (options->hasValue(OPTION_NVDS_BUF_SURFACE)) { + INFER_ASSERT(options->getObj(OPTION_NVDS_BUF_SURFACE, bufSurf) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(bufSurf); + + // get NvDsBatchMeta + if (options->hasValue(OPTION_NVDS_BATCH_META)) { + INFER_ASSERT(options->getObj(OPTION_NVDS_BATCH_META, batchMeta) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(batchMeta); + + // get all frame meta list into vector + if (options->hasValue(OPTION_NVDS_FRAME_META_LIST)) { + INFER_ASSERT( + options->getValueArray(OPTION_NVDS_FRAME_META_LIST, frameMetaList) == + NVDSINFER_SUCCESS); + } + + // get unique_id + if (options->hasValue(OPTION_NVDS_UNIQUE_ID)) { + INFER_ASSERT(options->getInt(OPTION_NVDS_UNIQUE_ID, unique_id) == NVDSINFER_SUCCESS); + } + + // get all surface params list into vector + if (options->hasValue(OPTION_NVDS_BUF_SURFACE_PARAMS_LIST)) { + INFER_ASSERT( + options->getValueArray(OPTION_NVDS_BUF_SURFACE_PARAMS_LIST, surfParamsList) == + NVDSINFER_SUCCESS); + } + + // fill extra input tensor "image_shape[-1,2]" + float* image_shape = (float*)extraInputs[0]->getBufPtr(0); + + for (int iBatch = 0; iBatch < batchSize; ++iBatch) { + image_shape[iBatch * 2 + 1] = (float)surfParamsList[iBatch]->width; + image_shape[iBatch * 2] = (float)surfParamsList[iBatch]->height; + } + return NVDSINFER_SUCCESS; + } + + /** override function + * Custom processing for inferenced output tensors. + * output memory types is controlled by gst-nvinferserver config file + * config_triton_inferserver_primary_fasterRCNN.txt: + * infer_config { + * backend { output_mem_type: MEMORY_TYPE_CPU } + * } + * User can even attach parsed metadata into GstBuffer from this function + */ + NvDsInferStatus inferenceDone( + const dsis::IBatchArray* outputs, const dsis::IOptions* inOptions) override + { + std::vector streamIds; + INFER_ASSERT( + inOptions->getValueArray(OPTION_NVDS_SREAM_IDS, streamIds) == NVDSINFER_SUCCESS); + INFER_ASSERT(!streamIds.empty()); + uint32_t batchSize = streamIds.size(); + std::vector> parsedBboxes(batchSize); + + // add 3 output tensors into map + std::unordered_map tensors; + for (uint32_t iTensor = 0; iTensor < outputs->getSize(); ++iTensor) { + const dsis::IBatchBuffer* outTensor = outputs->getBuffer(iTensor); + INFER_ASSERT(outTensor); + auto desc = outTensor->getBufDesc(); + LOG_DEBUG("out tensor: %s, desc: %s \n", CSTR(desc.name), strOfBufDesc(desc).c_str()); + tensors.emplace(desc.name, outTensor); + } + + // indices dim format is [total, 3], each row represents [batch_index, class_index, + // box_index] + auto indices = tensors["yolonms_layer_1/concat_2:0"]; + // boxes dim format is [batch, n_candidates, 4] + auto boxes = tensors["yolonms_layer_1/ExpandDims_1:0"]; + // scores dim format is [1, n_classes, n_candidates] + auto scores = tensors["yolonms_layer_1/ExpandDims_3:0"]; + INFER_ASSERT(indices && boxes && scores); + auto idxDesc = indices->getBufDesc(); + auto boxDesc = boxes->getBufDesc(); + auto scoreDesc = scores->getBufDesc(); + INFER_ASSERT(idxDesc.dims.numDims == 2 && idxDesc.dims.d[1] == 3); + INFER_ASSERT(boxDesc.dims.numDims == 3 && boxDesc.dims.d[2] == 4); + INFER_ASSERT( + scoreDesc.dims.numDims == 3 && scoreDesc.dims.d[1] == (int)kClassLabels.size()); + int32_t* indicesPtr = (int32_t*)indices->getBufPtr(0); + float* boxesPtr = (float*)boxes->getBufPtr(0); + float* scoresPtr = (float*)scores->getBufPtr(0); + for (int idx = 0; idx < idxDesc.dims.d[0]; ++idx) { + NvDsInferObjectDetectionInfo obj{}; + uint32_t batchId = (uint32_t)indicesPtr[idx * 3]; + obj.classId = (uint32_t)indicesPtr[idx * 3 + 1]; + INFER_ASSERT(obj.classId < kClassLabels.size()); + uint32_t boxIdx = indicesPtr[idx * 3 + 2]; + float* bbox = &boxesPtr[4 * boxIdx]; + obj.top = bbox[0]; + obj.left = bbox[1]; + float bottom = bbox[2]; + float right = bbox[3]; + obj.height = bottom - obj.top; + obj.width = right - obj.left; + float score = scoresPtr + [batchId * scoreDesc.dims.d[1] * scoreDesc.dims.d[2] + + obj.classId * scoreDesc.dims.d[2] + boxIdx]; + obj.detectionConfidence = score; + LOG_DEBUG( + "cid: %u, n: %u, obj [%.2f, %.2f, %.2f, %.2f], score:%.2f\n", obj.classId, batchId, + obj.top, obj.left, bottom, right, score); + parsedBboxes[batchId].emplace_back(obj); + } + + for (uint32_t iBatch = 0; iBatch < batchSize; ++iBatch) { + INFER_ASSERT(attachObjMeta(inOptions, parsedBboxes[iBatch], 0) == NVDSINFER_SUCCESS); + } + + return NVDSINFER_SUCCESS; + } + + /** override function + * Receiving errors if anything wrong inside lowlevel lib + */ + void notifyError(NvDsInferStatus s) override + { + std::unique_lock locker(_streamMutex); + _streamFeedback.clear(); + } + +private: + /** function for loop processing only. not requried for fasterRCNN + */ + NvDsInferStatus feedbackStreamInput( + const dsis::IBatchArray* outputs, const dsis::IOptions* inOptions); + + /** + * attach bounding boxes into NvDsBatchMeta and NvDsFrameMeta + */ + NvDsInferStatus attachObjMeta( + const dsis::IOptions* inOptions, const std::vector& objs, + uint32_t batchIdx); +}; + +/** Implementation to Create a custom processor for DeepStream Triton + * plugin(nvinferserver) to do custom extra input preprocess and custom + * postprocess on triton based models. + */ +extern "C" { +dsis::IInferCustomProcessor* +CreateInferServerCustomProcess(const char* config, uint32_t configLen) +{ + return new NvInferServerCustomProcess(); +} +} + +/** + * attach bounding boxes into NvDsBatchMeta and NvDsFrameMeta + */ +NvDsInferStatus +NvInferServerCustomProcess::attachObjMeta( + const dsis::IOptions* inOptions, const std::vector& detectObjs, + uint32_t batchIdx) +{ + INFER_ASSERT(inOptions); + GstBuffer* gstBuf = nullptr; + NvDsBatchMeta* batchMeta = nullptr; + std::vector frameMetaList; + NvBufSurface* bufSurf = nullptr; + std::vector surfParamsList; + int64_t unique_id = 0; + + // get GstBuffer + if (inOptions->hasValue(OPTION_NVDS_GST_BUFFER)) { + INFER_ASSERT(inOptions->getObj(OPTION_NVDS_GST_BUFFER, gstBuf) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(gstBuf); + + // get NvBufSurface + if (inOptions->hasValue(OPTION_NVDS_BUF_SURFACE)) { + INFER_ASSERT(inOptions->getObj(OPTION_NVDS_BUF_SURFACE, bufSurf) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(bufSurf); + + // get NvDsBatchMeta + if (inOptions->hasValue(OPTION_NVDS_BATCH_META)) { + INFER_ASSERT(inOptions->getObj(OPTION_NVDS_BATCH_META, batchMeta) == NVDSINFER_SUCCESS); + } + INFER_ASSERT(batchMeta); + + // get all frame meta list into vector + if (inOptions->hasValue(OPTION_NVDS_FRAME_META_LIST)) { + INFER_ASSERT( + inOptions->getValueArray(OPTION_NVDS_FRAME_META_LIST, frameMetaList) == + NVDSINFER_SUCCESS); + } + INFER_ASSERT(batchIdx < frameMetaList.size()); // batchsize + + // get unique_id + if (inOptions->hasValue(OPTION_NVDS_UNIQUE_ID)) { + INFER_ASSERT(inOptions->getInt(OPTION_NVDS_UNIQUE_ID, unique_id) == NVDSINFER_SUCCESS); + } + + // get all surface params list into vector + if (inOptions->hasValue(OPTION_NVDS_BUF_SURFACE_PARAMS_LIST)) { + INFER_ASSERT( + inOptions->getValueArray(OPTION_NVDS_BUF_SURFACE_PARAMS_LIST, surfParamsList) == + NVDSINFER_SUCCESS); + } + INFER_ASSERT(batchIdx < surfParamsList.size()); // batchsize + + // attach object's boundingbox + for (const auto& obj : detectObjs) { + NvDsObjectMeta* objMeta = nvds_acquire_obj_meta_from_pool(batchMeta); + objMeta->unique_component_id = unique_id; + objMeta->confidence = obj.detectionConfidence; + + /* This is an untracked object. Set tracking_id to -1. */ + objMeta->object_id = UNTRACKED_OBJECT_ID; + objMeta->class_id = obj.classId; + + NvOSD_RectParams& rect_params = objMeta->rect_params; + NvOSD_TextParams& text_params = objMeta->text_params; + + rect_params.left = obj.left; + rect_params.top = obj.top; + rect_params.width = obj.width; + rect_params.height = obj.height; + + /* Border of width 3. */ + rect_params.border_width = 3; + rect_params.has_bg_color = 0; + rect_params.border_color = (NvOSD_ColorParams){1, 0, 0, 1}; + + /* display_text requires heap allocated memory. */ + if (obj.classId < kClassLabels.size()) { + text_params.display_text = g_strdup(kClassLabels[obj.classId].c_str()); + strncpy(objMeta->obj_label, kClassLabels[obj.classId].c_str(), MAX_LABEL_SIZE - 1); + objMeta->obj_label[MAX_LABEL_SIZE - 1] = 0; + } + /* Display text above the left top corner of the object. */ + text_params.x_offset = rect_params.left; + text_params.y_offset = rect_params.top - 10; + /* Set black background for the text. */ + text_params.set_bg_clr = 1; + text_params.text_bg_clr = (NvOSD_ColorParams){0, 0, 0, 1}; + /* Font face, size and color. */ + text_params.font_params.font_name = (gchar*)"Serif"; + text_params.font_params.font_size = 11; + text_params.font_params.font_color = (NvOSD_ColorParams){1, 1, 1, 1}; + + nvds_acquire_meta_lock(batchMeta); + nvds_add_obj_meta_to_frame(frameMetaList[batchIdx], objMeta, NULL); + frameMetaList[batchIdx]->bInferDone = TRUE; + nvds_release_meta_lock(batchMeta); + } + + return NVDSINFER_SUCCESS; +} diff --git a/src/apps/sample_apps/TritonOnnxYolo/triton_model_repo/yolov3-10_onnx/config.pbtxt b/src/apps/sample_apps/TritonOnnxYolo/triton_model_repo/yolov3-10_onnx/config.pbtxt new file mode 100644 index 00000000..2cee3d39 --- /dev/null +++ b/src/apps/sample_apps/TritonOnnxYolo/triton_model_repo/yolov3-10_onnx/config.pbtxt @@ -0,0 +1,56 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +################################################################################ + +name: "yolov3-10_onnx" +platform: "onnxruntime_onnx" +max_batch_size: 0 +default_model_filename: "yolov3-10.onnx" + +input [ + { + name: "input_1" + data_type: TYPE_FP32 + dims: [-1, 3, 320, 320] + }, + { + name: "image_shape" + data_type: TYPE_FP32 + dims: [-1, 2] + } +] +output [ + { + name: "yolonms_layer_1/ExpandDims_1:0" + data_type: TYPE_FP32 + dims: [1, -1, 4] + }, + + { + name: "yolonms_layer_1/ExpandDims_3:0" + data_type: TYPE_FP32 + dims: [1, 80, -1] + }, + { + name: "yolonms_layer_1/concat_2:0" + data_type: TYPE_INT32 + dims: [-1, -1] + } +] + +instance_group [ + { + kind: KIND_GPU + count: 1 + gpus: 0 + } +] + diff --git a/src/utils/README.md b/src/utils/README.md index dc1528e9..d306200c 100644 --- a/src/utils/README.md +++ b/src/utils/README.md @@ -68,3 +68,15 @@ For build and installation instructions, see the repo root [BUILD.md](../../BUIL | Library | Output | Description | |---|---|---| | `ds3d` | `libnvds_3d_*.so` | DS3D utility library for 3D sensor pipelines — data loaders (LiDAR, depth camera), data filters, data bridges, and inference custom libs for 3D detection and V2X fusion. See [README](ds3d/README.md). | + +--- + +## Tooling & Model Setup + +These entries are not built libraries — they ship setup scripts and model-prep +documentation consumed alongside the DeepStream runtime. + +| Entry | Description | +|---|---| +| `nvds_logger` | `setup_nvds_logger.sh` configures `rsyslog` to capture DeepStream `DSLOG` messages to `/var/log/nvds/`. See [README](nvds_logger/README). | +| `nvmultiobjecttracker/model/tracker_ReID` | Model preparation guide (TensorRT) for deep-learning models used by the multi-object tracker: SAM2 segmentation, TAO ReidentificationNet, TAO BodyPose3DNet. See [README](nvmultiobjecttracker/model/tracker_ReID/README). | From d3b4b10f91098cae6b04c6318ef7c27de840e664 Mon Sep 17 00:00:00 2001 From: ankitat Date: Thu, 14 May 2026 14:33:27 +0530 Subject: [PATCH 4/7] docs(README): replace OSS template skeleton with DeepStream content Fills the OSS template skeleton with content from the GitLab DeepStream mono-repo README. Sections without a clear mono-repo counterpart (Performance, Releases & Roadmap, Contribution Guidelines, Governance & Maintainers, Security, Support, Community, References) are left as the template's placeholder text intentionally. Sections filled in: - Project title + value proposition - Overview: repository structure tree, components list, deprecated components subsection (folds in MR !87's deprecation notice) - Getting Started: prerequisites, clone+build command, link to BUILD.md - Requirements: supported platforms, platform-specific components, components with external prerequisites - Usage: Running Sample Apps section + Running with Triton Inference Server (Docker) section (folds in MR !87's Triton Docker docs; custom model-repo snippet stays absent per MR !88) - License: OSRB tracking note Repository-structure tree adapted to the actual GitHub-side repo (no artifacts/ or ISSUE_TEMPLATE/; only sam2-onnx-tensorrt and yolo_deepstream under tools/; service-maker/python/ subdir omitted -- Python lives under sources/apps/python/). Committed-By: ankitat's Claude Agent Codex Review: Approved: --- README.md | 415 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 309 insertions(+), 106 deletions(-) diff --git a/README.md b/README.md index 56b69ecf..fb531664 100644 --- a/README.md +++ b/README.md @@ -1,119 +1,320 @@ -# __NVIDIA_OSS__ Standard Repo Template - -This README file is from the NVIDIA_OSS standard repo template of [PLC-OSS-Template](https://github.com/NVIDIA-GitHub-Management/PLC-OSS-Template?tab=readme-ov-file). It provides a list of files in the PLC-OSS-Template and guidelines on how to use (clone and customize) them. - -**Upon completing the customization for the project repo, the repo admin should replace this README template with the project specific README file.** - -- Files (org-wide templates in the NVIDIA .github org repo; per-repo overrides allowed) in [PLC-OSS-Template](https://github.com/NVIDIA-GitHub-Management/PLC-OSS-Template?tab=readme-ov-file) - - - Root - - README.md skeleton (CTA + Quickstart + Support/Security/Governance links) - - LICENSE (Apache 2.0 by default) - - For other licenses, see the [Confluence page](https://confluence.nvidia.com/pages/viewpage.action?pageId=788418816) for other licenses - - CLA.md file (delete if not using MIT or BSD licenses) - - CODE_OF_CONDUCT.md - - SECURITY.md (vuln reporting path) - - CONTRIBUTING.md (base; repo can add specifics) - - SUPPORT.md (Support levels/channels) - - GOVERNANCE.md (baseline; repo may extend) - - CITATION.md (for projects that need citation) - - - .github/ - - ISSUE_TEMPLATE/ () - - bug.yml, feature.yml, task.yml, config.yml - - PULL_REQUEST_TEMPLATE.md () - - workflows/ - - Note: workflow-templates/ for starter workflows should live in the org-level .github repo, not per-repo - - - Repo-specific (not org-template, maintained by the team) - - CODEOWNERS (place at .github/CODEOWNERS or repo root) - - CHANGELOG.md (or RELEASE.md) - - ROADMAP.md - - MAINTAINERS.md - - NOTICE or THIRD_PARTY_NOTICES / THIRD_PARTY_LICENSES (dependency specific) - - Build/package files (CMake, pyproject, Dockerfile, etc.) - - - Recommended structure and hygiene - - docs/ - - examples/ - - tests/ - - scripts/ - - Container/dev env: Dockerfile, docker/, .devcontainer/ (optional) - - Build/package (language-specific): - - Python: pyproject.toml, setup.cfg/setup.py, requirements.txt, environment.yml - - C++: CMakeLists.txt, cmake/, vcpkg.json - - Repo hygiene: .gitignore, .gitattributes, .editorconfig, .pre-commit-config.yaml, .clang-format - - -## Usage of [PLC-OSS-Template](https://github.com/NVIDIA-GitHub-Management/PLC-OSS-Template?tab=readme-ov-file) for NEW NVIDIA OSS repos - -1. Clone the [PLC-OSS-Template](https://github.com/NVIDIA-GitHub-Management/PLC-OSS-Template?tab=readme-ov-file) -2. Find/replace all in the clone of `___PROJECT___` and `__PROJECT_NAME__` with the name of the specific project. -3. Inspect all files to make sure all replacements work and update text as needed - - -**What you can reuse immediately** -- CODE_OF_CONDUCT.md -- SECURITY.md -- CONTRIBUTING.md (base) -- .github/ISSUE_TEMPLATE/.yml (bug/feature/task + config.yml) -- .github/PULL_REQUEST_TEMPLATE.md -- Reusable workflows - -**What you must customize per repo** -- README.md: copy the skeleton and fill in product-specific details (Quickstart, Requirements, Usage, Support level, links) -- LICENSE: check file is correct, update year, consult Confluence for alternatives https://confluence.nvidia.com/pages/viewpage.action?pageId=788418816, add CLA.md only if your license/process requires it -- CODEOWNERS: replace with your GitHub team handle(s). Place at .github/CODEOWNERS (or repo root) -- MAINTAINERS.md: list maintainers names/roles, escalation path -- CHANGELOG.md (or RELEASE.md): track releases/changes -- SUPPORT.md: Update for your project -- ROADMAP.md (optional): upcoming milestones -- NOTICE / THIRD_PARTY_NOTICES (if you ship third‑party content) -- Build/package files (CMake/pyproject/Dockerfile/etc.), tests/, docs/, examples/, scripts/ as appropriate -- Workflows: Edit if you need custom behavior - - -4. Change git origin to point to new repo and push -5. Remove the line break below and everything above it - -## Usage for existing NVIDIA OSS repos - -1. Follow the steps above, but add the files to your existing repo and merge - - ------------------------------------------ -# [Project Title] -One-sentence value proposition for users. Who is it for, and why it matters. + + +# NVIDIA DeepStream SDK 9.0 — Source Repository + +[NVIDIA DeepStream SDK](https://developer.nvidia.com/deepstream-sdk) is a streaming analytics toolkit for AI-based video and image understanding. It provides a GStreamer-based framework for building multi-stream, multi-model inference pipelines that run on NVIDIA GPUs (dGPU and Jetson). # Overview -What the project does? Why the project is useful? -Provide a brief overview, highlighting key features or problem-solving capabilities. + +This repository contains the complete source code for DeepStream 9.0: GStreamer plugins, utility libraries, sample applications, reference applications, TAO-integrated apps, and the Service Maker C++/Python SDK. + +## Repository Structure + +> **Note:** Currently applicable only for DeepStream 9.0. + +``` +DeepStream/ +├── .agents/ # placeholder — reserved for AI agent definitions +├── .claude/ # placeholder — Claude Code configuration +├── .github/ # placeholder — GitHub workflows / metadata +├── BUILD.md # build instructions +├── build.sh # top-level build driver +├── SECURITY.md # vulnerability disclosure +├── example_prompts/ # example prompts for AI coding agents +├── skills/ # placeholder — AI agent skills +├── scripts/ +│ └── install_opensource_deps.sh # builds open-source deps (OpenTelemetry, civetweb, …) +├── includes/ # shared public headers +│ ├── ds3d/ +│ ├── nvdsinferserver/ +│ ├── opentelemetry/ +│ └── prometheus/ +├── tools/ # standalone tools (see Components section) +│ ├── sam2-onnx-tensorrt/ # SAM2 ONNX-to-TensorRT conversion +│ └── yolo_deepstream/ # YOLO + TensorRT integration +└── src/ + ├── apps/ + │ ├── common/ # shared app helpers (config parsers, etc.) + │ ├── sample_apps/ # GStreamer-based sample applications + │ ├── reference_apps/ # advanced reference applications + │ └── tao_apps/ # TAO-model integration apps + ├── gst-plugins/ # GStreamer plugin sources (per-plugin subdirs) + ├── gst-utils/ # GStreamer utility library sources + │ ├── gstnvcustomhelper/ + │ ├── gstnvdscustomhelper/ + │ └── gst-nvdssr/ + ├── service-maker/ # Service Maker C++ / Python SDK and apps + │ ├── cmake/ # CMake configuration + │ ├── includes/ # Service Maker public headers + │ └── sources/ + │ ├── apps/ + │ │ ├── cpp/ # C++ sample apps + │ │ └── python/ # Python sample apps (flow + pipeline API) + │ └── modules/ # reusable signal handlers, probes, sinks + └── utils/ # utility library sources (per-library subdirs) +``` + +## Components + +### Sample Applications + +Located in `src/apps/sample_apps/`. These apps demonstrate core DeepStream pipeline patterns using GStreamer APIs directly. + +See [`src/apps/sample_apps/README.md`](src/apps/sample_apps/README.md) for the full list with descriptions and run commands. Each app has its own `README` at `src/apps/sample_apps//README`. + +### Reference Applications + +Located in `src/apps/reference_apps/`. Advanced apps demonstrating specialized use cases. + +See [`src/apps/reference_apps/README.md`](src/apps/reference_apps/README.md) for details. Each app has its own `README` at `src/apps/reference_apps//README`. + +### TAO Apps + +Located in `src/apps/tao_apps/`. Sample applications for running [NVIDIA TAO Toolkit](https://developer.nvidia.com/tao-toolkit) models with DeepStream. + +See [`src/apps/tao_apps/README.md`](src/apps/tao_apps/README.md) for supported models, build, and run instructions. + +Supported models include: PeopleNet Transformer, CitySemSegFormer, Mask2Former, Re-Identification, BodyPose3DNet, PoseClassification, OCDNet, OCRNet, LPDNet, LPRNet, Retail Detector, Retail Object Recognition. + +### Service Maker + +Located in `src/service-maker/`. A C++ and Python SDK that abstracts GStreamer/GLib APIs for building DeepStream applications declaratively. + +See [`src/service-maker/README.md`](src/service-maker/README.md) for build instructions, API overview, and app list. See also the [Service Maker introduction](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_service_maker_intro.html). + +- **C++ apps** — `src/service-maker/sources/apps/cpp/` +- **Python apps** — `src/service-maker/sources/apps/python/` (flow API and pipeline API) +- **Modules** — reusable signal handlers, probes, video sinks/sources, and more + +### GStreamer Plugins + +Located in `src/gst-plugins/`. Source for all DeepStream GStreamer plugins. + +See [`src/gst-plugins/README.md`](src/gst-plugins/README.md) for the full list. Each plugin has its own `README` at `src/gst-plugins//README` with properties and usage. See also the [DeepStream Plugins introduction](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_Intro.html). + +### GStreamer Utilities + +Located in `src/gst-utils/`. Each utility has its own `README` at `src/gst-utils//README`: + +- [`gstnvcustomhelper`](src/gst-utils/gstnvcustomhelper/README) +- [`gstnvdscustomhelper`](src/gst-utils/gstnvdscustomhelper/README) +- [`gst-nvdssr`](src/gst-utils/gst-nvdssr/README) + +### Utility Libraries + +Located in `src/utils/`. + +See [`src/utils/README.md`](src/utils/README.md) for the full list. Each library has its own `README` at `src/utils//README`. + +### Tools + +Located in `tools/`. Each tool has its own `README` at `tools//README.md`: + +- [`sam2-onnx-tensorrt`](tools/sam2-onnx-tensorrt/README.md) +- [`yolo_deepstream`](tools/yolo_deepstream/README.md) + +## Deprecated Components + +The following components are **legacy and no longer maintained**. They are still shipped with the DeepStream 9.0 public release but have been excluded from this repository. Deprecation was announced as part of the DS 9.0 public release. + +### Sample Applications + +- `deepstream-audio` +- `deepstream-avsync` +- `deepstream-mrcnn-test` +- `deepstream-segmentation-test` +- `deepstream-ucx-test` +- `deepstream_asr_app` +- `deepstream_asr_tts_app` + +### GStreamer Plugins + +- `gst-nvdsA2Vtemplate` +- `gst-nvdsaudiotemplate` +- `gst-nvdsspeech` +- `gst-nvdstexttospeech` + +For component details, source, and configuration, refer to the [DeepStream 9.0 public release documentation](https://docs.nvidia.com/metropolis/deepstream/dev-guide). # Getting Started -Guide users on how they can get started with the project. This should include basic installation step, quick-start examples -```bash -# Option A: Package manager (pip/conda/npm/etc.) - -# Option B: Container -docker run +Before using this repository, ensure the following are already set up on your system: + +1. **NVIDIA compute stack** — driver, CUDA, cuDNN, and TensorRT at the versions listed in the [Requirements](#requirements) section. Refer to the [DeepStream SDK Installation Guide](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html) for installation steps. -# Verify (hello world) - +2. **DeepStream 9.0** — installed via the DS 9.0 public released Debian package and its `install.sh` script. + +> **SBSA / DGX Spark:** No DS deb package exists for this platform. The NVIDIA SBSA Docker container serves as the environment — it includes the compute stack and DeepStream. See [BUILD.md](BUILD.md) for container setup steps. + +Once the above are in place, clone this repository and follow [BUILD.md](BUILD.md) to build and run: + +```bash +sudo apt-get install git-lfs +git clone https://github.com/NVIDIA/DeepStream && cd DeepStream +git lfs install && git lfs pull +sudo bash build.sh ``` + +See **[BUILD.md](BUILD.md)** for complete instructions covering: + +- System package dependencies (x86, aarch64, SBSA / DGX Spark) +- Git LFS setup for prebuilt artifact tarballs +- `build.sh` usage and environment variables (`CUDA_VER`, `NVDS_VERSION`) +- Build output locations under `/opt/nvidia/deepstream/deepstream-9.0/` +- Service Maker local CMake build + # Requirements -Include a list of pre-requisites. -- OS/Arch: -- Runtime/Compiler: -- GPU/Drivers (if applicable): CUDA , driver , etc. + +## Supported Platforms + +| Platform | Architecture | Notes | +|---|---|---| +| x86 dGPU | x86_64 | Ubuntu 24.04, CUDA 13.1, TensorRT 10.14.x, driver 590+ | +| Jetson | aarch64 | JetPack 7.1 GA (CUDA 13.0, TensorRT 10.13.x) | +| SBSA / DGX Spark | aarch64 | No DS tar/deb package; build and run inside the NVIDIA SBSA Docker container | + +## Platform-Specific Components + +| Component | Platform | Notes | +|---|---|---| +| `deepstream-ipc-test` | Jetson (aarch64) only | Relies on NVDEC engine sharing not available on x86 or SBSA | +| `deepstream-multigpu-nvlink-test` | x86 dGPU only | Requires NVLink; not supported on Jetson | + +## Components with External Prerequisites + +The following components build successfully only when the listed external SDK is installed on the system. See each component's README for installation links and setup details. + +| Component | External Prerequisite | Details | +|---|---|---| +| `gst-dsexample-cuda` | OpenCV 4.x built with CUDA support | [src/gst-plugins/gst-dsexample-cuda/README](src/gst-plugins/gst-dsexample-cuda/README) | +| `gst-nvdsudp` | Rivermax SDK (`rivermax_api.h`) | [src/gst-plugins/gst-nvdsudp/README](src/gst-plugins/gst-nvdsudp/README) | +| `libnvdsgst_inferserver` | Triton Inference Server client | [src/gst-plugins/gst-nvinferserver/README](src/gst-plugins/gst-nvinferserver/README) | # Usage + +## Running Sample Apps + +After building with `build.sh`, binaries are installed to `/opt/nvidia/deepstream/deepstream-9.0/bin/`. + +All apps must be run from their source directory so relative config paths resolve correctly. Refer to the `README` in each app's directory for app-specific run instructions and config file options. + +### Run `deepstream-app` (the reference application) + +Navigate to the `configs/deepstream-app` directory on the development kit: + +```bash +cd /opt/nvidia/deepstream/deepstream-9.0/samples/configs/deepstream-app +``` + +Run the reference application: + +```bash +deepstream-app -c +``` + +For example: + +```bash +deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display.txt +``` + +`` is the path to one of the reference application's configuration files in `configs/deepstream-app/`. See *Package Contents in `configs/deepstream-app/`* for the list of available files. See also the [DeepStream Quickstart — Run deepstream-app](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html#run-deepstream-app-the-reference-application). + +After first install, clear the GStreamer plugin cache: + ```bash -# Minimal runnable snippet (≤20 lines) - +rm -rf ~/.cache/gstreamer-1.0/ +``` + +## Running with Triton Inference Server (Docker) + +NVIDIA publishes a DeepStream Docker image bundled with Triton Inference Server. This is the recommended path when you need Triton-backed inference (`gst-nvinferserver` / `libnvdsgst_inferserver`), and is the only supported runtime path on SBSA / DGX Spark, where no native DeepStream deb package is available. + +### Prerequisites + +- **Docker** — install `docker-ce` per [Docker's official install guide](https://docs.docker.com/engine/install). +- **NVIDIA Container Toolkit** — required for GPU access; see the [install guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html). +- **NVIDIA Driver** — 590+ for dGPU. +- **NGC login** — pulling the image requires NGC authentication. + +```bash +# Get an API key from https://ngc.nvidia.com, then: +docker login nvcr.io +# Username: $oauthtoken +# Password: +``` + +### Pull the Triton Image + +| Platform | Image | +|---|---| +| x86 dGPU / Jetson | `nvcr.io/nvidia/deepstream:9.0-triton-multiarch` | +| SBSA / DGX Spark (ARM dGPU) | `nvcr.io/nvidia/deepstream:9.0-triton-arm-sbsa` | + +```bash +docker pull nvcr.io/nvidia/deepstream:9.0-triton-multiarch +``` + +The image bundles the DeepStream runtime, Triton Inference Server, and a development environment (compilers + headers) so the repository sources can also be built from inside the container. + +### Launch the Container + +With display (for `nveglglessink` / `nv3dsink`): + +```bash +export DISPLAY=:0 +xhost + + +docker run -it --rm \ + --gpus all \ + --network=host \ + -e DISPLAY=$DISPLAY \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + nvcr.io/nvidia/deepstream:9.0-triton-multiarch +``` + +Headless (use `fakesink` / `filesink` in your pipeline): + +```bash +docker run -it --rm --gpus all \ + nvcr.io/nvidia/deepstream:9.0-triton-multiarch +``` + +### Triton Model Repository + +The container ships sample Triton model repositories at: + +``` +/opt/nvidia/deepstream/deepstream/samples/triton_model_repo +/opt/nvidia/deepstream/deepstream/samples/triton_tao_model_repo +``` + +The `*_inferserver_config.txt` files shipped under `samples/configs/deepstream-app-triton/` and the `tritonclient` reference apps point at these paths via `infer_config.backend.triton.model_repo.root`. + +### Run a Triton-Backed Sample + +Inside the container: + +```bash +cd /opt/nvidia/deepstream/deepstream-9.0/samples/configs/deepstream-app-triton +deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display.txt +``` + +For gRPC-backed Triton, use `samples/configs/deepstream-app-triton-grpc/` instead. After the first launch, clear the GStreamer plugin cache once: + +```bash +rm -rf ~/.cache/gstreamer-1.0/ ``` -- More examples/tutorials: -- API reference: # Performance (Optional) Summary of benchmarks; link to detailed results and hardware used. @@ -150,5 +351,7 @@ Provide the channel for community communications. Provide a list of related references # License -This project is licensed under the [NAME HERE] License - see the LICENSE.md file for details -- License: + +Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +LICENSE details yet to be finalized — tracked in OSRB Bug 6155166. From 76a583bfe2dd13938950a00164704bad2ac5938d Mon Sep 17 00:00:00 2001 From: ankitat Date: Thu, 14 May 2026 17:25:16 +0530 Subject: [PATCH 5/7] Revert "docs(README): replace OSS template skeleton with DeepStream content" This reverts commit d3b4b10f91098cae6b04c6318ef7c27de840e664. --- README.md | 415 ++++++++++++++---------------------------------------- 1 file changed, 106 insertions(+), 309 deletions(-) diff --git a/README.md b/README.md index fb531664..56b69ecf 100644 --- a/README.md +++ b/README.md @@ -1,320 +1,119 @@ - - -# NVIDIA DeepStream SDK 9.0 — Source Repository - -[NVIDIA DeepStream SDK](https://developer.nvidia.com/deepstream-sdk) is a streaming analytics toolkit for AI-based video and image understanding. It provides a GStreamer-based framework for building multi-stream, multi-model inference pipelines that run on NVIDIA GPUs (dGPU and Jetson). +# __NVIDIA_OSS__ Standard Repo Template + +This README file is from the NVIDIA_OSS standard repo template of [PLC-OSS-Template](https://github.com/NVIDIA-GitHub-Management/PLC-OSS-Template?tab=readme-ov-file). It provides a list of files in the PLC-OSS-Template and guidelines on how to use (clone and customize) them. + +**Upon completing the customization for the project repo, the repo admin should replace this README template with the project specific README file.** + +- Files (org-wide templates in the NVIDIA .github org repo; per-repo overrides allowed) in [PLC-OSS-Template](https://github.com/NVIDIA-GitHub-Management/PLC-OSS-Template?tab=readme-ov-file) + + - Root + - README.md skeleton (CTA + Quickstart + Support/Security/Governance links) + - LICENSE (Apache 2.0 by default) + - For other licenses, see the [Confluence page](https://confluence.nvidia.com/pages/viewpage.action?pageId=788418816) for other licenses + - CLA.md file (delete if not using MIT or BSD licenses) + - CODE_OF_CONDUCT.md + - SECURITY.md (vuln reporting path) + - CONTRIBUTING.md (base; repo can add specifics) + - SUPPORT.md (Support levels/channels) + - GOVERNANCE.md (baseline; repo may extend) + - CITATION.md (for projects that need citation) + + - .github/ + - ISSUE_TEMPLATE/ () + - bug.yml, feature.yml, task.yml, config.yml + - PULL_REQUEST_TEMPLATE.md () + - workflows/ + - Note: workflow-templates/ for starter workflows should live in the org-level .github repo, not per-repo + + - Repo-specific (not org-template, maintained by the team) + - CODEOWNERS (place at .github/CODEOWNERS or repo root) + - CHANGELOG.md (or RELEASE.md) + - ROADMAP.md + - MAINTAINERS.md + - NOTICE or THIRD_PARTY_NOTICES / THIRD_PARTY_LICENSES (dependency specific) + - Build/package files (CMake, pyproject, Dockerfile, etc.) + + - Recommended structure and hygiene + - docs/ + - examples/ + - tests/ + - scripts/ + - Container/dev env: Dockerfile, docker/, .devcontainer/ (optional) + - Build/package (language-specific): + - Python: pyproject.toml, setup.cfg/setup.py, requirements.txt, environment.yml + - C++: CMakeLists.txt, cmake/, vcpkg.json + - Repo hygiene: .gitignore, .gitattributes, .editorconfig, .pre-commit-config.yaml, .clang-format + + +## Usage of [PLC-OSS-Template](https://github.com/NVIDIA-GitHub-Management/PLC-OSS-Template?tab=readme-ov-file) for NEW NVIDIA OSS repos + +1. Clone the [PLC-OSS-Template](https://github.com/NVIDIA-GitHub-Management/PLC-OSS-Template?tab=readme-ov-file) +2. Find/replace all in the clone of `___PROJECT___` and `__PROJECT_NAME__` with the name of the specific project. +3. Inspect all files to make sure all replacements work and update text as needed + + +**What you can reuse immediately** +- CODE_OF_CONDUCT.md +- SECURITY.md +- CONTRIBUTING.md (base) +- .github/ISSUE_TEMPLATE/.yml (bug/feature/task + config.yml) +- .github/PULL_REQUEST_TEMPLATE.md +- Reusable workflows + +**What you must customize per repo** +- README.md: copy the skeleton and fill in product-specific details (Quickstart, Requirements, Usage, Support level, links) +- LICENSE: check file is correct, update year, consult Confluence for alternatives https://confluence.nvidia.com/pages/viewpage.action?pageId=788418816, add CLA.md only if your license/process requires it +- CODEOWNERS: replace with your GitHub team handle(s). Place at .github/CODEOWNERS (or repo root) +- MAINTAINERS.md: list maintainers names/roles, escalation path +- CHANGELOG.md (or RELEASE.md): track releases/changes +- SUPPORT.md: Update for your project +- ROADMAP.md (optional): upcoming milestones +- NOTICE / THIRD_PARTY_NOTICES (if you ship third‑party content) +- Build/package files (CMake/pyproject/Dockerfile/etc.), tests/, docs/, examples/, scripts/ as appropriate +- Workflows: Edit if you need custom behavior + + +4. Change git origin to point to new repo and push +5. Remove the line break below and everything above it + +## Usage for existing NVIDIA OSS repos + +1. Follow the steps above, but add the files to your existing repo and merge + + +----------------------------------------- +# [Project Title] +One-sentence value proposition for users. Who is it for, and why it matters. # Overview - -This repository contains the complete source code for DeepStream 9.0: GStreamer plugins, utility libraries, sample applications, reference applications, TAO-integrated apps, and the Service Maker C++/Python SDK. - -## Repository Structure - -> **Note:** Currently applicable only for DeepStream 9.0. - -``` -DeepStream/ -├── .agents/ # placeholder — reserved for AI agent definitions -├── .claude/ # placeholder — Claude Code configuration -├── .github/ # placeholder — GitHub workflows / metadata -├── BUILD.md # build instructions -├── build.sh # top-level build driver -├── SECURITY.md # vulnerability disclosure -├── example_prompts/ # example prompts for AI coding agents -├── skills/ # placeholder — AI agent skills -├── scripts/ -│ └── install_opensource_deps.sh # builds open-source deps (OpenTelemetry, civetweb, …) -├── includes/ # shared public headers -│ ├── ds3d/ -│ ├── nvdsinferserver/ -│ ├── opentelemetry/ -│ └── prometheus/ -├── tools/ # standalone tools (see Components section) -│ ├── sam2-onnx-tensorrt/ # SAM2 ONNX-to-TensorRT conversion -│ └── yolo_deepstream/ # YOLO + TensorRT integration -└── src/ - ├── apps/ - │ ├── common/ # shared app helpers (config parsers, etc.) - │ ├── sample_apps/ # GStreamer-based sample applications - │ ├── reference_apps/ # advanced reference applications - │ └── tao_apps/ # TAO-model integration apps - ├── gst-plugins/ # GStreamer plugin sources (per-plugin subdirs) - ├── gst-utils/ # GStreamer utility library sources - │ ├── gstnvcustomhelper/ - │ ├── gstnvdscustomhelper/ - │ └── gst-nvdssr/ - ├── service-maker/ # Service Maker C++ / Python SDK and apps - │ ├── cmake/ # CMake configuration - │ ├── includes/ # Service Maker public headers - │ └── sources/ - │ ├── apps/ - │ │ ├── cpp/ # C++ sample apps - │ │ └── python/ # Python sample apps (flow + pipeline API) - │ └── modules/ # reusable signal handlers, probes, sinks - └── utils/ # utility library sources (per-library subdirs) -``` - -## Components - -### Sample Applications - -Located in `src/apps/sample_apps/`. These apps demonstrate core DeepStream pipeline patterns using GStreamer APIs directly. - -See [`src/apps/sample_apps/README.md`](src/apps/sample_apps/README.md) for the full list with descriptions and run commands. Each app has its own `README` at `src/apps/sample_apps//README`. - -### Reference Applications - -Located in `src/apps/reference_apps/`. Advanced apps demonstrating specialized use cases. - -See [`src/apps/reference_apps/README.md`](src/apps/reference_apps/README.md) for details. Each app has its own `README` at `src/apps/reference_apps//README`. - -### TAO Apps - -Located in `src/apps/tao_apps/`. Sample applications for running [NVIDIA TAO Toolkit](https://developer.nvidia.com/tao-toolkit) models with DeepStream. - -See [`src/apps/tao_apps/README.md`](src/apps/tao_apps/README.md) for supported models, build, and run instructions. - -Supported models include: PeopleNet Transformer, CitySemSegFormer, Mask2Former, Re-Identification, BodyPose3DNet, PoseClassification, OCDNet, OCRNet, LPDNet, LPRNet, Retail Detector, Retail Object Recognition. - -### Service Maker - -Located in `src/service-maker/`. A C++ and Python SDK that abstracts GStreamer/GLib APIs for building DeepStream applications declaratively. - -See [`src/service-maker/README.md`](src/service-maker/README.md) for build instructions, API overview, and app list. See also the [Service Maker introduction](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_service_maker_intro.html). - -- **C++ apps** — `src/service-maker/sources/apps/cpp/` -- **Python apps** — `src/service-maker/sources/apps/python/` (flow API and pipeline API) -- **Modules** — reusable signal handlers, probes, video sinks/sources, and more - -### GStreamer Plugins - -Located in `src/gst-plugins/`. Source for all DeepStream GStreamer plugins. - -See [`src/gst-plugins/README.md`](src/gst-plugins/README.md) for the full list. Each plugin has its own `README` at `src/gst-plugins//README` with properties and usage. See also the [DeepStream Plugins introduction](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_Intro.html). - -### GStreamer Utilities - -Located in `src/gst-utils/`. Each utility has its own `README` at `src/gst-utils//README`: - -- [`gstnvcustomhelper`](src/gst-utils/gstnvcustomhelper/README) -- [`gstnvdscustomhelper`](src/gst-utils/gstnvdscustomhelper/README) -- [`gst-nvdssr`](src/gst-utils/gst-nvdssr/README) - -### Utility Libraries - -Located in `src/utils/`. - -See [`src/utils/README.md`](src/utils/README.md) for the full list. Each library has its own `README` at `src/utils//README`. - -### Tools - -Located in `tools/`. Each tool has its own `README` at `tools//README.md`: - -- [`sam2-onnx-tensorrt`](tools/sam2-onnx-tensorrt/README.md) -- [`yolo_deepstream`](tools/yolo_deepstream/README.md) - -## Deprecated Components - -The following components are **legacy and no longer maintained**. They are still shipped with the DeepStream 9.0 public release but have been excluded from this repository. Deprecation was announced as part of the DS 9.0 public release. - -### Sample Applications - -- `deepstream-audio` -- `deepstream-avsync` -- `deepstream-mrcnn-test` -- `deepstream-segmentation-test` -- `deepstream-ucx-test` -- `deepstream_asr_app` -- `deepstream_asr_tts_app` - -### GStreamer Plugins - -- `gst-nvdsA2Vtemplate` -- `gst-nvdsaudiotemplate` -- `gst-nvdsspeech` -- `gst-nvdstexttospeech` - -For component details, source, and configuration, refer to the [DeepStream 9.0 public release documentation](https://docs.nvidia.com/metropolis/deepstream/dev-guide). +What the project does? Why the project is useful? +Provide a brief overview, highlighting key features or problem-solving capabilities. # Getting Started - -Before using this repository, ensure the following are already set up on your system: - -1. **NVIDIA compute stack** — driver, CUDA, cuDNN, and TensorRT at the versions listed in the [Requirements](#requirements) section. Refer to the [DeepStream SDK Installation Guide](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Installation.html) for installation steps. - -2. **DeepStream 9.0** — installed via the DS 9.0 public released Debian package and its `install.sh` script. - -> **SBSA / DGX Spark:** No DS deb package exists for this platform. The NVIDIA SBSA Docker container serves as the environment — it includes the compute stack and DeepStream. See [BUILD.md](BUILD.md) for container setup steps. - -Once the above are in place, clone this repository and follow [BUILD.md](BUILD.md) to build and run: - +Guide users on how they can get started with the project. This should include basic installation step, quick-start examples ```bash -sudo apt-get install git-lfs -git clone https://github.com/NVIDIA/DeepStream && cd DeepStream -git lfs install && git lfs pull -sudo bash build.sh -``` - -See **[BUILD.md](BUILD.md)** for complete instructions covering: +# Option A: Package manager (pip/conda/npm/etc.) + -- System package dependencies (x86, aarch64, SBSA / DGX Spark) -- Git LFS setup for prebuilt artifact tarballs -- `build.sh` usage and environment variables (`CUDA_VER`, `NVDS_VERSION`) -- Build output locations under `/opt/nvidia/deepstream/deepstream-9.0/` -- Service Maker local CMake build +# Option B: Container +docker run +# Verify (hello world) + +``` # Requirements - -## Supported Platforms - -| Platform | Architecture | Notes | -|---|---|---| -| x86 dGPU | x86_64 | Ubuntu 24.04, CUDA 13.1, TensorRT 10.14.x, driver 590+ | -| Jetson | aarch64 | JetPack 7.1 GA (CUDA 13.0, TensorRT 10.13.x) | -| SBSA / DGX Spark | aarch64 | No DS tar/deb package; build and run inside the NVIDIA SBSA Docker container | - -## Platform-Specific Components - -| Component | Platform | Notes | -|---|---|---| -| `deepstream-ipc-test` | Jetson (aarch64) only | Relies on NVDEC engine sharing not available on x86 or SBSA | -| `deepstream-multigpu-nvlink-test` | x86 dGPU only | Requires NVLink; not supported on Jetson | - -## Components with External Prerequisites - -The following components build successfully only when the listed external SDK is installed on the system. See each component's README for installation links and setup details. - -| Component | External Prerequisite | Details | -|---|---|---| -| `gst-dsexample-cuda` | OpenCV 4.x built with CUDA support | [src/gst-plugins/gst-dsexample-cuda/README](src/gst-plugins/gst-dsexample-cuda/README) | -| `gst-nvdsudp` | Rivermax SDK (`rivermax_api.h`) | [src/gst-plugins/gst-nvdsudp/README](src/gst-plugins/gst-nvdsudp/README) | -| `libnvdsgst_inferserver` | Triton Inference Server client | [src/gst-plugins/gst-nvinferserver/README](src/gst-plugins/gst-nvinferserver/README) | +Include a list of pre-requisites. +- OS/Arch: +- Runtime/Compiler: +- GPU/Drivers (if applicable): CUDA , driver , etc. # Usage - -## Running Sample Apps - -After building with `build.sh`, binaries are installed to `/opt/nvidia/deepstream/deepstream-9.0/bin/`. - -All apps must be run from their source directory so relative config paths resolve correctly. Refer to the `README` in each app's directory for app-specific run instructions and config file options. - -### Run `deepstream-app` (the reference application) - -Navigate to the `configs/deepstream-app` directory on the development kit: - -```bash -cd /opt/nvidia/deepstream/deepstream-9.0/samples/configs/deepstream-app -``` - -Run the reference application: - -```bash -deepstream-app -c -``` - -For example: - -```bash -deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display.txt -``` - -`` is the path to one of the reference application's configuration files in `configs/deepstream-app/`. See *Package Contents in `configs/deepstream-app/`* for the list of available files. See also the [DeepStream Quickstart — Run deepstream-app](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html#run-deepstream-app-the-reference-application). - -After first install, clear the GStreamer plugin cache: - ```bash -rm -rf ~/.cache/gstreamer-1.0/ -``` - -## Running with Triton Inference Server (Docker) - -NVIDIA publishes a DeepStream Docker image bundled with Triton Inference Server. This is the recommended path when you need Triton-backed inference (`gst-nvinferserver` / `libnvdsgst_inferserver`), and is the only supported runtime path on SBSA / DGX Spark, where no native DeepStream deb package is available. - -### Prerequisites - -- **Docker** — install `docker-ce` per [Docker's official install guide](https://docs.docker.com/engine/install). -- **NVIDIA Container Toolkit** — required for GPU access; see the [install guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html). -- **NVIDIA Driver** — 590+ for dGPU. -- **NGC login** — pulling the image requires NGC authentication. - -```bash -# Get an API key from https://ngc.nvidia.com, then: -docker login nvcr.io -# Username: $oauthtoken -# Password: -``` - -### Pull the Triton Image - -| Platform | Image | -|---|---| -| x86 dGPU / Jetson | `nvcr.io/nvidia/deepstream:9.0-triton-multiarch` | -| SBSA / DGX Spark (ARM dGPU) | `nvcr.io/nvidia/deepstream:9.0-triton-arm-sbsa` | - -```bash -docker pull nvcr.io/nvidia/deepstream:9.0-triton-multiarch -``` - -The image bundles the DeepStream runtime, Triton Inference Server, and a development environment (compilers + headers) so the repository sources can also be built from inside the container. - -### Launch the Container - -With display (for `nveglglessink` / `nv3dsink`): - -```bash -export DISPLAY=:0 -xhost + - -docker run -it --rm \ - --gpus all \ - --network=host \ - -e DISPLAY=$DISPLAY \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - nvcr.io/nvidia/deepstream:9.0-triton-multiarch -``` - -Headless (use `fakesink` / `filesink` in your pipeline): - -```bash -docker run -it --rm --gpus all \ - nvcr.io/nvidia/deepstream:9.0-triton-multiarch -``` - -### Triton Model Repository - -The container ships sample Triton model repositories at: - -``` -/opt/nvidia/deepstream/deepstream/samples/triton_model_repo -/opt/nvidia/deepstream/deepstream/samples/triton_tao_model_repo -``` - -The `*_inferserver_config.txt` files shipped under `samples/configs/deepstream-app-triton/` and the `tritonclient` reference apps point at these paths via `infer_config.backend.triton.model_repo.root`. - -### Run a Triton-Backed Sample - -Inside the container: - -```bash -cd /opt/nvidia/deepstream/deepstream-9.0/samples/configs/deepstream-app-triton -deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display.txt -``` - -For gRPC-backed Triton, use `samples/configs/deepstream-app-triton-grpc/` instead. After the first launch, clear the GStreamer plugin cache once: - -```bash -rm -rf ~/.cache/gstreamer-1.0/ +# Minimal runnable snippet (≤20 lines) + ``` +- More examples/tutorials: +- API reference: # Performance (Optional) Summary of benchmarks; link to detailed results and hardware used. @@ -351,7 +150,5 @@ Provide the channel for community communications. Provide a list of related references # License - -Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. - -LICENSE details yet to be finalized — tracked in OSRB Bug 6155166. +This project is licensed under the [NAME HERE] License - see the LICENSE.md file for details +- License: From a6aec32ae3d7915929b214b0246306511da4db93 Mon Sep 17 00:00:00 2001 From: ankitat Date: Thu, 14 May 2026 17:29:01 +0530 Subject: [PATCH 6/7] migrate: copy tools/inference_builder/ from mono-repo Brings the Inference Builder tool over as-is from the GitLab DeepStream mono-repo. The tool generates inference pipelines and integrates them into a microservice or standalone application from an inference config + OpenAPI spec. Includes the tool's own .gitmodules registering dependencies/triton-inference-server/common as a submodule -- left uninitialized to match mono-repo state (the path is not on disk in the mono-repo either, and the top-level .gitmodules in this repo is not modified). Source: GitLab DeepStream mono-repo main, tools/inference_builder/ (VERSION 0.2.0). 304 files, ~8 MB. Committed-By: ankitat's Claude Agent Codex Review: Approved: --- tools/inference_builder/.Dockerfile.builder | 42 + tools/inference_builder/.gitattributes | 7 + tools/inference_builder/.gitignore | 12 + tools/inference_builder/.gitkeep | 0 tools/inference_builder/.gitmodules | 3 + tools/inference_builder/CONTRIBUTING.md | 44 + tools/inference_builder/LICENSE | 201 ++ tools/inference_builder/README.md | 207 ++ tools/inference_builder/VERSION | 1 + tools/inference_builder/builder/__init__.py | 14 + .../builder/allowed_servers.txt | 3 + .../boilerplates/fastapi/cookiecutter.json | 3 + .../{{cookiecutter.service_name}}/__main__.py | 19 + .../config/__init__.py | 14 + .../custom/__init__.py | 14 + .../lib/__init__.py | 14 + .../server/__init__.py | 14 + .../boilerplates/serverless/cookiecutter.json | 3 + .../{{cookiecutter.service_name}}/__main__.py | 19 + .../app/__init__.py | 14 + .../config/__init__.py | 14 + .../custom/__init__.py | 14 + .../lib/__init__.py | 14 + tools/inference_builder/builder/main.py | 677 ++++ .../builder/openapitools.json | 8 + .../builder/samples/README.md | 49 + .../builder/samples/changenet/Dockerfile | 85 + .../builder/samples/changenet/README.md | 96 + .../builder/samples/changenet/golden_0.jpg | Bin 0 -> 35195 bytes .../builder/samples/changenet/ib_client.py | 84 + .../builder/samples/changenet/openapi.yaml | 248 ++ .../samples/changenet/payloads/payloads.jsonl | 1 + .../builder/samples/changenet/processors.py | 107 + .../builder/samples/changenet/test_0.jpg | Bin 0 -> 32942 bytes .../samples/changenet/test_config.json | 58 + .../samples/changenet/trt_changenet.yaml | 109 + .../builder/samples/cradio/Dockerfile | 102 + .../builder/samples/cradio/README.md | 255 ++ .../builder/samples/cradio/ds_cradio.yaml | 85 + .../builder/samples/cradio/export_onnx.py | 128 + .../builder/samples/cradio/prepare_engine.sh | 61 + .../builder/samples/cradio/processors.py | 97 + .../builder/samples/cradio/test_config.json | 47 + .../builder/samples/docker-compose.yml | 155 + .../builder/samples/ds_app/Dockerfile | 130 + .../samples/ds_app/Dockerfile.dgxspark | 149 + .../builder/samples/ds_app/Dockerfile.tegra | 147 + .../builder/samples/ds_app/README.md | 251 ++ .../samples/ds_app/classification/README.md | 201 ++ .../changenet-classify/labels.txt | 2 + .../changenet-classify/nvdsinfer_config.yaml | 29 + .../nvdspreprocess_config_0.yaml | 46 + .../nvdspreprocess_config_1.yaml | 46 + .../ds_app/classification/ds_changenet.yaml | 59 + .../samples/ds_app/classification/ds_pcb.yaml | 55 + .../pcbclassification/labels.txt | 1 + .../pcbclassification/nvdsinfer_config.yaml | 30 + .../sample-inputs/IMG_0002_C71.png | Bin 0 -> 21907 bytes .../sample-inputs/IMG_0002_C75.png | Bin 0 -> 23923 bytes .../samples/ds_app/detection/README.md | 206 ++ .../samples/ds_app/detection/ds_detect.yaml | 95 + .../mask2former/nvdsinfer_config.yaml | 48 + .../peoplenet_transformer/labels.txt | 4 + .../nvdsinfer_config.yaml | 38 + .../ds_app/detection/resnet/labels.txt | 4 + .../detection/resnet/nvdsinfer_config.yaml | 37 + .../ds_app/detection/rtdetr/labels.txt | 5 + .../detection/rtdetr/nvdsinfer_config.yaml | 36 + .../builder/samples/ds_app/gdino/README.md | 184 + .../samples/ds_app/gdino/ds_gdino.yaml | 104 + .../ds_app/gdino/gdino/nvdsinfer_config.yaml | 32 + .../gdino/gdino/nvdspreprocess_config.yaml | 44 + .../gdino/mask_gdino/nvdsinfer_config.yaml | 32 + .../mask_gdino/nvdspreprocess_config.yaml | 45 + .../samples/ds_app/segmentation/README.md | 154 + .../segmentation/citysemsegformer/labels.txt | 20 + .../citysemsegformer/nvdsinfer_config.yaml | 35 + .../ds_app/segmentation/ds_segformer.yaml | 66 + .../builder/samples/ds_app/test_config.json | 241 ++ .../samples/ds_app/test_data/pass_0.png | Bin 0 -> 93529 bytes .../samples/ds_app/test_data/pass_1.png | Bin 0 -> 88879 bytes .../ds_app/test_data/source_config.yaml | 23 + .../builder/samples/dummy/Dockerfile | 75 + .../builder/samples/dummy/README.md | 25 + .../builder/samples/dummy/dummy.yaml | 233 ++ .../builder/samples/dummy/openapi.yaml | 499 +++ .../builder/samples/dummy/processors.py | 44 + .../builder/samples/dummy/test_client.py | 86 + .../builder/samples/nvclip/Dockerfile | 75 + .../builder/samples/nvclip/README.md | 88 + .../builder/samples/nvclip/openapi.yaml | 487 +++ .../builder/samples/nvclip/optimizer/CLIP.png | Bin 0 -> 252444 bytes .../samples/nvclip/optimizer/Dockerfile | 47 + .../configs/NVCLIP_224_700M_ViTH14.json | 29 + .../nvclip/optimizer/export_to_onnx.py | 81 + .../samples/nvclip/optimizer/optimize.sh | 31 + .../builder/samples/nvclip/processors.py | 69 + .../samples/nvclip/tensorrt_nvclip.yaml | 135 + .../builder/samples/nvclip/test_client.sh | 32 + .../builder/samples/qwen/Dockerfile | 83 + .../builder/samples/qwen/README.md | 129 + .../builder/samples/qwen/client.py | 137 + .../builder/samples/qwen/openapi.yaml | 1367 ++++++++ .../samples/qwen/payloads/images.jsonl | 2 + .../samples/qwen/payloads/videos.jsonl | 3 + .../builder/samples/qwen/processors.py | 341 ++ .../builder/samples/qwen/pytorch_qwen.yaml | 144 + .../builder/samples/qwen/test_config.json | 142 + .../samples/qwen/trtllm_nvdec_qwen.yaml | 189 ++ .../builder/samples/qwen/trtllm_qwen.yaml | 182 + .../builder/samples/tao/Dockerfile | 174 + .../builder/samples/tao/HOWTO.md | 471 +++ .../samples/tao/config/live_source.yaml | 9 + .../builder/samples/tao/ds_changenet.yaml | 150 + .../builder/samples/tao/ds_gdino.yaml | 193 ++ .../builder/samples/tao/ds_tao.yaml | 146 + .../builder/samples/tao/ds_tao_live.yaml | 72 + .../builder/samples/tao/evaluation/README.md | 126 + .../tao/evaluation/classification_eval.py | 632 ++++ .../tao/evaluation/create_coco_subset.py | 230 ++ .../samples/tao/evaluation/detection_eval.py | 209 ++ .../tao/evaluation/eg.experiment.cls.yaml | 218 ++ .../tao/evaluation/eg.experiment.seg.yaml | 204 ++ .../evaluation/semantic_segmentation_eval.py | 518 +++ .../tao/evaluation/validation_utils.py | 231 ++ .../builder/samples/tao/openapi.yaml | 446 +++ .../builder/samples/tao/pass_0.png | Bin 0 -> 93529 bytes .../builder/samples/tao/pass_1.png | Bin 0 -> 88879 bytes .../builder/samples/tao/processors.py | 558 ++++ .../builder/samples/tao/test_config.json | 153 + .../samples/tao/validation/.dockerignore | 13 + .../tao/validation/Dockerfile.validation | 35 + .../builder/samples/tao/validation/build.py | 144 + .../citysemsegformer/sample_720p.jpg | Bin 0 -> 59724 bytes .../cls/ILSVRC2012_val_00001362.JPEG | Bin 0 -> 240232 bytes .../cls/ILSVRC2012_val_00002167.JPEG | Bin 0 -> 178312 bytes .../cls/expected.ILSVRC2012_val_00001362.json | 1 + .../cls/expected.ILSVRC2012_val_00002167.json | 1 + .../samples/tao/validation/cls/labels.txt | 1 + .../validation/cls/model_manifest.generate.sh | 17 + .../cls/model_manifest.profile.yaml | 24 + .../tao/validation/cls/model_manifest.yaml | 34 + .../tao/validation/cls/nvdsinfer_config.yaml | 33 + .../tao/validation/docker-compose.yaml | 28 + ...cted.iva_0010_02_1280_0_181016_007207.json | 1 + .../iva_0010_02_1280_0_181016_007207.jpg | Bin 0 -> 114044 bytes .../iva_0010_02_1280_0_181016_007207.txt | 1 + .../gdino/model_manifest.generate.sh | 17 + .../gdino/model_manifest.profile.yaml | 24 + .../tao/validation/gdino/model_manifest.yaml | 35 + .../validation/gdino/nvdsinfer_config.yaml | 36 + .../gdino/nvdspreprocess_config.yaml | 64 + ...cted.iva_0010_02_1280_0_181016_007207.json | 1 + .../iva_0010_02_1280_0_181016_007207.jpg | Bin 0 -> 114044 bytes .../iva_0010_02_1280_0_181016_007207.txt | 1 + .../mgdino/model_manifest.generate.sh | 2 + .../mgdino/model_manifest.profile.yaml | 24 + .../tao/validation/mgdino/model_manifest.yaml | 35 + .../validation/mgdino/nvdsinfer_config.yaml | 37 + .../mgdino/nvdspreprocess_config.yaml | 63 + .../pcbclassification/IMG_0002_C75.png | Bin 0 -> 23923 bytes .../expected.IMG_0002_C75.json | 1 + .../samples/tao/validation/requirements.txt | 7 + ...cted.iva_0010_02_1280_0_181016_007207.json | 1 + .../iva_0010_02_1280_0_181016_007207.jpg | Bin 0 -> 114044 bytes .../samples/tao/validation/rtdetr/labels.txt | 81 + .../rtdetr/model_manifest.generate.sh | 17 + .../rtdetr/model_manifest.profile.yaml | 24 + .../tao/validation/rtdetr/model_manifest.yaml | 34 + .../validation/rtdetr/nvdsinfer_config.yaml | 35 + .../samples/tao/validation/run_validation.sh | 30 + .../tao/validation/seg/expected.image_0.json | 1 + .../samples/tao/validation/seg/image_0.png | Bin 0 -> 224897 bytes .../validation/seg/model_manifest.generate.sh | 17 + .../seg/model_manifest.profile.yaml | 24 + .../tao/validation/seg/model_manifest.yaml | 31 + .../tao/validation/seg/nvdsinfer_config.yaml | 33 + .../builder/samples/vllm/Dockerfile | 88 + .../builder/samples/vllm/README.md | 131 + .../builder/samples/vllm/openapi.yaml | 1367 ++++++++ .../samples/vllm/payloads/images.jsonl | 2 + .../samples/vllm/payloads/videos.jsonl | 3 + .../builder/samples/vllm/test_config.json | 233 ++ .../builder/samples/vllm/vllm_cosmos.yaml | 106 + .../samples/vllm/vllm_nvdec_cosmos.yaml | 209 ++ .../samples/vllm/vllm_nvdec_qwen3_vl.yaml | 209 ++ .../builder/samples/vllm/vllm_qwen3_vl.yaml | 106 + .../builder/tests/Dockerfile | 53 + .../inference_builder/builder/tests/README.md | 708 ++++ .../builder/tests/asset_management/app.yaml | 88 + .../asset_management/payloads/assets.jsonl | 2 + .../payloads/start_stream.jsonl | 2 + .../tests/asset_management/processors.py | 25 + .../builder/tests/concurrency/app.yaml | 63 + .../tests/concurrency/payloads/payloads.jsonl | 4 + .../builder/tests/concurrency/processors.py | 32 + .../inference_builder/builder/tests/frame.jpg | Bin 0 -> 378609 bytes .../builder/tests/frame_sampling/app.yaml | 42 + .../tests/frame_sampling/processors.py | 36 + .../builder/tests/negative/df_1.yaml | 50 + .../builder/tests/negative/df_2.yaml | 50 + .../builder/tests/negative/df_3 copy.yaml | 33 + .../builder/tests/negative/df_3.yaml | 44 + .../builder/tests/negative/image.yaml | 29 + .../builder/tests/negative/mo_1.yaml | 33 + .../builder/tests/negative/mo_2.yaml | 34 + .../builder/tests/negative/model.yaml | 28 + .../tests/negative/payloads/payloads.jsonl | 1 + .../builder/tests/negative/pp_1.yaml | 33 + .../builder/tests/negative/pp_2.yaml | 33 + .../builder/tests/negative/pp_3.yaml | 33 + .../builder/tests/negative/processors.py | 32 + .../builder/tests/negative/route_1.yaml | 33 + .../builder/tests/negative/route_2.yaml | 33 + .../builder/tests/negative/route_3.yaml | 33 + .../builder/tests/negative/route_4.yaml | 33 + .../builder/tests/negative/route_5.yaml | 33 + .../builder/tests/negative/video.yaml | 29 + .../builder/tests/output_types/app.yaml | 110 + .../output_types/payloads/payloads.jsonl | 4 + .../builder/tests/output_types/processors.py | 68 + .../builder/tests/run_tests.sh | 194 ++ .../builder/tests/setup_rtsp_server.sh | 376 +++ .../builder/tests/test_configs.json | 504 +++ .../builder/tests/test_docker_builds.py | 2971 +++++++++++++++++ .../builder/triton/__init__.py | 14 + .../builder/triton/model_config_pb2.py | 195 ++ .../inference_builder/builder/triton/utils.py | 80 + tools/inference_builder/builder/utils.py | 172 + tools/inference_builder/builder/validate.py | 1012 ++++++ .../inference_builder/cursor-mcp-config.json | 13 + tools/inference_builder/doc/architecture.md | 38 + .../doc/assets/architecture.png | Bin 0 -> 45036 bytes .../doc/assets/block_digram.png | Bin 0 -> 34289 bytes .../doc/assets/inference_flow.png | Bin 0 -> 500165 bytes tools/inference_builder/doc/platform-guide.md | 99 + tools/inference_builder/doc/usage.md | 204 ++ tools/inference_builder/lib/__init__.py | 14 + tools/inference_builder/lib/asset_manager.py | 363 ++ tools/inference_builder/lib/codec.py | 100 + tools/inference_builder/lib/errors.py | 1163 +++++++ tools/inference_builder/lib/inference.py | 2051 ++++++++++++ tools/inference_builder/lib/responder.py | 137 + tools/inference_builder/lib/utils.py | 387 +++ tools/inference_builder/mcp.png | Bin 0 -> 150765 bytes .../mcp/QUICK_NORMALIZATION_REFERENCE.md | 211 ++ tools/inference_builder/mcp/README-MCP.md | 217 ++ .../mcp/STD_NORMALIZATION_CALCULATOR.md | 395 +++ tools/inference_builder/mcp/examples.md | 113 + tools/inference_builder/mcp/mcp_server.py | 1994 +++++++++++ tools/inference_builder/mcp/setup_mcp.py | 207 ++ .../inference_builder/mcp/test_mcp_client.py | 171 + .../inference_builder/mcp/test_mcp_server.py | 144 + tools/inference_builder/overview.png | Bin 0 -> 81445 bytes tools/inference_builder/requirements.txt | 16 + .../inference_builder/schemas/ARCHITECTURE.md | 244 ++ tools/inference_builder/schemas/README.md | 686 ++++ tools/inference_builder/schemas/RESPONDERS.md | 230 ++ .../schemas/backends/deepstream.schema.json | 47 + .../schemas/backends/dummy.schema.json | 45 + .../deepstream-parameters.schema.json | 207 ++ .../parameters/dummy-parameters.schema.json | 10 + .../polygraphy-parameters.schema.json | 16 + .../parameters/pytorch-parameters.schema.json | 10 + .../tensorrtllm-parameters.schema.json | 10 + .../parameters/triton-parameters.schema.json | 10 + .../parameters/vllm-parameters.schema.json | 55 + .../schemas/backends/polygraphy.schema.json | 47 + .../schemas/backends/pytorch.schema.json | 50 + .../schemas/backends/tensorrtllm.schema.json | 49 + .../schemas/backends/triton.schema.json | 54 + .../schemas/backends/vllm.schema.json | 47 + .../schemas/common/base-model.schema.json | 96 + .../schemas/common/base-processor.schema.json | 36 + .../schemas/common/definitions.schema.json | 111 + .../schemas/common/postprocessors.schema.json | 27 + .../schemas/common/preprocessors.schema.json | 27 + .../schemas/config.schema.json | 371 ++ tools/inference_builder/schemas/index.json | 105 + .../schemas/validate_config.py | 220 ++ .../api_server/fastapi/responder.jinja.py | 88 + .../api_server/fastapi/route/inference.jinja2 | 76 + .../templates/backend/deepstream.jinja.py | 1178 +++++++ .../templates/backend/dummy.jinja.py | 107 + .../templates/backend/polygraphy.jinja.py | 50 + .../templates/backend/pytorch.jinja.py | 41 + .../templates/backend/tensorrtllm.jinja.py | 199 ++ .../templates/backend/triton.jinja.py | 180 + .../templates/backend/vllm.jinja.py | 202 ++ .../templates/client/test_runner.jinja.py | 165 + .../templates/common/config.jinja.py | 89 + .../templates/common/custom.__init__.jinja.py | 50 + .../templates/generic/model.jinja.py | 227 ++ .../templates/responder/add_file.jinja.py | 27 + .../responder/add_live_stream.jinja.py | 32 + .../templates/responder/del_file.jinja.py | 25 + .../responder/del_live_stream.jinja.py | 25 + .../responder/healthy_ready.jinja.py | 22 + .../templates/responder/infer.jinja.py | 64 + .../templates/responder/list_files.jinja.py | 24 + .../responder/list_live_streams.jinja.py | 24 + .../templates/serverless/inference.jinja.py | 137 + .../templates/triton/model.jinja.py | 274 ++ tools/inference_builder/tools/trt_build.py | 110 + 304 files changed, 40343 insertions(+) create mode 100644 tools/inference_builder/.Dockerfile.builder create mode 100644 tools/inference_builder/.gitattributes create mode 100644 tools/inference_builder/.gitignore create mode 100644 tools/inference_builder/.gitkeep create mode 100644 tools/inference_builder/.gitmodules create mode 100644 tools/inference_builder/CONTRIBUTING.md create mode 100644 tools/inference_builder/LICENSE create mode 100644 tools/inference_builder/README.md create mode 100644 tools/inference_builder/VERSION create mode 100644 tools/inference_builder/builder/__init__.py create mode 100644 tools/inference_builder/builder/allowed_servers.txt create mode 100644 tools/inference_builder/builder/boilerplates/fastapi/cookiecutter.json create mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/__main__.py create mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/config/__init__.py create mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/custom/__init__.py create mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/lib/__init__.py create mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/server/__init__.py create mode 100644 tools/inference_builder/builder/boilerplates/serverless/cookiecutter.json create mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/__main__.py create mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/app/__init__.py create mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/config/__init__.py create mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/custom/__init__.py create mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/lib/__init__.py create mode 100644 tools/inference_builder/builder/main.py create mode 100644 tools/inference_builder/builder/openapitools.json create mode 100644 tools/inference_builder/builder/samples/README.md create mode 100644 tools/inference_builder/builder/samples/changenet/Dockerfile create mode 100644 tools/inference_builder/builder/samples/changenet/README.md create mode 100644 tools/inference_builder/builder/samples/changenet/golden_0.jpg create mode 100644 tools/inference_builder/builder/samples/changenet/ib_client.py create mode 100644 tools/inference_builder/builder/samples/changenet/openapi.yaml create mode 100644 tools/inference_builder/builder/samples/changenet/payloads/payloads.jsonl create mode 100644 tools/inference_builder/builder/samples/changenet/processors.py create mode 100644 tools/inference_builder/builder/samples/changenet/test_0.jpg create mode 100644 tools/inference_builder/builder/samples/changenet/test_config.json create mode 100644 tools/inference_builder/builder/samples/changenet/trt_changenet.yaml create mode 100644 tools/inference_builder/builder/samples/cradio/Dockerfile create mode 100644 tools/inference_builder/builder/samples/cradio/README.md create mode 100644 tools/inference_builder/builder/samples/cradio/ds_cradio.yaml create mode 100644 tools/inference_builder/builder/samples/cradio/export_onnx.py create mode 100644 tools/inference_builder/builder/samples/cradio/prepare_engine.sh create mode 100644 tools/inference_builder/builder/samples/cradio/processors.py create mode 100644 tools/inference_builder/builder/samples/cradio/test_config.json create mode 100644 tools/inference_builder/builder/samples/docker-compose.yml create mode 100644 tools/inference_builder/builder/samples/ds_app/Dockerfile create mode 100644 tools/inference_builder/builder/samples/ds_app/Dockerfile.dgxspark create mode 100644 tools/inference_builder/builder/samples/ds_app/Dockerfile.tegra create mode 100644 tools/inference_builder/builder/samples/ds_app/README.md create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/README.md create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/labels.txt create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_0.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_1.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/ds_changenet.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/ds_pcb.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/labels.txt create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C71.png create mode 100644 tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C75.png create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/README.md create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/ds_detect.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/mask2former/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/labels.txt create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/resnet/labels.txt create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/resnet/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/rtdetr/labels.txt create mode 100644 tools/inference_builder/builder/samples/ds_app/detection/rtdetr/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/README.md create mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/ds_gdino.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdspreprocess_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdspreprocess_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/segmentation/README.md create mode 100644 tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/labels.txt create mode 100644 tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/segmentation/ds_segformer.yaml create mode 100644 tools/inference_builder/builder/samples/ds_app/test_config.json create mode 100644 tools/inference_builder/builder/samples/ds_app/test_data/pass_0.png create mode 100644 tools/inference_builder/builder/samples/ds_app/test_data/pass_1.png create mode 100644 tools/inference_builder/builder/samples/ds_app/test_data/source_config.yaml create mode 100644 tools/inference_builder/builder/samples/dummy/Dockerfile create mode 100644 tools/inference_builder/builder/samples/dummy/README.md create mode 100644 tools/inference_builder/builder/samples/dummy/dummy.yaml create mode 100644 tools/inference_builder/builder/samples/dummy/openapi.yaml create mode 100644 tools/inference_builder/builder/samples/dummy/processors.py create mode 100644 tools/inference_builder/builder/samples/dummy/test_client.py create mode 100644 tools/inference_builder/builder/samples/nvclip/Dockerfile create mode 100644 tools/inference_builder/builder/samples/nvclip/README.md create mode 100644 tools/inference_builder/builder/samples/nvclip/openapi.yaml create mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/CLIP.png create mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/Dockerfile create mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/configs/NVCLIP_224_700M_ViTH14.json create mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/export_to_onnx.py create mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/optimize.sh create mode 100644 tools/inference_builder/builder/samples/nvclip/processors.py create mode 100644 tools/inference_builder/builder/samples/nvclip/tensorrt_nvclip.yaml create mode 100644 tools/inference_builder/builder/samples/nvclip/test_client.sh create mode 100644 tools/inference_builder/builder/samples/qwen/Dockerfile create mode 100644 tools/inference_builder/builder/samples/qwen/README.md create mode 100644 tools/inference_builder/builder/samples/qwen/client.py create mode 100644 tools/inference_builder/builder/samples/qwen/openapi.yaml create mode 100644 tools/inference_builder/builder/samples/qwen/payloads/images.jsonl create mode 100644 tools/inference_builder/builder/samples/qwen/payloads/videos.jsonl create mode 100644 tools/inference_builder/builder/samples/qwen/processors.py create mode 100644 tools/inference_builder/builder/samples/qwen/pytorch_qwen.yaml create mode 100644 tools/inference_builder/builder/samples/qwen/test_config.json create mode 100644 tools/inference_builder/builder/samples/qwen/trtllm_nvdec_qwen.yaml create mode 100644 tools/inference_builder/builder/samples/qwen/trtllm_qwen.yaml create mode 100644 tools/inference_builder/builder/samples/tao/Dockerfile create mode 100644 tools/inference_builder/builder/samples/tao/HOWTO.md create mode 100644 tools/inference_builder/builder/samples/tao/config/live_source.yaml create mode 100644 tools/inference_builder/builder/samples/tao/ds_changenet.yaml create mode 100644 tools/inference_builder/builder/samples/tao/ds_gdino.yaml create mode 100644 tools/inference_builder/builder/samples/tao/ds_tao.yaml create mode 100644 tools/inference_builder/builder/samples/tao/ds_tao_live.yaml create mode 100644 tools/inference_builder/builder/samples/tao/evaluation/README.md create mode 100644 tools/inference_builder/builder/samples/tao/evaluation/classification_eval.py create mode 100644 tools/inference_builder/builder/samples/tao/evaluation/create_coco_subset.py create mode 100644 tools/inference_builder/builder/samples/tao/evaluation/detection_eval.py create mode 100644 tools/inference_builder/builder/samples/tao/evaluation/eg.experiment.cls.yaml create mode 100644 tools/inference_builder/builder/samples/tao/evaluation/eg.experiment.seg.yaml create mode 100644 tools/inference_builder/builder/samples/tao/evaluation/semantic_segmentation_eval.py create mode 100644 tools/inference_builder/builder/samples/tao/evaluation/validation_utils.py create mode 100644 tools/inference_builder/builder/samples/tao/openapi.yaml create mode 100644 tools/inference_builder/builder/samples/tao/pass_0.png create mode 100644 tools/inference_builder/builder/samples/tao/pass_1.png create mode 100644 tools/inference_builder/builder/samples/tao/processors.py create mode 100644 tools/inference_builder/builder/samples/tao/test_config.json create mode 100644 tools/inference_builder/builder/samples/tao/validation/.dockerignore create mode 100644 tools/inference_builder/builder/samples/tao/validation/Dockerfile.validation create mode 100644 tools/inference_builder/builder/samples/tao/validation/build.py create mode 100644 tools/inference_builder/builder/samples/tao/validation/citysemsegformer/sample_720p.jpg create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/ILSVRC2012_val_00001362.JPEG create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/ILSVRC2012_val_00002167.JPEG create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00001362.json create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00002167.json create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/labels.txt create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.generate.sh create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.profile.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/docker-compose.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/expected.iva_0010_02_1280_0_181016_007207.json create mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.jpg create mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.txt create mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.generate.sh create mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.profile.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/nvdspreprocess_config.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/expected.iva_0010_02_1280_0_181016_007207.json create mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.jpg create mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.txt create mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.generate.sh create mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.profile.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/nvdspreprocess_config.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/pcbclassification/IMG_0002_C75.png create mode 100644 tools/inference_builder/builder/samples/tao/validation/pcbclassification/expected.IMG_0002_C75.json create mode 100644 tools/inference_builder/builder/samples/tao/validation/requirements.txt create mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/expected.iva_0010_02_1280_0_181016_007207.json create mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/iva_0010_02_1280_0_181016_007207.jpg create mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/labels.txt create mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.generate.sh create mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.profile.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/run_validation.sh create mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/expected.image_0.json create mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/image_0.png create mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.generate.sh create mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.profile.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.yaml create mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/nvdsinfer_config.yaml create mode 100644 tools/inference_builder/builder/samples/vllm/Dockerfile create mode 100644 tools/inference_builder/builder/samples/vllm/README.md create mode 100644 tools/inference_builder/builder/samples/vllm/openapi.yaml create mode 100644 tools/inference_builder/builder/samples/vllm/payloads/images.jsonl create mode 100644 tools/inference_builder/builder/samples/vllm/payloads/videos.jsonl create mode 100644 tools/inference_builder/builder/samples/vllm/test_config.json create mode 100644 tools/inference_builder/builder/samples/vllm/vllm_cosmos.yaml create mode 100644 tools/inference_builder/builder/samples/vllm/vllm_nvdec_cosmos.yaml create mode 100644 tools/inference_builder/builder/samples/vllm/vllm_nvdec_qwen3_vl.yaml create mode 100644 tools/inference_builder/builder/samples/vllm/vllm_qwen3_vl.yaml create mode 100644 tools/inference_builder/builder/tests/Dockerfile create mode 100644 tools/inference_builder/builder/tests/README.md create mode 100644 tools/inference_builder/builder/tests/asset_management/app.yaml create mode 100644 tools/inference_builder/builder/tests/asset_management/payloads/assets.jsonl create mode 100644 tools/inference_builder/builder/tests/asset_management/payloads/start_stream.jsonl create mode 100644 tools/inference_builder/builder/tests/asset_management/processors.py create mode 100644 tools/inference_builder/builder/tests/concurrency/app.yaml create mode 100644 tools/inference_builder/builder/tests/concurrency/payloads/payloads.jsonl create mode 100644 tools/inference_builder/builder/tests/concurrency/processors.py create mode 100644 tools/inference_builder/builder/tests/frame.jpg create mode 100644 tools/inference_builder/builder/tests/frame_sampling/app.yaml create mode 100644 tools/inference_builder/builder/tests/frame_sampling/processors.py create mode 100644 tools/inference_builder/builder/tests/negative/df_1.yaml create mode 100644 tools/inference_builder/builder/tests/negative/df_2.yaml create mode 100644 tools/inference_builder/builder/tests/negative/df_3 copy.yaml create mode 100644 tools/inference_builder/builder/tests/negative/df_3.yaml create mode 100644 tools/inference_builder/builder/tests/negative/image.yaml create mode 100644 tools/inference_builder/builder/tests/negative/mo_1.yaml create mode 100644 tools/inference_builder/builder/tests/negative/mo_2.yaml create mode 100644 tools/inference_builder/builder/tests/negative/model.yaml create mode 100644 tools/inference_builder/builder/tests/negative/payloads/payloads.jsonl create mode 100644 tools/inference_builder/builder/tests/negative/pp_1.yaml create mode 100644 tools/inference_builder/builder/tests/negative/pp_2.yaml create mode 100644 tools/inference_builder/builder/tests/negative/pp_3.yaml create mode 100644 tools/inference_builder/builder/tests/negative/processors.py create mode 100644 tools/inference_builder/builder/tests/negative/route_1.yaml create mode 100644 tools/inference_builder/builder/tests/negative/route_2.yaml create mode 100644 tools/inference_builder/builder/tests/negative/route_3.yaml create mode 100644 tools/inference_builder/builder/tests/negative/route_4.yaml create mode 100644 tools/inference_builder/builder/tests/negative/route_5.yaml create mode 100644 tools/inference_builder/builder/tests/negative/video.yaml create mode 100644 tools/inference_builder/builder/tests/output_types/app.yaml create mode 100644 tools/inference_builder/builder/tests/output_types/payloads/payloads.jsonl create mode 100644 tools/inference_builder/builder/tests/output_types/processors.py create mode 100644 tools/inference_builder/builder/tests/run_tests.sh create mode 100644 tools/inference_builder/builder/tests/setup_rtsp_server.sh create mode 100644 tools/inference_builder/builder/tests/test_configs.json create mode 100644 tools/inference_builder/builder/tests/test_docker_builds.py create mode 100644 tools/inference_builder/builder/triton/__init__.py create mode 100644 tools/inference_builder/builder/triton/model_config_pb2.py create mode 100644 tools/inference_builder/builder/triton/utils.py create mode 100644 tools/inference_builder/builder/utils.py create mode 100644 tools/inference_builder/builder/validate.py create mode 100644 tools/inference_builder/cursor-mcp-config.json create mode 100644 tools/inference_builder/doc/architecture.md create mode 100644 tools/inference_builder/doc/assets/architecture.png create mode 100644 tools/inference_builder/doc/assets/block_digram.png create mode 100644 tools/inference_builder/doc/assets/inference_flow.png create mode 100644 tools/inference_builder/doc/platform-guide.md create mode 100644 tools/inference_builder/doc/usage.md create mode 100644 tools/inference_builder/lib/__init__.py create mode 100644 tools/inference_builder/lib/asset_manager.py create mode 100644 tools/inference_builder/lib/codec.py create mode 100644 tools/inference_builder/lib/errors.py create mode 100644 tools/inference_builder/lib/inference.py create mode 100644 tools/inference_builder/lib/responder.py create mode 100644 tools/inference_builder/lib/utils.py create mode 100644 tools/inference_builder/mcp.png create mode 100644 tools/inference_builder/mcp/QUICK_NORMALIZATION_REFERENCE.md create mode 100644 tools/inference_builder/mcp/README-MCP.md create mode 100644 tools/inference_builder/mcp/STD_NORMALIZATION_CALCULATOR.md create mode 100644 tools/inference_builder/mcp/examples.md create mode 100644 tools/inference_builder/mcp/mcp_server.py create mode 100644 tools/inference_builder/mcp/setup_mcp.py create mode 100644 tools/inference_builder/mcp/test_mcp_client.py create mode 100644 tools/inference_builder/mcp/test_mcp_server.py create mode 100644 tools/inference_builder/overview.png create mode 100644 tools/inference_builder/requirements.txt create mode 100644 tools/inference_builder/schemas/ARCHITECTURE.md create mode 100644 tools/inference_builder/schemas/README.md create mode 100644 tools/inference_builder/schemas/RESPONDERS.md create mode 100644 tools/inference_builder/schemas/backends/deepstream.schema.json create mode 100644 tools/inference_builder/schemas/backends/dummy.schema.json create mode 100644 tools/inference_builder/schemas/backends/parameters/deepstream-parameters.schema.json create mode 100644 tools/inference_builder/schemas/backends/parameters/dummy-parameters.schema.json create mode 100644 tools/inference_builder/schemas/backends/parameters/polygraphy-parameters.schema.json create mode 100644 tools/inference_builder/schemas/backends/parameters/pytorch-parameters.schema.json create mode 100644 tools/inference_builder/schemas/backends/parameters/tensorrtllm-parameters.schema.json create mode 100644 tools/inference_builder/schemas/backends/parameters/triton-parameters.schema.json create mode 100644 tools/inference_builder/schemas/backends/parameters/vllm-parameters.schema.json create mode 100644 tools/inference_builder/schemas/backends/polygraphy.schema.json create mode 100644 tools/inference_builder/schemas/backends/pytorch.schema.json create mode 100644 tools/inference_builder/schemas/backends/tensorrtllm.schema.json create mode 100644 tools/inference_builder/schemas/backends/triton.schema.json create mode 100644 tools/inference_builder/schemas/backends/vllm.schema.json create mode 100644 tools/inference_builder/schemas/common/base-model.schema.json create mode 100644 tools/inference_builder/schemas/common/base-processor.schema.json create mode 100644 tools/inference_builder/schemas/common/definitions.schema.json create mode 100644 tools/inference_builder/schemas/common/postprocessors.schema.json create mode 100644 tools/inference_builder/schemas/common/preprocessors.schema.json create mode 100644 tools/inference_builder/schemas/config.schema.json create mode 100644 tools/inference_builder/schemas/index.json create mode 100644 tools/inference_builder/schemas/validate_config.py create mode 100644 tools/inference_builder/templates/api_server/fastapi/responder.jinja.py create mode 100644 tools/inference_builder/templates/api_server/fastapi/route/inference.jinja2 create mode 100644 tools/inference_builder/templates/backend/deepstream.jinja.py create mode 100644 tools/inference_builder/templates/backend/dummy.jinja.py create mode 100644 tools/inference_builder/templates/backend/polygraphy.jinja.py create mode 100644 tools/inference_builder/templates/backend/pytorch.jinja.py create mode 100644 tools/inference_builder/templates/backend/tensorrtllm.jinja.py create mode 100644 tools/inference_builder/templates/backend/triton.jinja.py create mode 100644 tools/inference_builder/templates/backend/vllm.jinja.py create mode 100644 tools/inference_builder/templates/client/test_runner.jinja.py create mode 100644 tools/inference_builder/templates/common/config.jinja.py create mode 100644 tools/inference_builder/templates/common/custom.__init__.jinja.py create mode 100644 tools/inference_builder/templates/generic/model.jinja.py create mode 100644 tools/inference_builder/templates/responder/add_file.jinja.py create mode 100644 tools/inference_builder/templates/responder/add_live_stream.jinja.py create mode 100644 tools/inference_builder/templates/responder/del_file.jinja.py create mode 100644 tools/inference_builder/templates/responder/del_live_stream.jinja.py create mode 100644 tools/inference_builder/templates/responder/healthy_ready.jinja.py create mode 100644 tools/inference_builder/templates/responder/infer.jinja.py create mode 100644 tools/inference_builder/templates/responder/list_files.jinja.py create mode 100644 tools/inference_builder/templates/responder/list_live_streams.jinja.py create mode 100644 tools/inference_builder/templates/serverless/inference.jinja.py create mode 100644 tools/inference_builder/templates/triton/model.jinja.py create mode 100644 tools/inference_builder/tools/trt_build.py diff --git a/tools/inference_builder/.Dockerfile.builder b/tools/inference_builder/.Dockerfile.builder new file mode 100644 index 00000000..a0e357cf --- /dev/null +++ b/tools/inference_builder/.Dockerfile.builder @@ -0,0 +1,42 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Dockerfile.builder +FROM python:3.10-slim + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + protobuf-compiler \ + git \ + default-jre \ + && rm -rf /var/lib/apt/lists/* + +# Configure pip to use NVIDIA's PyPI +ENV PIP_INDEX_URL=https://urm.nvidia.com/artifactory/api/pypi/nv-shared-pypi/simple + +# Install NIM tools and other Python dependencies +RUN pip install --no-cache-dir \ + openapi-generator-cli + +# Install project dependencies +COPY requirements.txt /tmp/ +RUN pip install --no-cache-dir -r /tmp/requirements.txt + +# Set JAVA_HOME +ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 +ENV PATH="$JAVA_HOME/bin:$PATH" + +# Set working directory +WORKDIR /workspace diff --git a/tools/inference_builder/.gitattributes b/tools/inference_builder/.gitattributes new file mode 100644 index 00000000..58cee12d --- /dev/null +++ b/tools/inference_builder/.gitattributes @@ -0,0 +1,7 @@ +builder/boilerplates/nim/** merge=ours +builder/boilerplates/triton/** merge=ours +templates/api_server/nim/** merge=ours +templates/api_server/triton/** merge=ours +builder/allowed_servers.txt merge=ours +.gitlab-ci.yml merge=ours +builder/samples/tao/ib_client.py merge=ours diff --git a/tools/inference_builder/.gitignore b/tools/inference_builder/.gitignore new file mode 100644 index 00000000..ee1eb869 --- /dev/null +++ b/tools/inference_builder/.gitignore @@ -0,0 +1,12 @@ +**/__pycache__ +*.swp +*.vscode +.vscode/** +.vscode +dist +.venv +output +generated_client +*tmp* +*.tgz +.tmp diff --git a/tools/inference_builder/.gitkeep b/tools/inference_builder/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/tools/inference_builder/.gitmodules b/tools/inference_builder/.gitmodules new file mode 100644 index 00000000..5cb67da8 --- /dev/null +++ b/tools/inference_builder/.gitmodules @@ -0,0 +1,3 @@ +[submodule "dependencies/triton-inference-server/common"] + path = dependencies/triton-inference-server/common + url = https://github.com/triton-inference-server/common diff --git a/tools/inference_builder/CONTRIBUTING.md b/tools/inference_builder/CONTRIBUTING.md new file mode 100644 index 00000000..f8df0d30 --- /dev/null +++ b/tools/inference_builder/CONTRIBUTING.md @@ -0,0 +1,44 @@ +## Inference Builder OSS Contribution Rules + +#### Signing Your Work + +* We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. + + * Any contribution which contains commits that are not Signed-Off will not be accepted. + +* To sign off on a commit you simply use the `--signoff` (or `-s`) option when committing your changes: + ```bash + $ git commit -s -m "Add cool feature." + ``` + This will append the following to your commit message: + ``` + Signed-off-by: Your Name + ``` + +* Full text of the DCO: + + ``` + Developer Certificate of Origin + Version 1.1 + + Copyright (C) 2004, 2006 The Linux Foundation and its contributors. + 1 Letterman Drive + Suite D4700 + San Francisco, CA, 94129 + + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + ``` + + ``` + Developer's Certificate of Origin 1.1 + + By making a contribution to this project, I certify that: + + (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or + + (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or + + (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. + + (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. + ``` diff --git a/tools/inference_builder/LICENSE b/tools/inference_builder/LICENSE new file mode 100644 index 00000000..56ee3c8c --- /dev/null +++ b/tools/inference_builder/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/README.md b/tools/inference_builder/README.md new file mode 100644 index 00000000..17fc7972 --- /dev/null +++ b/tools/inference_builder/README.md @@ -0,0 +1,207 @@ +# Inference Builder + +## Overview + +Inference Builder is a tool that automatically generates inference pipelines and integrates them into either a microservice or a standalone application. It takes an inference configuration file and an OpenAPI specification (when integrated with an HTTP server) as inputs, and may also require custom code snippets in certain cases. + +The output of the tool is a Python package that can be used to build a microservice container image with a customized Dockerfile. + +![Overview](overview.png) + +The Inference Builder consists of three major components: + +- Code templates: These are reusable modules for various inference backends and frameworks, as well as for API servers. They are optimized and tested, making them suitable for any model with specified inputs, outputs, and configuration parameters. +- Common inference flow: It serves as the core logic that standardizes the end-to-end inference process—including data loading and pre-processing, model inference, post-processing, and integration with the API server. It supports pluggable inference backends and frameworks, enabling flexibility and performance optimization. +- Command line tool: It generates a source code package by combining predefined code templates with the Common Inference Flow. It also automatically produces corresponding test cases and evaluation scripts to support validation and performance assessment. + +Visit our [documentation](doc) for more details: + +- [Inference Builder Usage](doc/usage.md) +- [Inference Builder Architecture](doc/architecture.md) + +## Getting started + +First, be sure your system meets the requirement. + +| Operating System | Python | CPU | GPU[^1] | +|:-------------------|:-------|:---------------|:-----------------------------| +|Ubuntu 24.04 |3.12 | x86, aarch64 |Nvidia ADA, Hopper, Blackwell | + +[^1]: If you only generate the inference pipeline without running it, no GPU is required. + +Next, follow these steps to get started: + +### Install prerequisites + +```bash +sudo apt update +sudo apt install protobuf-compiler +sudo apt install python3.12-venv python3.12-dev +``` + +**Note for TEGRA users:** If you're using a TEGRA device, you'll also need to install the Docker buildx plugin: + +```bash +sudo apt install docker-buildx +``` + +### Clone the repository + +```bash +git clone https://github.com/NVIDIA-AI-IOT/inference_builder +``` + +### Set up the virtual environment + +```bash +cd inference_builder +git submodule update --init --recursive +python3 -m venv .venv +source .venv/bin/activate +pip3 install -r requirements.txt +``` + +## Play with the examples + +Docker environment must be properly set up with below packages for building and running the examples: + +- **Docker**: [Installation Guide](https://docs.docker.com/desktop/setup/install/linux/ubuntu/) +- **Docker Compose**: [Installation Guide](https://docs.docker.com/desktop/setup/install/linux/ubuntu/) +- **NVIDIA Container Toolkit**: [Installation Guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) + + +Ensure nvidia runtime added to `/etc/docker/daemon.json` to run GPU-enabled containers + +```bash +{ + "runtimes": { + "nvidia": { + "args": [], + "path": "nvidia-container-runtime" + } + } +} +``` + +The `docker` group must exist in your system, please check if it has been created using `getent group docker`. Your current user must belong to the `docker` group, If not, run the command below, then log out and back in for the group change to take effect. + +```bash +sudo usermod -aG docker $USER +``` + +Now you can try [our examples](builder/samples/README.md) to learn more. These examples span all supported backends and demonstrate their distinct inference flows. + +![Inference FLow of Different Backend](doc/assets/inference_flow.png) + +## Benefit of using Inference Builder + +Compared to manually crafting inference source code, Inference Builder offers developers the following advantages: +- Separation of concerns: Introduces a new programming paradigm that decouples inference data flow and server logic from the model implementation, allowing developers to focus solely on model behavior. +- Backend flexibility: Standardizes data flow across different inference backends, enabling developers to switch to the optimal backend for their specific requirement without rewriting the entire pipeline. +- Hardware acceleration: Automatically enables GPU-accelerated processing to boost performance. +- Streaming support: Provides built-in support for streaming protocols such as RTSP with minimal configuration. +- Standardized testing: Automates and standardizes test case generation to simplify validation and evaluation workflows. + +## MCP Integration + +Inference Builder includes MCP (Model Context Protocol) integration, enabling AI-assisted pipeline generation directly within Cursor or Claude Code. With MCP, you can use natural language to generate inference pipelines, build Docker images, and explore sample configurations. + +For detailed tool reference and advanced usage, see [mcp/README-MCP.md](mcp/README-MCP.md). + +### Prerequisites + +Before setting up MCP, ensure you have completed the [Getting Started](#getting-started) steps above. + +Ensure that you are in the repository's root directory. + +### Set Up for Cursor + +1. **Generate the MCP configuration** + + For a global configuration (available across all projects): + ```bash + python3 mcp/setup_mcp.py ~/.cursor/mcp.json + ``` + + For a project-specific configuration: + ```bash + python3 mcp/setup_mcp.py /path/to/your_project/.cursor/mcp.json + ``` + +2. **Open your project folder and verify the MCP server is successfully loaded** + + In Cursor, navigate to **File > Preferences > Cursor Settings > MCP**. You should see: + + ![MCP Server](mcp.png) + + A green status icon next to `deepstream-inference-builder` indicates the server is connected. + +3. **Start using the MCP tools:** + + Start a new Cursor agent and invoke the tools by mentioning "deepstream inference builder" in your prompt: + - "Show me what sample configurations are available from the inference builder?" + - "Generate a DeepStream object detection pipeline using the inference builder with PeopleNet transformer model from NGC." + +### Set Up for Claude Code + +1. **Generate the MCP configuration:** + + For a global configuration: + ```bash + python3 mcp/setup_mcp.py ~/.claude/.mcp.json + ``` + + For a project-specific configuration: + ```bash + python3 mcp/setup_mcp.py /path/to/your_project/.mcp.json + ``` + +2. **Start Claude Code from your project folder and Verify the MCP server is connected:** + + Run `/mcp` in the Claude Code console. You should see: + ``` + ❯ deepstream-inference-builder · ✔ connected + ``` + +3. **Start using the MCP tools:** + + Simply ask Claude Code to perform tasks by mentioning "deepstream inference builder" in your prompt: + - "Show me what sample configurations are available from the inference builder?" + - "Generate a DeepStream object detection pipeline using the inference builder with PeopleNet transformer model from NGC." + +### Available MCP Tools + +| Tool | Description | +|------|-------------| +| `generate_inference_pipeline` | Generate inference pipelines from YAML configuration files | +| `build_docker_image` | Build Docker images from generated pipelines | +| `docker_run_image` | Run Docker images for testing and troubleshooting | +| `prepare_model_repository` | Download models from NGC or HuggingFace and prepare repositories | +| `generate_nvinfer_config` | Generate DeepStream nvinfer runtime configuration files | + +### Available MCP Resources + +| Resource | Description | +|----------|-------------| +| `docs://README.md` | Project documentation | +| `docs://mcp/README-MCP.md` | MCP integration documentation | +| `schema://config.schema.json` | Configuration schema reference | +| `samples://config/*` | Sample pipeline configurations | +| `samples://dockerfile/*` | Sample Dockerfiles | +| `samples://processor/*` | Sample preprocessors and postprocessors | + +### Sample Prompts + +You can now try out the [example prompts](mcp/examples.md) using either Cursor or Claude Code. + +## Contributing + +Contributions are welcome! Please feel free to submit a PR. + + +## Project status and roadmap + +The project is under active development and the following features are expected to be supported in the near future: + +- Support for more backends and frameworks such as SGLANG. +- Support for more model types such as speech models. diff --git a/tools/inference_builder/VERSION b/tools/inference_builder/VERSION new file mode 100644 index 00000000..0ea3a944 --- /dev/null +++ b/tools/inference_builder/VERSION @@ -0,0 +1 @@ +0.2.0 diff --git a/tools/inference_builder/builder/__init__.py b/tools/inference_builder/builder/__init__.py new file mode 100644 index 00000000..3159bfe6 --- /dev/null +++ b/tools/inference_builder/builder/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tools/inference_builder/builder/allowed_servers.txt b/tools/inference_builder/builder/allowed_servers.txt new file mode 100644 index 00000000..08e5d42f --- /dev/null +++ b/tools/inference_builder/builder/allowed_servers.txt @@ -0,0 +1,3 @@ +fastapi +serverless + diff --git a/tools/inference_builder/builder/boilerplates/fastapi/cookiecutter.json b/tools/inference_builder/builder/boilerplates/fastapi/cookiecutter.json new file mode 100644 index 00000000..ebeca75a --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/fastapi/cookiecutter.json @@ -0,0 +1,3 @@ +{ + "service_name": "my-service" +} diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/__main__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/__main__.py new file mode 100644 index 00000000..b5442ae4 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/__main__.py @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import server.inference + +if __name__ == "__main__": + server.inference.main() \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/config/__init__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/config/__init__.py new file mode 100644 index 00000000..f9c99939 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/config/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/custom/__init__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/custom/__init__.py new file mode 100644 index 00000000..f9c99939 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/custom/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/lib/__init__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/lib/__init__.py new file mode 100644 index 00000000..f9c99939 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/lib/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/server/__init__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/server/__init__.py new file mode 100644 index 00000000..f9c99939 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/server/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/serverless/cookiecutter.json b/tools/inference_builder/builder/boilerplates/serverless/cookiecutter.json new file mode 100644 index 00000000..ebeca75a --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/serverless/cookiecutter.json @@ -0,0 +1,3 @@ +{ + "service_name": "my-service" +} diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/__main__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/__main__.py new file mode 100644 index 00000000..613fefcd --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/__main__.py @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import app.inference + +if __name__ == "__main__": + app.inference.main() \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/app/__init__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/app/__init__.py new file mode 100644 index 00000000..3159bfe6 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/app/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/config/__init__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/config/__init__.py new file mode 100644 index 00000000..3159bfe6 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/config/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/custom/__init__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/custom/__init__.py new file mode 100644 index 00000000..3159bfe6 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/custom/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/lib/__init__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/lib/__init__.py new file mode 100644 index 00000000..3159bfe6 --- /dev/null +++ b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/lib/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tools/inference_builder/builder/main.py b/tools/inference_builder/builder/main.py new file mode 100644 index 00000000..e8085c30 --- /dev/null +++ b/tools/inference_builder/builder/main.py @@ -0,0 +1,677 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import base64 +import tempfile +import shutil +from omegaconf import OmegaConf +import cookiecutter.main +import cookiecutter +import logging +from typing import Dict, List +from pathlib import Path +from utils import get_resource_path, copy_files, create_tar_gz +from triton.utils import generate_pbtxt +from omegaconf.errors import ConfigKeyError +from jinja2 import Environment, FileSystemLoader +import ast +import os +import sys +import subprocess +import validate +import re +import json +import sys + +# Import schema validation functions +try: + from jsonschema import Draft7Validator +except ImportError: + Draft7Validator = None + logging.warning("jsonschema not installed. Schema validation will be skipped. Install with: pip install jsonschema") + +""" +Inference Builder Main Module + +Security Features: +- Input validation for file paths and directory paths to prevent directory traversal attacks +- Server type validation against allowed values to prevent injection +- Safe subprocess calls using argument lists instead of shell string interpolation +- Comprehensive argument validation in main function to prevent command injection +- Logging of all executed commands for audit trails +""" + +LICENSE_HEADER = """ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" + + +def load_allowed_servers(file_path: str = None) -> List[str]: + """Load allowed server types from a text file. + + Args: + file_path: Path to the text file containing allowed server types. + If None, uses the default 'allowed_servers.txt' + in the builder directory. + + Returns: + List of allowed server type strings. + + Raises: + FileNotFoundError: If the configuration file is not found. + ValueError: If the file is empty or contains invalid entries. + """ + if file_path is None: + # Use default file in the same directory as this script + script_dir = Path(__file__).parent + file_path = script_dir / "allowed_servers.txt" + else: + file_path = Path(file_path) + + if not file_path.exists(): + raise FileNotFoundError( + f"Allowed servers configuration file not found: {file_path}" + ) + + allowed_servers = [] + with open(file_path, 'r', encoding='utf-8') as f: + for line in f: + # Strip whitespace and ignore empty lines and comments + line = line.strip() + if line and not line.startswith('#'): + allowed_servers.append(line) + + if not allowed_servers: + raise ValueError(f"No valid server types found in {file_path}") + + return allowed_servers + + +# Load allowed server types from configuration file +ALLOWED_SERVER = load_allowed_servers() + + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger("Main") +OmegaConf.register_new_resolver("multiline", lambda x: x, replace=False) + + +def validate_file_path(file_path: str) -> str: + """Validate and sanitize a file path to prevent directory traversal and command injection. + + Returns: + str: Validated and resolved absolute file path. + Raises: + ValueError: If path is invalid or potentially dangerous. + """ + if not file_path: + raise ValueError("File path cannot be empty") + + try: + abs_path = os.path.abspath(file_path) + resolved_path = os.path.realpath(abs_path) + except (OSError, ValueError) as e: + raise ValueError(f"Invalid file path: {e}") + + if ".." in os.path.normpath(file_path): + raise ValueError("Path traversal detected in file path") + + invalid_chars = ['<', '>', ':', '"', '|', '?', '*'] + if any(char in file_path for char in invalid_chars): + raise ValueError("Invalid characters in file path") + + system_dirs = ['/etc', '/sys', '/proc', '/dev', '/boot', '/usr/bin', '/usr/sbin'] + for sys_dir in system_dirs: + if resolved_path.startswith(sys_dir): + raise ValueError(f"Access to system directory {sys_dir} is not allowed") + + path = Path(resolved_path) + if not path.exists() or not path.is_file(): + raise ValueError(f"File not found or not a regular file: {resolved_path}") + + return resolved_path + + +def validate_directory_path(dir_path: str) -> str: + """Validate and sanitize a directory path to prevent directory traversal attacks. + + Returns: + str: Validated and resolved absolute directory path. + Raises: + ValueError: If path is invalid or potentially dangerous. + """ + if not dir_path: + raise ValueError("Directory path cannot be empty") + + try: + abs_path = os.path.abspath(dir_path) + resolved_path = os.path.realpath(abs_path) + except (OSError, ValueError) as e: + raise ValueError(f"Invalid directory path: {e}") + + if ".." in os.path.normpath(dir_path): + raise ValueError("Path traversal detected in directory path") + + invalid_chars = ['<', '>', ':', '"', '|', '?', '*'] + if any(char in dir_path for char in invalid_chars): + raise ValueError("Invalid characters in directory path") + + system_dirs = ['/etc', '/sys', '/proc', '/dev', '/boot', '/usr/bin', '/usr/sbin'] + for sys_dir in system_dirs: + if resolved_path.startswith(sys_dir): + raise ValueError(f"Access to system directory {sys_dir} is not allowed") + + return resolved_path + + +def validate_server_type(server_type: str) -> bool: + """Validate server type against allowed values.""" + return server_type in ALLOWED_SERVER + + +def validate_config_against_schema(config_dict: Dict, schema_dir: Path = None) -> bool: + """Validate configuration against JSON schema. + + Args: + config_dict: Configuration dictionary to validate + schema_dir: Directory containing schema files (default: ../schemas from this file) + + Returns: + True if valid, False otherwise + """ + if Draft7Validator is None: + logger.warning("Skipping schema validation (jsonschema not installed)") + return True + + # Determine schema directory + if schema_dir is None: + schema_dir = Path(__file__).parent.parent / "schemas" + + if not schema_dir.exists(): + logger.warning(f"Schema directory not found: {schema_dir}. Skipping schema validation.") + return True + + # Load main schema + schema_path = schema_dir / "config.schema.json" + try: + with open(schema_path, 'r') as f: + schema = json.load(f) + except FileNotFoundError: + logger.warning(f"Schema file not found: {schema_path}. Skipping schema validation.") + return True + except json.JSONDecodeError as e: + logger.error(f"Invalid schema file: {e}") + return False + + # Validate configuration + try: + validator = Draft7Validator(schema) + errors = list(validator.iter_errors(config_dict)) + + if not errors: + logger.info("✓ Configuration schema validation passed") + return True + + logger.error(f"✗ Configuration validation failed with {len(errors)} error(s):") + for i, error in enumerate(errors, 1): + path = '.'.join(str(p) for p in error.path) if error.path else 'root' + logger.error(f" Error {i} at '{path}': {error.message}") + + if error.context: + for ctx_error in error.context: + logger.error(f" - {ctx_error.message}") + + return False + + except Exception as e: + logger.error(f"Error during schema validation: {e}") + return False + + +def get_version(): + version_file = Path(__file__).parent.parent / "VERSION" + with open(version_file, 'r') as f: + return f.read().strip() + + +def build_args(parser): + parser.add_argument( + "-v", + "--version", + action="version", + version=f"%(prog)s {get_version()}" + ) + parser.add_argument( + "--server-type", + type=str, + nargs='?', + default='fastapi', + choices=ALLOWED_SERVER, + help="Choose the server type" + ) + parser.add_argument( + "-o", + "--output-dir", + type=str, + nargs='?', + default='.', + help="Output directory" + ) + parser.add_argument( + "-a", + "--api-spec", + type=argparse.FileType('r'), + nargs='?', + help="File for OpenAPI specification" + ) + parser.add_argument( + "-c", + "--custom-module", + type=argparse.FileType('r'), + nargs='*', + help="Custom python modules" + ) + parser.add_argument( + "-x", + "--exclude-lib", + action='store_true', + help="Don't include common lib to the generated code." + ) + parser.add_argument( + "-t", + "--tar-output", + action='store_true', + help="Zip the output to a single file" + ) + parser.add_argument("config", type=str, help="Path the the configuration") + parser.add_argument( + "--validation-dir", + type=str, + help="valid validation directory path to build validator" + ) + parser.add_argument( + "--no-docker", + action="store_true", + help="Use local OpenAPI Generator instead of Docker for OpenAPI client generation") + parser.add_argument( + "--test-cases-abs-path", + action="store_true", + help="Use absolute paths in generated test_cases.yaml" + ) + +def build_tree(server_type, config, temp_dir): + cookiecutter.main.cookiecutter( + get_resource_path(f"builder/boilerplates/{server_type}"), + no_input=True, + extra_context={"service_name": config.name}, + output_dir=temp_dir) + return Path(temp_dir) / Path(config.name) + +def build_custom_modules(custom_modules: List, tree): + cls_list = [] + tpl_dir = get_resource_path("templates") + jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) + tree = tree / "custom" + for m in custom_modules: + filename = os.path.basename(m.name) + module_id = os.path.splitext(filename)[0] + with m as f: + valid = False + source = f.read() + py = ast.parse(source) + for node in ast.walk(py): + if isinstance(node, ast.ClassDef): + name = None + has_call = False + for cls_node in node.body: + if isinstance(cls_node, ast.Assign): + for target in cls_node.targets: + if isinstance(target, ast.Name) and target.id == "name": + name = ast.literal_eval(cls_node.value) + if isinstance(cls_node, ast.FunctionDef): + if cls_node.name == "__call__": + has_call = True + if name and has_call: + if next((i for i in cls_list if i["name"] == name), None): + logger.warning(f"Custom class {name} defined more than once") + continue + cls_list.append({ + "name": name, + "module": module_id, + "class_name": node.name + }) + valid = True + if valid: + # write the python module + target_path = tree / f"{module_id}.py" + with open(target_path, "w") as t: + t.write(source) + custom_tpl = jinja_env.get_template('common/custom.__init__.jinja.py') + output = custom_tpl.render(classes=cls_list) + with open(tree/"__init__.py", 'w') as f: + f.write(output) + +def build_inference(server_type, config, output_dir: Path): + tpl_dir = get_resource_path("templates") + jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) + triton_model_repo_dir = output_dir/'model_repo' + triton_tpl = jinja_env.get_template("triton/model.jinja.py") + generic_tpl = jinja_env.get_template("generic/model.jinja.py") + + # collect the backend: build model.py and pbtxt if the backend is triton + t_backends = [] + for model in config.models: + backend_spec = model.backend.split('/') + if backend_spec[0] == "triton": + os.makedirs(triton_model_repo_dir/f"{model.name}/1", exist_ok=True) + if len(backend_spec) < 2: + raise Exception("Triton backend needs a triton backend type") + if backend_spec[1] == "python": + if len(backend_spec) < 3: + raise Exception("Triton python backend needs an implementation type") + # generating triton model for triton backend + target_dir = triton_model_repo_dir/f"{model.name}/1" + # Triton python backend needs a model.py + backend_tpl = jinja_env.get_template(f"backend/{backend_spec[2]}.jinja.py") + backend = backend_tpl.render(server_type=server_type) + output = triton_tpl.render(backends=[backend], top_level=False, license=LICENSE_HEADER) + with open (target_dir/"model.py", 'w') as o: + o.write(output) + # triton python backend to communicate with triton fastapi server + if "triton" not in t_backends: + t_backends.append("triton") + # write the pbtxt + pbtxt_str = generate_pbtxt(OmegaConf.to_container(model), backend_spec[1] ) + pbtxt_path = triton_model_repo_dir/model.name/"config.pbtxt" + with open(pbtxt_path, 'w') as f: + f.write(pbtxt_str) + else: + bare_backend = backend_spec[0] + if bare_backend not in t_backends: + t_backends.append(bare_backend) + + # create backends and model.py + backends = [] + if server_type == "serverless": + target_dir = output_dir / "app" + elif server_type == "triton": + target_dir = triton_model_repo_dir/f"{config.name}"/"1/" + else: + target_dir = output_dir / "server" + for backend in t_backends: + backend_tpl = jinja_env.get_template(f"backend/{backend}.jinja.py") + backends.append(backend_tpl.render(server_type=server_type)) + if server_type == "triton": + # render top level triton backend + output = triton_tpl.render(backends=backends, top_level=True) + else: + # render generic model.y + output = generic_tpl.render(backends=backends, license=LICENSE_HEADER) + with open (target_dir/"model.py", 'w') as o: + o.write(output) + +def build_serverless(name: str, output_dir: Path): + output_dir = output_dir / "app" + tpl_dir = get_resource_path("templates") + jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) + app_tpl = jinja_env.get_template("serverless/inference.jinja.py") + output = app_tpl.render(service_name=name, license=LICENSE_HEADER) + with open(output_dir/"inference.py", 'w') as f: + f.write(output) + +def build_server(server_type, model_name, api_spec, config: Dict, output_dir): + output_dir = output_dir / "server" + # generate pydantic data models and inference base class from swagger spec + tpl_dir = get_resource_path("templates") + jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) + api_tpl_dir = get_resource_path(f"templates/api_server/{server_type}/route") + + # Use safer subprocess call with argument list instead of shell string interpolation + # Find fastapi-codegen in the same directory as the current Python executable + python_dir = Path(sys.executable).parent + fastapi_codegen = python_dir / "fastapi-codegen" + + command = [ + str(fastapi_codegen), + "--input", api_spec.name, + "--output", str(output_dir), + "--output-model-type", "pydantic_v2.BaseModel", + "--template-dir", str(api_tpl_dir), + "-m", "data_model.py", + "--disable-timestamp" + ] + + logger.info(f"Executing command: {' '.join(command)}") + result = subprocess.run(command, capture_output=True, text=True) + if result.returncode != 0: + raise Exception(f"Failed to generate fastapi data models: {result.stderr}") + + responders = [] + for name, r in config["responders"].items(): + responder = { + "name": name, + "operation": r["operation"], + } + tpl = jinja_env.get_template(f"responder/{name}.jinja.py") + responder["implementation"] = tpl.render(**responder) + responders.append(responder) + svr_tpl = jinja_env.get_template(f"api_server/{server_type}/responder.jinja.py") + # render the responder.py + if server_type == "triton": + req_cls = [k for k in config["responders"]["infer"]["requests"].keys()] + res_cls = [k for k in config["responders"]["infer"]["responses"].keys()] + triton_config = { + "request_class": req_cls[0], + "response_class": res_cls[0], + "streaming_response_class": res_cls[1] if len(res_cls) > 1 else res_cls[0] + } + output = svr_tpl.render( + service_name=model_name, + license=LICENSE_HEADER, + responders=responders, + triton=triton_config + ) + elif server_type == "fastapi": + output = svr_tpl.render( + service_name=model_name, + license=LICENSE_HEADER, + responders=responders + ) + else: + raise ValueError(f"Unsupported server type: {server_type}") + with open(output_dir/"responder.py", 'w') as f: + f.write(output) + + +def generate_configuration(config, tree): + def encode_templates(templates): + encoded_templates = dict() + for key, value in templates.items(): + # these are json templates and need be encoded before being + # embeded as yaml strings + if isinstance(value, str): + encoded_templates[key] = base64.b64encode(value.encode()) + else: + encoded_templates[key] = value + return encoded_templates + # base64 encode the templates if found in the config + config_map = OmegaConf.to_container(config) + if "input" not in config_map: + config_map["input"] = [] + for m in config_map["models"]: + for i in m["input"]: + config_map["input"].append(i) + if "output" not in config_map: + config_map["output"] = [] + for m in config_map["models"]: + for o in m["output"]: + config_map["output"].append(o) + if "server" in config_map: + try: + for responder in config_map["server"]["responders"].values(): + input_templates = responder.get("requests", None) + output_templates = responder.get("responses", None) + if input_templates: + responder["requests"] = encode_templates(input_templates) + if output_templates: + responder["responses"] = encode_templates(output_templates) + except ConfigKeyError: + raise ValueError("Server config error: responders not found") + # write the config to a python file + tpl_dir = get_resource_path("templates") + jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) + config_tpl = jinja_env.get_template('common/config.jinja.py') + config = OmegaConf.create(config_map) + output = config_tpl.render(config=OmegaConf.to_yaml(config), license=LICENSE_HEADER) + with open(tree/"config/__init__.py", 'w') as f: + f.write(output) + + +def main(args): + # Defense-in-depth: validate and sanitize all path arguments + try: + args.config = validate_file_path(args.config) + except ValueError as e: + raise ValueError(f"Invalid config file path: {e}") + + if not validate_server_type(args.server_type): + raise ValueError(f"Invalid server type: {args.server_type}") + + try: + args.output_dir = validate_directory_path(args.output_dir) + except ValueError as e: + raise ValueError(f"Invalid output directory: {e}") + + if args.validation_dir: + try: + args.validation_dir = validate_directory_path(args.validation_dir) + except ValueError as e: + raise ValueError(f"Invalid validation directory: {e}") + + if args.custom_module: + for module in args.custom_module: + try: + validate_file_path(module.name) + except ValueError as e: + raise ValueError(f"Invalid custom module file path: {e}") + + # Load configuration + logger.info(f"Loading configuration from: {args.config}") + config = OmegaConf.load(args.config) + + # Validate configuration against JSON schema + logger.info("Validating configuration against JSON schema...") + config_dict = OmegaConf.to_container(config, resolve=True) + + if not validate_config_against_schema(config_dict): + logger.error("Configuration validation failed. Fix the errors above and try again.") + sys.exit(1) + + with tempfile.TemporaryDirectory() as temp_dir: + tree = build_tree(args.server_type, config, temp_dir) + if args.server_type == "serverless": + build_serverless(config.name, tree) + else: + build_server(args.server_type, config.name, args.api_spec, OmegaConf.to_container(config.server), tree) + build_inference(args.server_type, config, tree) + generate_configuration(config, tree) + if not args.exclude_lib : + copy_files(get_resource_path("lib"), tree/"lib") + if args.custom_module: + build_custom_modules(args.custom_module, tree) + if args.tar_output: + target = Path(args.output_dir).resolve() / f"{config.name}.tgz" + create_tar_gz(target, tree) + else: + try: + target = Path(args.output_dir).resolve() / config.name + shutil.copytree(tree, target, dirs_exist_ok=True) + except FileExistsError: + logging.error(f"{target} already exists in the output directory") + # Build validator if validation dir provided + if args.validation_dir: + try: + validation_dir = Path(args.validation_dir).resolve() + api_spec_path = Path(args.api_spec.name).resolve() + if validate.build_validation(api_spec_path, validation_dir, not args.no_docker, args.test_cases_abs_path): + logger.info("✓ Successfully built validation") + else: + logger.error("✗ Failed to build validation") + except Exception as e: + logger.error(f"validation build failed: {e}") + # Continue with other builds + # Continue to finish the build without validation + print("Build completed successfully") + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser("Inference Builder") + build_args(parser) + + try: + args = parser.parse_args() + except Exception as e: + print(f"Error: Argument parsing failed: {str(e)}") + sys.exit(1) + + # Comprehensive security validation + validation_errors = [] + + # Validate and sanitize config file path + try: + args.config = validate_file_path(args.config) + except ValueError as e: + validation_errors.append(f"Invalid config file path: {e}") + + # Validate server type (already constrained by argparse choices) + if not validate_server_type(args.server_type): + validation_errors.append(f"Invalid server type: {args.server_type}") + + # Validate and sanitize output directory + try: + args.output_dir = validate_directory_path(args.output_dir) + except ValueError as e: + validation_errors.append(f"Invalid output directory: {e}") + + # Validate and sanitize validation directory + if args.validation_dir: + try: + args.validation_dir = validate_directory_path(args.validation_dir) + except ValueError as e: + validation_errors.append(f"Invalid validation directory: {e}") + + # Exit if any validation errors + if validation_errors: + print("Security validation failed:") + for error in validation_errors: + print(f" - {error}") + sys.exit(1) + + main(args) \ No newline at end of file diff --git a/tools/inference_builder/builder/openapitools.json b/tools/inference_builder/builder/openapitools.json new file mode 100644 index 00000000..b3ae3aa4 --- /dev/null +++ b/tools/inference_builder/builder/openapitools.json @@ -0,0 +1,8 @@ +{ + "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "7.14.0" + } +} + diff --git a/tools/inference_builder/builder/samples/README.md b/tools/inference_builder/builder/samples/README.md new file mode 100644 index 00000000..c90fb155 --- /dev/null +++ b/tools/inference_builder/builder/samples/README.md @@ -0,0 +1,49 @@ +## Introduction + +The examples in this folder demonstrates how to use Inference Builder to create inference pipelines with various backend, such as Deepstream, TensorRT, Triton, TensorRT-LLM, etc. + +With the provided Dockerfile, you can package the generated pipeline into a container image and run it as a standalone app or a microservice. Build steps vary by backend. Check the corresponding README.md in each example folder for exact instructions. For examples that run as microservices, we've provided an all-in-one [docker-compose.yml](./docker-compose.yml) to manage them together. You can customize the container behavior by changing the configurations there accordingly. + +## Models + +Some of the models for examples are from the NVIDIA GPU Cloud (NGC) repository, and certain models from NGC require active subscription. Please download and install the NGC CLI from the [NGC page](https://org.ngc.nvidia.com/setup/installers/cli) and follow the [NGC CLI Guide](https://docs.ngc.nvidia.com/cli/index.html) to set up the tool. + +## List of Examples + +### DeepStream Backend Examples + +| Name | Description | Models | Backend | Output | +|------|-------------|---------|---------|---------| +| [ds_app](./ds_app/) | examples of building standalone deepstream application | TAO Computer Vision models | Deepstream | command line interface application | +| [tao](./tao/) | examples of building inference microservices using deepstream pipeline and fastapi | TAO Computer Vision models | Deepstream | microservice | + +### Triton Backend Examples + +| Name | Description | Models | Backend | Output | +|------|-------------|---------|---------|---------| +| [changenet](./changenet/) | example of building inference microservices with triton server | Visual ChangeNet | Triton/TensorRT | microservice | + +### TensorRT Backend Examples + +| Name | Description | Models | Backend | Output | +|------|-------------|---------|---------|---------| +| [nvclip](./nvclip/) | example of building inference microservices with TensorRT backend | NVCLIP | TensorRT | microservice | + +### TensorRT-LLM Backend Examples + +| Name | Description | Models | Backend | Output | +|------|-------------|---------|---------|---------| +| [qwen](./qwen/) | example of building inference microservices with TensorRT-LLM backend for vlm models | Qwen 2.5 VL models | TensorRT-LLM, Pytorch | microservice | + +### Multiple Model Examples + +| Name | Description | Models | Backend | Output | +|------|-------------|---------|---------|---------| +| [cradio](./cradio/) | two-stage pipeline: PeopleNet Transformer (detection) then C-RADIOv3-H (per-detection embeddings) | PeopleNet Transformer, C-RADIOv3-H | DeepStream/nvinfer, TensorRT (polygraphy) | command line interface application | + +### VLLM Backend Examples + +| Name | Description | Models | Backend | Output | +|------|-------------|---------|---------|---------| +| [vllm](./vllm/) | example of building inference microservices with vLLM backend and DeepStream MediaExtractor | Cosmos-Reason2-2B, Qwen3-VL-2B-Instruct | vLLM, DeepStream | microservice | + diff --git a/tools/inference_builder/builder/samples/changenet/Dockerfile b/tools/inference_builder/builder/samples/changenet/Dockerfile new file mode 100644 index 00000000..0ca172a0 --- /dev/null +++ b/tools/inference_builder/builder/samples/changenet/Dockerfile @@ -0,0 +1,85 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A sample Dockerfile for a Triton inference backend with DeepStream- +# accelerated ImageInputDataFlow and CVCUDA for pre-processing. + +# Pull the base image from Deepstream Triton multiarch image. +FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS builder_base + +# Install the Python dependencies required by THIS changenet sample +# backend. These versions are pinned for reproducibility and may be +# adjusted for other pipelines or environments. +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install \ + requests==2.32.3 \ + python-multipart==0.0.9 \ + aiofiles==23.2.1 \ + aiohttp==3.11.0 \ + annotated-types==0.7.0 \ + python-magic==0.4.27 \ + torch==2.7.0 --extra-index-url https://download.pytorch.org/whl/cu128 \ + torchvision==0.22.0 \ + Pillow==11.1.0 \ + open_clip_torch==2.30.0 \ + numpy==1.26.4 \ + omegaconf==2.3.0 \ + transformers==4.48.0 \ + fastapi==0.115.12 \ + uvicorn==0.29.0 \ + tritonclient[all]==2.63.0 + +# Install CVCUDA for pre-processing. +# NOTE: These .deb files are built for x86_64 and specific CUDA/Python +# versions. For different architectures or CUDA/Python versions you may +# need to update these URLs to a compatible CVCUDA release. +RUN wget https://github.com/CVCUDA/CV-CUDA/releases/download/v0.16.0/cvcuda-lib-0.16.0-cuda13-x86_64-linux.deb \ + https://github.com/CVCUDA/CV-CUDA/releases/download/v0.16.0/cvcuda-dev-0.16.0-cuda13-x86_64-linux.deb \ + https://github.com/CVCUDA/CV-CUDA/releases/download/v0.16.0/cvcuda-python3.12-0.16.0-cuda13-x86_64-linux.deb \ + && dpkg -i *.deb + +ENV TRANSFORMERS_CACHE=/tmp + +WORKDIR /workspace + +# Copy the inference flow package generated by Inference Builder. +# This tarball (here: changenet.tgz) is typically the result of running +# the builder with tar ball output enabled, and its name should match the +# generated pipeline artifact you want to deploy. +ADD changenet.tgz /workspace + +RUN groupadd --gid 1000 --non-unique nvs && \ + useradd --create-home --shell /usr/sbin/nologin --uid 1000 --non-unique --gid 1000 nvs && \ + chown 1000.1000 /workspace + +USER nvs:1000 + +# Create the entrypoint script that runs the generated +# /workspace/__main__.py (the Inference Builder pipeline entrypoint) +# and then starts Triton with /workspace/model_repo as the model repository. +RUN touch /workspace/start_server.sh && \ + chmod a+rx /workspace/start_server.sh && \ + cat > /workspace/start_server.sh <<-EOF + #!/usr/bin/env bash + set -eu + + # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + # SPDX-License-Identifier: LicenseRef-NvidiaProprietary + python3 /workspace/__main__.py & tritonserver --model-repository /workspace/model_repo +# while true; do sleep 5; done +EOF + +ENTRYPOINT ["/workspace/start_server.sh"] +CMD [] \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/changenet/README.md b/tools/inference_builder/builder/samples/changenet/README.md new file mode 100644 index 00000000..4bdb3f23 --- /dev/null +++ b/tools/inference_builder/builder/samples/changenet/README.md @@ -0,0 +1,96 @@ +# Introduction + +This sample demonstrates how to build an inference pipeline for models that use triton backend. It also shows how to incorporate CVCUDA in customized processors to accelerate media processing. + +We provide a sample Dockerfile for the example, which you can use to build a Docker image and test the microservice on any x86 system with an NVIDIA Ampere, Hopper, and Blackwell GPU. + +# Prerequisites + +**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. + +The model used in the sample can be found on NGC: https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/visual_changenet_segmentation_landsatscd + +Before downloading the model file, you need to set up your model repository: + +```bash +mkdir -p ~/.cache/model-repo && chmod 777 ~/.cache/model-repo +export MODEL_REPO=~/.cache/model-repo +``` + +## Download the model file using NGC CLI: + +```bash +ngc registry model download-version "nvidia/tao/visual_changenet_segmentation_landsatscd:deployable_v1.2" +# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default +mv visual_changenet_segmentation_landsatscd_vdeployable_v1.2 $MODEL_REPO/visual_changenet +# Change the access right for docker command +chmod 777 $MODEL_REPO/visual_changenet +chmod 666 $MODEL_REPO/visual_changenet/* # correct the permissions in case they're wrong +``` + +Run `ls $MODEL_REPO/visual_changenet -l`, be sure you have `changenet_768.onnx` in your model folder and the file permissions are correct. + +**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided above within the prerequisites section. + +## Create the optimized TensorRT Engine: + +```bash +docker login nvcr.io +docker run -it --rm --gpus all \ +-v ~/.cache/model-repo/visual_changenet/:/changenet \ +nvcr.io/nvidia/tensorrt:25.12-py3 \ +trtexec --onnx=/changenet/changenet_768.onnx --saveEngine=/changenet/model.plan --fp16 +``` + +Run `ls $MODEL_REPO/visual_changenet -l`, be sure you have `model.plan` generated in your model folder and the file permissions are correct. The process takes approximately 10 minutes and you only need to run it once unless the model file changes. + +# Build the inference flow: + +Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment, and you're already in the inference_builder folder. + +The following command activates the virtual environment and generates the inference source package in `builder/samples/changenet` + +```bash +source .venv/bin/activate +python builder/main.py \ + --server-type fastapi \ + -a builder/samples/changenet/openapi.yaml \ + -c builder/samples/changenet/processors.py \ + -o builder/samples/changenet -t \ + builder/samples/changenet/trt_changenet.yaml +``` + +# Build and run the docker image: + +The process takes about 10 minutes, though the actual time may vary depending on your hardware and network bandwidth. + +```bash +cd builder/samples +docker compose up --build ms-changenet +``` + +# Test the microservice with a client + +After the server has started successfully, open a new terminal in the inference_builder folder and launch the client to compare two sample images. A display environment is required for the client to visualize the difference between the two input pictures. + +To avoid errors related to display, you need to set the DISPLAY environment variable based on your system: + +```bash +export DISPLAY=:0 # or :1 depending on your system +``` + +Then, allow X server connections from any host: +```bash +xhost + +``` + +If the configuration is successful, you will see this message in the log: `access control disabled, clients can connect from any host`. + +Then start the client: + +```bash +source .venv/bin/activate && cd builder/samples/changenet +python ib_client.py --host 127.0.0.1 --port 8803 --file test_0.jpg golden_0.jpg +``` + +If the inference request is successfully processed, you'll get a HTTP 200 response and a new window shows the difference between two images. \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/changenet/golden_0.jpg b/tools/inference_builder/builder/samples/changenet/golden_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d1286e9afce26dd8ea09a6c1235e7eda8f828874 GIT binary patch literal 35195 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

xWLH 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 literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/changenet/ib_client.py b/tools/inference_builder/builder/samples/changenet/ib_client.py new file mode 100644 index 00000000..163a50e3 --- /dev/null +++ b/tools/inference_builder/builder/samples/changenet/ib_client.py @@ -0,0 +1,84 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import argparse +import requests, base64 +import time +import numpy as np +import os +import io +from PIL import Image + +API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC="shfklsjlfjsljgl" + + +def main(host , port, files, out_format): + if not files: + print("Need the file path for inference") + return + + # invoke_url = "http://localhost:8001/inference" + invoke_url = "http://" + host + ":" + port + "/v1/infer" + + file_exts = [] + b64_images = [] + for file in files: + file_exts.append(os.path.splitext(file)[1][1:]) + with open(file, "rb") as f: + b64_images.append(base64.b64encode(f.read()).decode()) + +# assert len(image_b64) < 180_000, \ +# "To upload larger images, use the assets API (see docs)" + + headers = { + "Authorization": "Bearer $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC", + "Accept": "application/json", + # "NVCF-ASSET-DIR": "some-temp-dir", + # "NVCF-FUNCTION-ASSET-IDS": "udjflsjo-jfoisjof-lsdfjofdj" + } + + payload = { + "input": [f"data:image/{e};base64,{i}" for e, i in zip(file_exts, b64_images)], + "model": "nvidia/changenet" + } + start_time = time.time() + response = requests.post(invoke_url, headers=headers, json=payload) + infer_time = time.time() - start_time + print(response) + print(infer_time) + + if response.status_code == 200: + output = response.json() + print(f"Usage: num_images= {output['usage']['num_images']}") + mask = base64.b64decode(output["data"]) + image_buffer = io.BytesIO(mask) + image = Image.open(image_buffer) + image.show() + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + + parser.add_argument("--host", type=str, + help= "Server IP Address", default="0.0.0.0") + parser.add_argument("--port", type=str, + help="Server port", default="8000") + parser.add_argument("--file", type=str, help="File to send for inference", nargs='*', default=None) + parser.add_argument("--format", type=str, help="Output embedding format, integer or base64", + default="integer") + + args = parser.parse_args() + main(args.host, args.port, args.file, args.format) diff --git a/tools/inference_builder/builder/samples/changenet/openapi.yaml b/tools/inference_builder/builder/samples/changenet/openapi.yaml new file mode 100644 index 00000000..8f35e32c --- /dev/null +++ b/tools/inference_builder/builder/samples/changenet/openapi.yaml @@ -0,0 +1,248 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +openapi: 3.1.0 +info: + title: NVIDIA INFERENCE SERVICE API for nvidia/changenet + description: NVIDIA INFERENCE SERVICE API + version: 1.0.0 + termsOfService: https://nvidia.com/legal/terms-of-use + contact: + name: NVIDIA Support + url: https://help.nvidia.com/ + license: + name: NVIDIA AI Foundation Models Community License + url: https://docs.nvidia.com/ai-foundation-models-community-license.pdf +tags: + - name: "NVIDIA CHANGENET API" + description: Get a segmentation representation for the difference between two pictures. + - name: "Health" + description: Health check endpoints +paths: + "/v1/health/ready": + get: + tags: + - Health + summary: Health Ready + description: Provide your implementation of readiness to know when container ready to accept traffic + operationId: health_ready_v1_health_ready_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + "/v1/infer": + post: + tags: + - "NVIDIA ChangeNet API" + summary: Change detection on images. + description: "Invokes inference for the input images." + operationId: inference + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DetectionRequest' + required: true + responses: + "200": + description: Invocation is fulfilled. + content: + application/json: + schema: + $ref: '#/components/schemas/DetectionResponse' + "202": + description: Result is pending. Client should poll using the requestId. + content: + application/json: + example: {} + schema: {} + headers: + NVCF-REQID: + description: requestId required for pooling. + schema: + type: string + format: uuid + maxLength: 36 + NVCF-STATUS: + description: Invocation status. + schema: + type: string + format: ^[a-zA-Z-]{1,64}$ + maxLength: 64 + "402": + description: Payment Required. + content: + application/json: + schema: + properties: + detail: + type: string + maxLength: 256 + format: ^[a-zA-Z-]{1,64}$ + description: Contains specific information related to the error and why it occurred. + example: You have reached your limit of credits. + type: object + title: PaymentRequiredError + "422": + description: Validation failed, provided entity could not be processed. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + example: + type: urn:nvcf-worker-service:problem-details:unprocessable-entity + title: Unprocessable Entity + status: 422 + detail: string + instance: /v2/nvcf/pexec/functions/9446dad0-ff4f-46d1-89f4-726e113cfca0 + requestId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + example: + type: urn:nvcf-worker-service:problem-details:internal-server-error + title: Internal Server Error + status: 500 + detail: string + instance: /v2/nvcf/pexec/functions/9446dad0-ff4f-46d1-89f4-726e113cfca0 + requestId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 +security: + - Token: [] +components: + securitySchemes: + Token: + type: http + scheme: bearer + schemas: + DetectionRequest: + additionalProperties: false + properties: + input: + type: array + items: + type: string + pattern: ^.*$ + maxLength: 4294967296 + maxItems: 2 + minItems: 2 + title: Input + description: 'The two of images that you want to detect change + for. Images should be in form of `data:image/{format};base64,{base64encodedimage}`. + For NVCF deployment, if the size of an image is more than 200KB, it needs to be uploaded to + a presigned S3 bucket using NVCF Asset APIs. Once uploaded you can refer + to it using the following format: ``. Accepted formats are `jpg`, `png` and `jpeg`.' + model: + type: string + enum: [nvidia/changenet] + title: Model + description: ID of the mask model. + examples: + - nvidia/changenet + type: object + required: + - input + - model + title: DetectionRequest + description: Input images for the inference request. + DetectionResponse: + type: object + properties: + data: + type: string + description: base64 encoded image for change representation + pattern: ^.*$ + maxLength: 4294967296 + model: + type: string + description: Model used to generate masks. + example: nvidia/changenet + title: Model + const: nvidia/changenet + usage: + $ref: '#/components/schemas/Usage' + description: Usage statistics for the masks request. + examples: + - num_images: 1 + additionalProperties: false + required: + - data + - usage + - model + title: DetectionResponse + description: Response schema for the inference request. + Usage: + properties: + num_images: + type: integer + format: int32 + title: Num Images + minimum: 0 + maximum: 64 + description: Number of images processed. + additionalProperties: false + type: object + required: + - num_images + title: Usage + description: Usage information for the inference request. + Errors: + properties: + type: + type: string + format: "^.{1, 128}$" + maxLength: 128 + description: Error type + title: + type: string + format: "^.{1, 128}$" + maxLength: 128 + description: Error title + status: + type: integer + format: int32 + minimum: 100 + maximum: 999 + description: Error status code + detail: + type: string + format: "^.{1, 1024}$" + maxLength: 1024 + description: Detailed information about the error + instance: + type: string + format: "^.{1, 256}$" + maxLength: 256 + description: Function instance used to invoke the request + requestId: + type: string + format: uuid + maxLength: 36 + description: UUID of the request + type: object + required: + - type + - title + - status + - detail + - instance + - requestId + title: InvokeError diff --git a/tools/inference_builder/builder/samples/changenet/payloads/payloads.jsonl b/tools/inference_builder/builder/samples/changenet/payloads/payloads.jsonl new file mode 100644 index 00000000..76efd9cd --- /dev/null +++ b/tools/inference_builder/builder/samples/changenet/payloads/payloads.jsonl @@ -0,0 +1 @@ +{"input": ["data:image/jpeg;base64,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", "data:image/jpeg;base64,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"], "model": "nvidia/changenet"} diff --git a/tools/inference_builder/builder/samples/changenet/processors.py b/tools/inference_builder/builder/samples/changenet/processors.py new file mode 100644 index 00000000..e0b1104c --- /dev/null +++ b/tools/inference_builder/builder/samples/changenet/processors.py @@ -0,0 +1,107 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import numpy as np +import cvcuda +import torch +from PIL import Image +from io import BytesIO +import base64 + +class PreprocessorCvcuda: + """This module converts the input RGB frame into the format expected by the model.""" + name = "changenet-normalizer" + def __init__(self, config): + self.device_id = config["device_id"] + self.network_size = config['network_size'] + self.mean_tensor = torch.Tensor([0.5, 0.5, 0.5]) + self.mean_tensor = self.mean_tensor.reshape(1, 1, 1, 3).cuda(self.device_id) + self.mean_tensor = cvcuda.as_tensor(self.mean_tensor, "NHWC") + self.stddev_tensor = torch.Tensor([0.5, 0.5, 0.5]) + self.stddev_tensor = self.stddev_tensor.reshape(1, 1, 1, 3).cuda(self.device_id) + self.stddev_tensor = cvcuda.as_tensor(self.stddev_tensor, "NHWC") + + def __call__(self, *args): + images = [arg for arg in args] + frame_nhwc = torch.stack(images) + resized = cvcuda.resize( + cvcuda.as_tensor(frame_nhwc, "NHWC"), + ( + frame_nhwc.shape[0], + self.network_size[1], + self.network_size[0], + frame_nhwc.shape[3], + ), + cvcuda.Interp.LINEAR, + ) + + # Convert to floating point range 0-1. + normalized = cvcuda.convertto(resized, np.float32, scale=1 / 255) + + # Normalize with mean and std-dev. + normalized = cvcuda.normalize( + normalized, + base=self.mean_tensor, + scale=self.stddev_tensor, + flags=cvcuda.NormalizeFlags.SCALE_IS_STDDEV, + ) + + # Convert it to NCHW layout and return it. + normalized = cvcuda.reformat(normalized, "NCHW") + result = torch.as_tensor(normalized.cuda(), device=f"cuda:{self.device_id}") + result = list(torch.unbind(result, dim=0)) + + return tuple(result) + +class PostprocessorCvcuda: + name = "changenet-masking" + def __init__(self, config): + self.color_map = { + "0": torch.ByteTensor([255, 255, 255]), + "1": torch.ByteTensor([255, 165, 0]), + "2": torch.ByteTensor([230, 30, 100]), + "3": torch.ByteTensor([70, 140, 0]), + "4": torch.ByteTensor([218, 112, 214]), + "5": torch.ByteTensor([0, 170, 240]), + "6": torch.ByteTensor([127, 235, 170]), + "7": torch.ByteTensor([230, 80, 0]), + "8": torch.ByteTensor([205, 220, 57]), + "9": torch.ByteTensor([218, 165, 32]), + } + self.network_size = config['network_size'] + self.n_class = config['n_class'] + + def get_color_coded_img(self, vis, num_class=10): + color_coded = torch.ones( + (self.network_size[1], self.network_size[0], 3), + dtype=torch.uint8, + ) + for idx in range(num_class): + filtered_indices = vis == idx + color_coded[filtered_indices] = self.color_map[str(idx)] + return color_coded + + def __call__(self, *args): + if not (isinstance(args[0], torch.Tensor) or isinstance(args[0], np.ndarray)): + raise Exception(f"Unsupported type {type(args[0])}") + output = args[0] if isinstance(args[0], torch.Tensor) else torch.from_numpy(args[0]) + pred = torch.argmax(output, dim=0, keepdim=True) + pred = pred.squeeze(0) + image_tensor = self.get_color_coded_img(pred, self.n_class) + buffer = BytesIO() + image = Image.fromarray(image_tensor.numpy()) + image.save(buffer, format="JPEG") + return np.array([base64.b64encode(buffer.getvalue())]) diff --git a/tools/inference_builder/builder/samples/changenet/test_0.jpg b/tools/inference_builder/builder/samples/changenet/test_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f99d78af18e3d81bdc3842cd3cd3ebd1fcb89506 GIT binary patch literal 32942 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 WX#n400NO$gV~9})I`{DJ;{O4gREF39 literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/changenet/test_config.json b/tools/inference_builder/builder/samples/changenet/test_config.json new file mode 100644 index 00000000..5748c00d --- /dev/null +++ b/tools/inference_builder/builder/samples/changenet/test_config.json @@ -0,0 +1,58 @@ +[ + { + "name": "changenet_inference", + "description": "Test ChangeNet inference for change detection on images", + "build_args": { + "TEST_APP_NAME": "changenet", + "CACHE_BUSTER": "changenet_test", + "APP_YAML_PATH": "trt_changenet.yaml", + "OUTPUT_DIR": ".", + "PROCESSORS_PATH": "processors.py", + "SERVER_TYPE": "fastapi", + "OPENAPI_SPEC": "openapi.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 600, + "env": { + "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", + "MODEL_REPO": "/workspace/model_repo", + "HTTP_PORT": "8003" + }, + "volumes": { + "/tmp/model-repo/visual_changenet": "/workspace/model_repo/visual_changenet/1" + }, + "test_requests": [ + { + "payload_path": "payloads/payloads.jsonl", + "method": "POST", + "headers": { + "Content-Type": "application/json" + } + } + ], + "endpoint": "/v1/infer", + "error_detection": { + "enabled": true, + "patterns": [ + "ERROR", + "Exception:", + "Traceback", + "Fatal error", + "CRITICAL" + ] + }, + "prerequisite_script": null, + "models": { + "visual_changenet": { + "source": "NGC", + "target": "/tmp/model-repo", + "path": "nvidia/tao/visual_changenet_segmentation_landsatscd", + "version": "deployable_v1.2", + "post_script": "docker run --rm --gpus all -v $(pwd):/changenet nvcr.io/nvidia/tensorrt:25.12-py3 trtexec --onnx=/changenet/changenet_768.onnx --saveEngine=/changenet/model.plan --fp16" + } + } + } + } +] + diff --git a/tools/inference_builder/builder/samples/changenet/trt_changenet.yaml b/tools/inference_builder/builder/samples/changenet/trt_changenet.yaml new file mode 100644 index 00000000..c1efecd1 --- /dev/null +++ b/tools/inference_builder/builder/samples/changenet/trt_changenet.yaml @@ -0,0 +1,109 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +name: "changenet" +model_repo: /workspace/model_repo/ + +input: + - name: "reference_image" + data_type: TYPE_CUSTOM_IMAGE_BASE64 + dims: [ -1 ] + optional: false + + - name: "test_image" + data_type: TYPE_CUSTOM_IMAGE_BASE64 + dims: [ -1 ] + optional: false + +output: + - name: "output" + data_type: TYPE_STRING + dims: [ -1 ] + +server: + responders: + infer: + operation: inference + requests: + DetectionRequest: > + { + "reference_image": [{{ request.input[0]|tojson }}], + "test_image": [{{ request.input[1]|tojson }}] + } + responses: + DetectionResponse: > + { + "data": {{ response.output[0]|tojson }}, + "usage": { "num_images": 1}, + "model": "nvidia/changenet" + } + healthy_ready: + operation: health_ready_v1_health_ready_get + +models: +- name: visual_changenet + backend: "triton/tensorrt" + max_batch_size: 1 + parameters: + FORCE_CPU_ONLY_INPUT_TENSORS: "no" + input: + - name: input0 + data_type: TYPE_FP32 + dims: [3, 768, 768] + - name: input1 + data_type: TYPE_FP32 + dims: [3, 768, 768] + output: + - name: output_final + data_type: TYPE_FP32 + dims: [10,768, 768] + - name: output0 + data_type: TYPE_FP32 + dims: [10, 48, 48] + - name: output1 + data_type: TYPE_FP32 + dims: [10, 48, 48] + - name: output2 + data_type: TYPE_FP32 + dims: [10, 96, 96] + - name: output3 + data_type: TYPE_FP32 + dims: [10, 192, 192] + preprocessors: + - kind: "custom" + name: "changenet-normalizer" + input: ["reference_image", "test_image"] + output: ["input0", "input1"] + config: + network_size: [768, 768] + postprocessors: + - kind: "custom" + name: "changenet-masking" + input: ["output_final"] + output: ["output_final"] + config: + network_size: [768, 768] + n_class: 10 + +# route map +# A route is defined as +# Source and destination should be defined as +# Model name is optional, so <:["TENSOR_NAME1", "TENSOR_NAME2", ...]> is valid +# Tensor list is optional too and is valid +routes: { + ':["reference_image", "test_image"]': 'visual_changenet', + 'visual_changenet:["output_final"]': ':["output"]', +} diff --git a/tools/inference_builder/builder/samples/cradio/Dockerfile b/tools/inference_builder/builder/samples/cradio/Dockerfile new file mode 100644 index 00000000..de47c315 --- /dev/null +++ b/tools/inference_builder/builder/samples/cradio/Dockerfile @@ -0,0 +1,102 @@ +# Dockerfile for ds-cradio: PeopleNet Transformer + C-RADIOv3-H pipeline +# Uses DeepStream/nvinfer for detection and polygraphy (TensorRT) for embeddings + +FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS inference_base + +# Install Python dependencies required by this pipeline. +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install \ + torch==2.7.0 \ + numpy==1.26.4 \ + omegaconf==2.3.0 \ + transformers==4.54.1 \ + opencv-python + +# Build TensorRT OSS to provide customized plugins (e.g. for PeopleNet +# Transformer ONNX model) and the trtexec tool. +ARG TRT_VERSION_MAJOR=10 +ARG TRT_VERSION_MINOR=14 +ARG TRT_VERSION_PATCH=1 +ARG TRT_VERSION_BUILD=48 + +ARG TRT_VERSION_MAJOR_MINOR=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR +ARG TRT_VERSION_MAJOR_MINOR_PATCH=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR.$TRT_VERSION_PATCH +ARG TRT_VERSION_FULL=$TRT_VERSION_MAJOR_MINOR_PATCH.$TRT_VERSION_BUILD + +ARG CUDA_VERSION_MAJOR=13 +ARG CUDA_VERSION_MINOR=1 +ARG CUDA_VERSION_PATCH=80 +ARG CUDA_VERSION_BUILD=36836380_0 +ARG CUDA_VERSION_MAJOR_MINOR=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR +ARG CUDA_VERSION_FULL=$CUDA_VERSION_MAJOR_MINOR.$CUDA_VERSION_PATCH.$CUDA_VERSION_BUILD +ARG CUDNN_VERSION=9.17.0.29 + +ENV TRT_VERSION=$TRT_VERSION_FULL+cuda$CUDA_VERSION_FULL + +WORKDIR /tmp +ENV TRT_TAG="release/$TRT_VERSION_MAJOR_MINOR" +RUN mkdir trt_oss_src && \ + cd trt_oss_src && \ + echo "$PWD Building TRT OSS..." && \ + git clone -b $TRT_TAG https://github.com/nvidia/TensorRT TensorRT && \ + cd TensorRT && \ + git submodule update --init --recursive && \ + mkdir -p build && cd build && \ + cmake .. \ + -DGPU_ARCHS="80;86;90;100;120" \ + -DTRT_LIB_DIR=/usr/lib/x86_64-linux-gnu \ + -DTRT_OUT_DIR=/tmp/out \ + -DCUDA_VERSION=$CUDA_VERSION_MAJOR_MINOR \ + -DCUDNN_VERSION=$CUDNN_VERSION \ + && for i in {1..50}; do make -j 12 && break; done +RUN cp /tmp/out/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/x86_64-linux-gnu/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ + cp /tmp/out/libnvinfer_plugin_static.a /usr/lib/x86_64-linux-gnu/libnvinfer_plugin_static.a && \ + cp /tmp/out/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/x86_64-linux-gnu/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ + cp /tmp/out/trtexec /usr/local/bin/ && \ + cd ../../../ && \ + rm -rf trt_oss_src + +# Build DeepStream TAO app post-processors (provides NvDsInferParseCustomDDETRTAO +# for PeopleNet Transformer). +ENV DS_TAO_APPS_REPO=https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git +ENV DS_TAO_APPS_TAG="master" +ARG CACHE_BUSTER=unique_value_to_bypass_docker_cache +RUN mkdir ds_tao_apps_src && \ + cd ds_tao_apps_src && \ + echo "$PWD Pulling DS TAO apps repo..." && \ + git clone -b $DS_TAO_APPS_TAG $DS_TAO_APPS_REPO ds_tao_apps && \ + cd ds_tao_apps/post_processor && \ + echo "$PWD Building DS TAO apps post processing..." && \ + CUDA_MODULE_LOADING=LAZY CUDA_VER=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR make && \ + [ -f libnvds_infercustomparser_tao.so ] && echo "$PWD post processing build successful" || echo "$PWD post processing build failed" && \ + cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib && \ + cd ../../../ && \ + rm -rf ds_tao_apps_src + +# Install Python dependencies for the polygraphy backend +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install --extra-index-url https://pypi.nvidia.com \ + Pillow==11.1.0 \ + timm \ + torchvision \ + einops \ + onnx \ + onnxscript \ + tensorrt==10.14.1.48.post1 \ + polygraphy==0.49.24 + +WORKDIR /workspace + +# Copy the generated inference pipeline +ADD ds-cradio.tgz /workspace + +# Copy the ONNX export script (for model preparation inside container) +COPY export_onnx.py /workspace/export_onnx.py + +# Set environment variables required for DeepStream runtime +ENV GST_PLUGIN_PATH=/opt/nvidia/deepstream/deepstream/lib/gst-plugins +ENV LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream/lib:$LD_LIBRARY_PATH +ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes + +ENTRYPOINT ["python3", "/workspace/__main__.py"] +CMD [] diff --git a/tools/inference_builder/builder/samples/cradio/README.md b/tools/inference_builder/builder/samples/cradio/README.md new file mode 100644 index 00000000..11b097f2 --- /dev/null +++ b/tools/inference_builder/builder/samples/cradio/README.md @@ -0,0 +1,255 @@ +# PeopleNet Transformer + C-RADIOv3-H Pipeline + +A two-stage serverless inference pipeline that detects people/objects in images using PeopleNet Transformer (DeepStream/nvinfer), then generates per-detection embeddings using C-RADIOv3-H (TensorRT/polygraphy). The pipeline runs as a CLI application (serverless, no HTTP server). + +We provide a sample Dockerfile for the example, which you can use to build a Docker image and run inference on any x86 system with an NVIDIA Ampere, Hopper, or Blackwell GPU. + +## Pipeline Structure + +``` +Input (image path + MIME) + | + v + +--------------+ + | PeopleNet | DeepStream/nvinfer backend + | Transformer | - Decodes image (DS_IMAGE) + | | - Runs detection (DS_METADATA) + | | - C++ parser: NvDsInferParseCustomDDETRTAO + +--------------+ + | | + | +---> detections (direct to output) + | {shape, bboxes, probs, labels, ...} + v + BboxCropPostprocessor + - Crops each bbox from decoded frame + - Resizes to 256x256 (bicubic) + - CLIP mean/std normalization + - Returns N [3, 256, 256] crops (batched by model operator) + | + v + +--------------+ + | C-RADIOv3-H | polygraphy/TensorRT backend + | | - Batch up to 16 crops + +--------------+ + | + v + Output: + - detections: {shape, bboxes, probs, labels, seg_maps, objects, timestamp} + - summary: [N, 3840] per-detection embeddings + - spatial_features: [N, 256, 1280] per-detection spatial tokens +``` + +### Data Flow + +``` +route: input[media_url, mime] --> peoplenet +route: peoplenet[pixel_values] --> cradio_v3_h +route: peoplenet[detections] --> output +route: cradio_v3_h[summary, spatial_features] --> output +``` + +### Custom Processors + +- **BboxCropPostprocessor** (postprocessor on peoplenet): Crops detected bounding boxes from the decoded frame, resizes/normalizes for C-RADIO input, and returns a list of `[3, 256, 256]` tensors. The model operator batches them into `[N, 3, 256, 256]` for the TRT engine. + +# Prerequisites + +**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. + +Refer to the [top-level README](../../../README.md#getting-started) for base setup (virtual environment, protobuf, etc.). + +Before downloading the model files, set up your model repository: + +```bash +mkdir -p ~/.cache/model-repo && chmod 777 ~/.cache/model-repo +export MODEL_REPO=~/.cache/model-repo +``` + +# Download Models + +## PeopleNet Transformer (NGC) + +The PeopleNet Transformer model is available from NGC: https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/peoplenet_transformer + +Download using the NGC CLI and move the files into the expected model directory: + +```bash +ngc registry model download-version \ + nvidia/tao/peoplenet_transformer:deployable_v1.1 \ + --dest /tmp +mv /tmp/peoplenet_transformer_vdeployable_v1.1 $MODEL_REPO/peoplenet +``` + +Run `ls $MODEL_REPO/peoplenet/` and verify you have `resnet50_peoplenet_transformer_op17.onnx`. + +Copy the nvinfer config and labels file to the model directory: + +```bash +cp builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml \ + builder/samples/ds_app/detection/peoplenet_transformer/labels.txt \ + $MODEL_REPO/peoplenet/ +``` + +**Note:** The ONNX model uses custom TensorRT plugins. The Dockerfile builds TRT OSS from source to provide these plugins. The TensorRT engine is built automatically by DeepStream on first run. + +**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model. + +## C-RADIOv3-H (HuggingFace) + +Make sure you have the HuggingFace CLI installed and are logged in: + +```bash +pip install huggingface_hub +hf auth login +``` + +Or set the `HF_TOKEN` environment variable: + +```bash +export HF_TOKEN= +``` + +Then download the model: + +```bash +git lfs install +git clone https://huggingface.co/nvidia/C-RADIOv3-H $MODEL_REPO/cradio_v3_h +``` + +**Note:** ONNX export and TRT engine build for this model happen after the Docker image is built, since they require the GPU and container environment. See [Export C-RADIOv3-H ONNX & Build TRT Engine](#export-c-radiov3-h-onnx--build-trt-engine) below. + +# Build the Inference Pipeline + +```bash +source .venv/bin/activate +python builder/main.py builder/samples/cradio/ds_cradio.yaml \ + -c builder/samples/cradio/processors.py \ + -o builder/samples/cradio \ + --server-type serverless -t +``` + +The `-t` flag creates `ds-cradio.tgz` in the output directory (from the `name` in `ds_cradio.yaml`). The Dockerfile expects this tarball. + +# Build the Docker Image + +```bash +docker build -f builder/samples/cradio/Dockerfile -t cradio:latest builder/samples/cradio +``` + +# Export C-RADIOv3-H ONNX & Build TRT Engine + +## Export to ONNX + +Run the export script inside the container (requires GPU): + +```bash +docker run --rm --gpus all \ + -v $MODEL_REPO:/models \ + -v $MODEL_REPO/cradio_v3_h:/root/.cache/huggingface/modules/transformers_modules/cradio_v3_h \ + --entrypoint python3 \ + cradio:latest /workspace/export_onnx.py \ + --output-dir /models/cradio_v3_h \ + --resolution 256 \ + --model-path /models/cradio_v3_h +``` + +## Build TensorRT Engine + +Build the TensorRT engine with polygraphy: + +```bash +docker run --rm --gpus all \ + -v $MODEL_REPO:/models \ + --entrypoint polygraphy \ + cradio:latest convert /models/cradio_v3_h/model.onnx \ + --fp16 \ + --trt-min-shapes pixel_values:[1,3,256,256] \ + --trt-opt-shapes pixel_values:[8,3,256,256] \ + --trt-max-shapes pixel_values:[16,3,256,256] \ + -o /models/cradio_v3_h/model.plan +``` + +Run `ls $MODEL_REPO/cradio_v3_h/model.plan` to verify the engine was created. + +## Automated Script + +Alternatively, `prepare_engine.sh` automates both steps (skips if outputs already exist): + +```bash +bash builder/samples/cradio/prepare_engine.sh cradio:latest $MODEL_REPO +``` + +This is the same script used by the CI test via `prerequisite_script` in `test_config.json`. + +# Run Inference + +Run inference on a single image (output to stdout): + +```bash +docker run --rm --gpus all \ + -v $MODEL_REPO:/models \ + -e MODEL_REPO=/models \ + cradio:latest \ + --media-url --mime image/jpeg -s stdout +``` + +To save the output to a file: + +```bash +docker run --rm --gpus all \ + -v $MODEL_REPO:/models \ + -e MODEL_REPO=/models \ + cradio:latest \ + --media-url --mime image/jpeg -s /models/output.json +``` + +**Important:** Replace `` with an actual image path accessible inside the container (e.g., mount a volume or use a path already in the image such as `/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg`). + +## Expected Output Format + +```json +{ + "detections": { + "shape": [544, 960], + "bboxes": [[x1, y1, x2, y2], ...], + "probs": [0.977, 0.953, ...], + "labels": [["Person"], ["Person"], ...], + "seg_maps": [], + "objects": [], + "timestamp": 1234567890 + }, + "summary": [[...3840 floats...], ...], + "spatial_features": [[[...1280 floats...] x 256], ...] +} +``` + +- `detections`: PeopleNet bounding boxes, labels, and probabilities +- `summary`: `[N, 3840]` per-detection embeddings (N = number of detections, max 16) +- `spatial_features`: `[N, 256, 1280]` per-detection spatial tokens +- When no objects are detected, N=1 with a dummy zero-crop embedding + +# Model Repository Layout + +``` +$MODEL_REPO/ + peoplenet/ + resnet50_peoplenet_transformer_op17.onnx + nvdsinfer_config.yaml + labels.txt + cradio_v3_h/ + model.plan # TensorRT engine (built from ONNX) + model.onnx # Exported ONNX model + ... # HuggingFace model files (used for ONNX export) +``` + +# Project Files + +| File | Description | +|------|-------------| +| `ds_cradio.yaml` | Pipeline configuration (models, routes, I/O types) | +| `processors.py` | Custom postprocessor (BboxCropPostprocessor) | +| `Dockerfile` | Docker build (DeepStream base + TRT OSS + TAO parser + pipeline) | +| `export_onnx.py` | C-RADIOv3-H ONNX export script | +| `prepare_engine.sh` | Automated ONNX export + TRT engine build (used by CI) | +| `nvdsinfer_config.yaml` | PeopleNet nvinfer runtime config (copy from `ds_app/detection/peoplenet_transformer/` to `$MODEL_REPO/peoplenet/`) | +| `test_config.json` | Test configuration for CI | diff --git a/tools/inference_builder/builder/samples/cradio/ds_cradio.yaml b/tools/inference_builder/builder/samples/cradio/ds_cradio.yaml new file mode 100644 index 00000000..4a235135 --- /dev/null +++ b/tools/inference_builder/builder/samples/cradio/ds_cradio.yaml @@ -0,0 +1,85 @@ +name: ds-cradio +model_repo: /models + +# Top-level input: image URL/path + MIME type. +input: + - name: "media_url" + data_type: TYPE_STRING + dims: [ -1 ] + - name: "mime" + data_type: TYPE_STRING + dims: [ -1 ] + +# Top-level output: detections + per-detection embeddings +output: + - name: "detections" + data_type: TYPE_CUSTOM_OBJECT + dims: [ -1 ] + - name: "summary" + data_type: TYPE_FP32 + dims: [-1, -1] + - name: "spatial_features" + data_type: TYPE_FP32 + dims: [-1, -1, -1] + +models: + # Stage 1: PeopleNet Transformer (object detection via DeepStream) + - name: peoplenet + backend: "deepstream/nvinfer" + max_batch_size: 1 + input: + - name: "image_bytes" + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [ -1 ] + - name: "media_url" + data_type: TYPE_CUSTOM_DS_MEDIA_URL + dims: [ -1 ] + - name: "mime" + data_type: TYPE_CUSTOM_DS_MIME + dims: [1] + output: + - name: "detections" + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + - name: "decoded_frames" + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [-1, 3] + parameters: + infer_config_path: + - nvdsinfer_config.yaml + inference_timeout: 10 + postprocessors: + # After DS inference: crop each detected bbox from decoded_frames, + # resize+normalize for C-RADIO, and return a stacked [N,3,256,256] + # tensor. Because peoplenet is on the implicit path the tensor + # flows directly to cradio via kwargs (no stack_tensors_in_dict). + - kind: "custom" + name: "bbox-crop-postprocessor" + input: ["detections", "decoded_frames"] + output: ["pixel_values", "detections"] + config: + max_crops: 16 # must match cradio_v3_h max_batch_size below + + # Stage 2: C-RADIOv3-H (per-crop embedding via TensorRT) + - name: cradio_v3_h + backend: "polygraphy" + max_batch_size: 16 + input: + - name: "pixel_values" + data_type: TYPE_FP32 + dims: [3, 256, 256] + output: + - name: "summary" + data_type: TYPE_FP32 + dims: [-1, -1] + - name: "spatial_features" + data_type: TYPE_FP32 + dims: [-1, -1, -1] + parameters: + tensorrt_engine: "model.plan" + +routes: + ':[\"media_url\", \"mime\"]': 'peoplenet' + 'peoplenet:[\"pixel_values\"]': 'cradio_v3_h' + 'peoplenet:[\"detections\"]': ':' + 'cradio_v3_h:[\"summary\", \"spatial_features\"]': ':' diff --git a/tools/inference_builder/builder/samples/cradio/export_onnx.py b/tools/inference_builder/builder/samples/cradio/export_onnx.py new file mode 100644 index 00000000..57dd58a1 --- /dev/null +++ b/tools/inference_builder/builder/samples/cradio/export_onnx.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +""" +Export C-RADIOv3-H model from HuggingFace to ONNX format. + +Usage: + python export_onnx.py --output-dir /models/cradio_v3_h --resolution 256 + +After export, build a TensorRT engine: + polygraphy convert /models/cradio_v3_h/model.onnx \ + --fp16 \ + -o /models/cradio_v3_h/model.plan +""" + +import argparse +import os +import sys +import torch + + +def validate_directory_path(dir_path): + """ + Validate directory path to prevent OS access violations. + Args: + dir_path: Directory path to validate + Returns: + str: Validated and sanitized directory path + Raises: + ValueError: If path is invalid or potentially dangerous + """ + if not dir_path: + raise ValueError("Directory path cannot be empty") + + try: + abs_path = os.path.abspath(dir_path) + resolved_path = os.path.realpath(abs_path) + except (OSError, ValueError) as e: + raise ValueError(f"Invalid directory path: {e}") + + if ".." in os.path.normpath(dir_path): + raise ValueError("Path traversal detected in directory path") + + invalid_chars = ['<', '>', ':', '"', '|', '?', '*'] + if any(char in dir_path for char in invalid_chars): + raise ValueError("Invalid characters in directory path") + + system_dirs = ['/etc', '/sys', '/proc', '/dev', '/boot', '/usr/bin', '/usr/sbin'] + for sys_dir in system_dirs: + if resolved_path.startswith(sys_dir): + raise ValueError(f"Access to system directory {sys_dir} is not allowed") + + return resolved_path + + +def export_onnx(output_dir: str, resolution: int = 256, model_path: str = None): + from transformers import AutoModel + + output_dir = validate_directory_path(output_dir) + if model_path is not None: + model_path = validate_directory_path(model_path) + if not isinstance(resolution, int) or resolution <= 0: + raise ValueError(f"Resolution must be a positive integer, got: {resolution}") + + os.makedirs(output_dir, exist_ok=True) + onnx_path = os.path.join(output_dir, "model.onnx") + + source = model_path or "nvidia/C-RADIOv3-H" + print(f"Loading C-RADIOv3-H model from {source}...") + # trust_remote_code=True is required by the C-RADIOv3-H architecture; + # model_path is sanitized by validate_directory_path() above. + model = AutoModel.from_pretrained( + source, trust_remote_code=True # nosec - required by model, path is validated + ) + model.train(False).cuda() + + dummy_input = torch.randn(1, 3, resolution, resolution, device="cuda") + + print(f"Exporting to ONNX: {onnx_path}") + torch.onnx.export( + model, + dummy_input, + onnx_path, + input_names=["pixel_values"], + output_names=["summary", "spatial_features"], + dynamic_axes={ + "pixel_values": {0: "batch_size"}, + "summary": {0: "batch_size"}, + "spatial_features": {0: "batch_size"}, + }, + opset_version=17, + ) + print(f"ONNX model saved to {onnx_path}") + print( + f"\nNext step - build TensorRT engine:\n" + f" polygraphy convert {onnx_path} --fp16 -o {os.path.join(output_dir, 'model.plan')}" + ) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Export C-RADIOv3-H to ONNX") + parser.add_argument( + "--output-dir", + default="/models/cradio_v3_h", + help="Directory for output ONNX and TensorRT engine files", + ) + parser.add_argument( + "--resolution", + type=int, + default=256, + help="Input image resolution (default: 256)", + ) + parser.add_argument( + "--model-path", + default=None, + help="Local path to the model directory (skips HF download)", + ) + try: + args = parser.parse_args() + except Exception as e: + print(f"Error: Argument parsing failed: {str(e)}") + sys.exit(1) + + try: + export_onnx(args.output_dir, args.resolution, args.model_path) + except ValueError as e: + print(f"Security validation failed: {e}") + sys.exit(1) diff --git a/tools/inference_builder/builder/samples/cradio/prepare_engine.sh b/tools/inference_builder/builder/samples/cradio/prepare_engine.sh new file mode 100644 index 00000000..e774b933 --- /dev/null +++ b/tools/inference_builder/builder/samples/cradio/prepare_engine.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Prepare C-RADIOv3-H TensorRT engine: export ONNX and build engine. +# Usage: prepare_engine.sh +# +# Requires: model files at /cradio_v3_h (from HuggingFace) +# Produces: /cradio_v3_h/model.plan (TensorRT FP16 engine) + +set -e + +IMAGE="$1" +MODEL_REPO="${2:-/tmp/model-repo}" +MODEL_DIR="$MODEL_REPO/cradio_v3_h" +RESOLUTION=256 + +if [ -z "$IMAGE" ]; then + echo "Usage: $0 [model_repo]" + exit 1 +fi + +# Skip if engine already exists +if [ -f "$MODEL_DIR/model.plan" ]; then + echo "TensorRT engine already exists at $MODEL_DIR/model.plan, skipping" + exit 0 +fi + +# Check that model files exist +if [ ! -d "$MODEL_DIR" ]; then + echo "Error: Model directory not found: $MODEL_DIR" + exit 1 +fi + +echo "=== Step 1: Export ONNX ===" +if [ ! -f "$MODEL_DIR/model.onnx" ]; then + docker run --rm --gpus all \ + -v "$MODEL_REPO:/models" \ + -v "$MODEL_DIR:/root/.cache/huggingface/modules/transformers_modules/cradio_v3_h" \ + --entrypoint python3 \ + "$IMAGE" /workspace/export_onnx.py \ + --output-dir /models/cradio_v3_h \ + --resolution "$RESOLUTION" \ + --model-path /models/cradio_v3_h + echo "ONNX export complete: $MODEL_DIR/model.onnx" +else + echo "ONNX model already exists at $MODEL_DIR/model.onnx, skipping export" +fi + +echo "=== Step 2: Build TensorRT Engine ===" +docker run --rm --gpus all \ + -v "$MODEL_REPO:/models" \ + --entrypoint polygraphy \ + "$IMAGE" convert /models/cradio_v3_h/model.onnx \ + --fp16 \ + --trt-min-shapes "pixel_values:[1,3,${RESOLUTION},${RESOLUTION}]" \ + --trt-opt-shapes "pixel_values:[8,3,${RESOLUTION},${RESOLUTION}]" \ + --trt-max-shapes "pixel_values:[16,3,${RESOLUTION},${RESOLUTION}]" \ + -o /models/cradio_v3_h/model.plan + +echo "TensorRT engine built: $MODEL_DIR/model.plan" diff --git a/tools/inference_builder/builder/samples/cradio/processors.py b/tools/inference_builder/builder/samples/cradio/processors.py new file mode 100644 index 00000000..533aff9f --- /dev/null +++ b/tools/inference_builder/builder/samples/cradio/processors.py @@ -0,0 +1,97 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import torch +import torch.nn.functional as F + + +class BboxCropPostprocessor: + """Postprocessor on PeopleNet: crop detected bboxes for C-RADIO. + + Runs after DeepStream inference on peoplenet. Receives the + DS_METADATA ``detections`` dict and the DS_IMAGE + ``decoded_frames`` (RGB uint8 HWC tensor extracted from the + DeepStream pipeline). + + For each detected bounding box the processor: + 1. Crops the bbox region from ``decoded_frames``. + 2. Resizes to 256x256 (bicubic). + 3. Normalises with CLIP mean/std. + + Returns: + * ``pixel_values`` — list of N ``[3, 256, 256]`` float32 tensors + * ``detections`` — the original detection dict (passthrough) + + The list of crops is passed to the cradio ModelOperator, which + batches them via ``stack_tensors_in_dict`` so the TRT engine + receives ``[N, 3, 256, 256]``. + + If no bboxes are detected a single dummy crop is produced so the + downstream model always receives a valid batch. + """ + name = "bbox-crop-postprocessor" + + def __init__(self, config): + # must not exceed cradio max_batch_size + self._max_crops = int(config.get("max_crops", 16)) + self._mean = torch.tensor([0.48145466, 0.4578275, 0.40821073]).view(3, 1, 1) + self._std = torch.tensor([0.26862954, 0.26130258, 0.27577711]).view(3, 1, 1) + + def __call__(self, detections, decoded_frames): + # decoded_frames is an RGB uint8 HWC tensor from DS_IMAGE output + if decoded_frames is None: + raise ValueError("decoded_frames is None") + if not isinstance(decoded_frames, torch.Tensor): + try: + decoded_frames = torch.as_tensor(decoded_frames) + except (TypeError, ValueError) as e: + raise ValueError(f"decoded_frames could not be converted to tensor: {e}") from e + if decoded_frames.ndim != 3: + raise ValueError( + f"decoded_frames must be 3D (HWC or CHW), got ndim={decoded_frames.ndim}, shape={decoded_frames.shape}" + ) + if decoded_frames.ndim == 3 and decoded_frames.shape[0] == 3: + decoded_frames = decoded_frames.permute(1, 2, 0) # CHW → HWC + # Expect HWC: (height, width, 3) + if decoded_frames.shape[2] != 3: + raise ValueError( + f"decoded_frames must have 3 channels (RGB), got shape={decoded_frames.shape}" + ) + frame_h, frame_w = decoded_frames.shape[0], decoded_frames.shape[1] + # -- Crop each bbox --------------------------------------------------- + bboxes = detections.get("bboxes", []) + meta_shape = detections.get("shape", [frame_h, frame_w]) + scale_y = frame_h / meta_shape[0] if meta_shape[0] > 0 else 1.0 + scale_x = frame_w / meta_shape[1] if meta_shape[1] > 0 else 1.0 + + crops = [] + for bbox in bboxes[: self._max_crops]: + left, top, right, bottom = bbox + left = int(left * scale_x) + top = int(top * scale_y) + right = int(right * scale_x) + bottom = int(bottom * scale_y) + + left = max(0, min(left, frame_w - 1)) + top = max(0, min(top, frame_h - 1)) + right = max(left + 1, min(right, frame_w)) + bottom = max(top + 1, min(bottom, frame_h)) + + crop = decoded_frames[top:bottom, left:right, :] # HWC + crop = crop.permute(2, 0, 1).float() / 255.0 # CHW [0,1] + crop = F.interpolate( + crop.unsqueeze(0), size=(256, 256), + mode="bicubic", align_corners=False, + ).squeeze(0) # [3, 256, 256] + + mean = self._mean.to(crop.device) + std = self._std.to(crop.device) + crop = (crop - mean) / std + crops.append(crop) + + if len(crops) == 0: + crops = [torch.zeros(3, 256, 256)] + + # Return list of [3, 256, 256] crops — the model operator will + # batch them via stack_tensors_in_dict into [N, 3, 256, 256]. + return (crops, detections) diff --git a/tools/inference_builder/builder/samples/cradio/test_config.json b/tools/inference_builder/builder/samples/cradio/test_config.json new file mode 100644 index 00000000..4296b97c --- /dev/null +++ b/tools/inference_builder/builder/samples/cradio/test_config.json @@ -0,0 +1,47 @@ +[ + { + "name": "cradio_peoplenet_inference", + "description": "Test PeopleNet Transformer + C-RADIOv3-H sequential multi-model pipeline", + "build_args": { + "TEST_APP_NAME": "ds-cradio", + "CACHE_BUSTER": "cradio_peoplenet_test", + "APP_YAML_PATH": "ds_cradio.yaml", + "OUTPUT_DIR": ".", + "PROCESSORS_PATH": "processors.py", + "SERVER_TYPE": "serverless" + }, + "test_config": { + "default_enable": false, + "timeout": 1000, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", + "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", + "MODEL_REPO": "/models" + }, + "volumes": { + "/tmp/model-repo": "/models" + }, + "cmd": [ + "--media-url", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg", + "--mime", + "image/jpeg" + ], + "prerequisite_script": "bash prepare_engine.sh {image_name} /tmp/model-repo", + "models": { + "peoplenet": { + "source": "NGC", + "target": "/tmp/model-repo", + "path": "nvidia/tao/peoplenet_transformer", + "version": "deployable_v1.1", + "configs": "../ds_app/detection/peoplenet_transformer" + }, + "cradio_v3_h": { + "source": "HF", + "target": "/tmp/model-repo", + "path": "nvidia/C-RADIOv3-H" + } + } + } + } +] diff --git a/tools/inference_builder/builder/samples/docker-compose.yml b/tools/inference_builder/builder/samples/docker-compose.yml new file mode 100644 index 00000000..01271415 --- /dev/null +++ b/tools/inference_builder/builder/samples/docker-compose.yml @@ -0,0 +1,155 @@ +################################################################################ +# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +################################################################################ + +services: + ms-nvclip: + build: + context: nvclip + target: builder_base + dockerfile: Dockerfile + image: ms-nvclip + volumes: + - '~/.cache/model-repo/:/workspace/model-repo' + ipc: host + # init: true + ports: + - "8800-8803:8000-8003" + deploy: + resources: + reservations: + devices: + - driver: nvidia + #count: 1 + device_ids: ['0'] + capabilities: [gpu] + environment: + NGC_API_KEY: "" +# DEBUG: 1 + ms-changenet: + build: + context: changenet + target: builder_base + dockerfile: Dockerfile + image: ms-changenet + volumes: + - '~/.cache/model-repo/visual_changenet:/workspace/model_repo/visual_changenet/1' + ipc: host + # init: true + ports: + - "8800-8803:8000-8003" + deploy: + resources: + reservations: + devices: + - driver: nvidia + #count: 1 + device_ids: ['0'] + capabilities: [gpu] + environment: + HTTP_PORT: 8003 + DEBUG: 0 + tao-cv: + user: nvs:1000 + build: + context: tao + target: cv_tao_base + dockerfile: Dockerfile + image: tao-cv + # entrypoint: ["/bin/bash"] + # # Keep container running + # command: ["-c", "sleep infinity"] + volumes: + - '~/.cache/model-repo/:/workspace/.cache/model-repo' + ipc: host + # init: true + ports: + - "8800-8803:8000-8003" + deploy: + resources: + reservations: + devices: + - driver: nvidia + #count: 1 + device_ids: ['0'] + capabilities: [gpu] + environment: + DEBUG: 0 + TAO_MODEL_NAME: rtdetr + dry-run: + user: nvs:1000 + build: + context: dummy + target: inference_base + dockerfile: Dockerfile + image: dry-run + volumes: + - '~/.cache:/workspace/.cache' + ipc: host + # init: true + ports: + - "8800-8803:8000-8003" + deploy: + resources: + reservations: + devices: + - driver: nvidia + #count: 1 + device_ids: ['0'] + capabilities: [gpu] + environment: + DEBUG: 1 + ms-qwen: + build: + context: qwen + target: inference_base + dockerfile: Dockerfile + image: ms-qwen + volumes: + - '~/.cache/model-repo:/workspace/model-repo' + ipc: host + # init: true + ports: + - "8800-8803:8000-8003" + deploy: + resources: + reservations: + devices: + - driver: nvidia + #count: 1 + device_ids: ['0'] + capabilities: [gpu] + environment: + DEBUG: 0 + ms-vllm: + build: + context: vllm + target: inference_base + dockerfile: Dockerfile + image: ms-vllm + volumes: + - '~/.cache/model-repo:/workspace/model-repo' + ipc: host + # init: true + ports: + - "8800-8803:8000-8003" + deploy: + resources: + reservations: + devices: + - driver: nvidia + device_ids: ['0'] + #count: 1 + capabilities: [gpu] + environment: + DEBUG: 0 + # number of codec instances based on the hardware specification + N_CODEC_INSTANCES: 7 diff --git a/tools/inference_builder/builder/samples/ds_app/Dockerfile b/tools/inference_builder/builder/samples/ds_app/Dockerfile new file mode 100644 index 00000000..43363aba --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/Dockerfile @@ -0,0 +1,130 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# Sample Dockerfile for a DeepStream TAO ds_app-style pipeline using +# a Triton-enabled DeepStream base image. +# +# Target platform: x86_64 (amd64) +# Intended for standard datacenter/workstation GPUs (e.g. A100, H100, B200, +# RTX series) running Linux on x86_64. Uses pre-built PyTorch wheels from +# PyTorch's CUDA index and links against x86_64 system libraries. +FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS inference_base + +# Install Python dependencies required by THIS ds_app sample. These +# versions are pinned for reproducibility and can be adjusted for +# other pipelines or environments. +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install \ + --extra-index-url https://download.pytorch.org/whl/cu130 \ + torch==2.9.0+cu130 \ + numpy==1.26.4 \ + omegaconf==2.3.0 \ + transformers==4.54.1 \ + opencv-python + +# Build TensorRT OSS to provide customized plugins (e.g. for ONNX) and +# the trtexec tool. The version and GPU architectures are controlled +# by the ARGs below; update them if you target different CUDA/TRT +# versions or GPU architectures. +ARG TRT_VERSION_MAJOR=10 +ARG TRT_VERSION_MINOR=14 +ARG TRT_VERSION_PATCH=1 +ARG TRT_VERSION_BUILD=48 + +ARG TRT_VERSION_MAJOR_MINOR=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR +ARG TRT_VERSION_MAJOR_MINOR_PATCH=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR.$TRT_VERSION_PATCH +ARG TRT_VERSION_FULL=$TRT_VERSION_MAJOR_MINOR_PATCH.$TRT_VERSION_BUILD + +ARG CUDA_VERSION_MAJOR=13 +ARG CUDA_VERSION_MINOR=1 +ARG CUDA_VERSION_PATCH=80 +ARG CUDA_VERSION_BUILD=36836380_0 +ARG CUDA_VERSION_MAJOR_MINOR=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR +ARG CUDA_VERSION_FULL=$CUDA_VERSION_MAJOR_MINOR.$CUDA_VERSION_PATCH.$CUDA_VERSION_BUILD +ARG CUDNN_VERSION=9.17.0.29 + +ENV TRT_VERSION=$TRT_VERSION_FULL+cuda$CUDA_VERSION_FULL + +WORKDIR /tmp +ENV TRT_TAG="release/$TRT_VERSION_MAJOR_MINOR" +RUN mkdir trt_oss_src && \ + cd trt_oss_src && \ + echo "$PWD Building TRT OSS..." && \ + git clone -b $TRT_TAG https://github.com/nvidia/TensorRT TensorRT && \ + cd TensorRT && \ + git submodule update --init --recursive && \ + mkdir -p build && cd build && \ + cmake .. \ + -DGPU_ARCHS="80;86;90;100;120" \ + -DTRT_LIB_DIR=/usr/lib/x86_64-linux-gnu \ + -DTRT_OUT_DIR=/tmp/out \ + -DCUDA_VERSION=$CUDA_VERSION_MAJOR_MINOR \ + -DCUDNN_VERSION=$CUDNN_VERSION \ + && for i in {1..50}; do make -j 12 && break; done +RUN cp /tmp/out/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/x86_64-linux-gnu/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ + cp /tmp/out/libnvinfer_plugin_static.a /usr/lib/x86_64-linux-gnu/libnvinfer_plugin_static.a && \ + cp /tmp/out/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/x86_64-linux-gnu/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ + cp /tmp/out/trtexec /usr/local/bin/ && \ + cd ../../../ && \ + rm -rf trt_oss_src + + +# Build DeepStream TAO app post-processors. This must come AFTER the +# DeepStream SDK is installed in the base image. The resulting +# libnvds_infercustomparser_tao.so is copied into the DeepStream lib +# directory for use by ds_app pipelines. Adjust the repo/tag or CUDA +# version if you use different DS/TAO releases. +ENV DS_TAO_APPS_REPO=https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git +ENV DS_TAO_APPS_TAG="master" +ENV DS_SRC_PATH=/opt/nvidia/deepstream/deepstream +ARG CACHE_BUSTER=unique_value_to_bypass_docker_cache +RUN mkdir ds_tao_apps_src && \ + cd ds_tao_apps_src && \ + echo "$PWD Pulling DS TAO apps repo..." && \ + git clone -b $DS_TAO_APPS_TAG $DS_TAO_APPS_REPO ds_tao_apps && \ + cd ds_tao_apps/post_processor && \ + echo "$PWD Building DS TAO apps post processing..." && \ + CUDA_MODULE_LOADING=LAZY CUDA_VER=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR make DS_SRC_PATH=$DS_SRC_PATH && \ + [ -f libnvds_infercustomparser_tao.so ] && echo "$PWD post processing build successful" || echo "$PWD post processing build failed" && \ + cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib && \ + cd ../../../ && \ + rm -rf ds_tao_apps_src + +WORKDIR /workspace + +# Copy the inference flow package generated by Inference Builder. +# This tarball (here: deepstream-app.tgz) is typically produced when +# running the builder with tarball output enabled, and its name should +# match the generated pipeline artifact you want to deploy. +ADD deepstream-app.tgz /workspace + +# Copy test data for CI/regression testing of this sample pipeline. +# This is optional and specific to the ds_app sample setup. +COPY test_data/* /workspace/test_data/ + +## Set Environment variables required for DeepStream runtime. +# Make sure DeepStream GStreamer plugins and libraries are discoverable. +ENV GST_PLUGIN_PATH=/opt/nvidia/deepstream/deepstream/lib/gst-plugins +ENV LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream/lib:$LD_LIBRARY_PATH +# Enable adaptive batching in nvstreammux for better GPU utilization. +ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes +# Optional: enable detailed latency measurement if needed. +#ENV NVDS_ENABLE_LATENCY_MEASUREMENT=1 +#ENV NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 + +ENTRYPOINT ["python3", "/workspace/__main__.py"] +#ENTRYPOINT ["/bin/bash"] +CMD [] diff --git a/tools/inference_builder/builder/samples/ds_app/Dockerfile.dgxspark b/tools/inference_builder/builder/samples/ds_app/Dockerfile.dgxspark new file mode 100644 index 00000000..267c98d4 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/Dockerfile.dgxspark @@ -0,0 +1,149 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Sample Dockerfile for a DeepStream TAO ds_app-style pipeline on DGX +# with Spark, using a Triton-enabled DeepStream base image and a PyTorch +# source image for copying Python packages. +# +# Target platform: aarch64 / NVIDIA server-grade ARM64 (GB300, DGX Spark) +# Intended for NVIDIA ARM64 server systems such as GB300 NVL and DGX Spark +# that run the arm-sbsa DeepStream variant. Like the Tegra variant, PyTorch +# packages are copied from the NGC pytorch image. Unlike Tegra, this targets +# high-performance datacenter ARM64 hardware (SBSA) rather than embedded +# Jetson devices. +FROM "nvcr.io/nvidia/pytorch:25.08-py3" AS pytorch_src + +FROM "nvcr.io/nvidia/deepstream:9.0-triton-sbsa-dgx-spark" AS inference_base + +RUN --mount=type=cache,target=/root/.cache/pip \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && apt-get install -y --no-install-recommends libyaml-cpp-dev pkg-config cmake + +RUN --mount=type=bind,from=pytorch_src,source=/usr/local/lib/python3.12/dist-packages,target=/tmp/pytorch_src \ + cp -r /tmp/pytorch_src/{torch,functorch,torchgen,torch-*,torchvision*,flash_attn*,tensorrt*} \ + /usr/local/lib/python3.12/dist-packages/ && \ + cp -r /tmp/pytorch_src/triton /usr/local/lib/python3.12/dist-packages/ && \ + sed -i '/self.capability = target.arch/a\ if self.capability == 121: self.capability = 120' /usr/local/lib/python3.12/dist-packages/triton/backends/nvidia/compiler.py +COPY --from=pytorch_src /usr/local/lib/libnvpl* /usr/local/lib/ + +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install \ + jinja2==3.1.6 \ + numpy==1.26.4 \ + omegaconf==2.3.0 \ + networkx==3.5 \ + sympy==1.14.0 \ + pillow==11.3 \ + transformers==4.54.1 \ + opencv-python + +# Build TensorRT OSS to provide customized plugins (e.g. for ONNX) and +# the trtexec tool. The version and GPU architectures are controlled +# by the ARGs below; update them if you target different CUDA/TRT +# versions or GPU architectures. +ARG TRT_VERSION_MAJOR=10 +ARG TRT_VERSION_MINOR=13 +ARG TRT_VERSION_PATCH=0 +ARG TRT_VERSION_BUILD=0 + +ARG TRT_VERSION_MAJOR_MINOR=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR +ARG TRT_VERSION_MAJOR_MINOR_PATCH=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR.$TRT_VERSION_PATCH +ARG TRT_VERSION_FULL=$TRT_VERSION_MAJOR_MINOR_PATCH.$TRT_VERSION_BUILD + +ARG CUDA_VERSION_MAJOR=13 +ARG CUDA_VERSION_MINOR=0 +ARG CUDA_VERSION_PATCH=0 +ARG CUDA_VERSION_BUILD=1 +ARG CUDA_VERSION_MAJOR_MINOR=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR +ARG CUDA_VERSION_FULL=$CUDA_VERSION_MAJOR_MINOR.$CUDA_VERSION_PATCH.$CUDA_VERSION_BUILD +ARG CUDNN_VERSION=9.12.0.46-1 + +ENV TRT_VERSION=$TRT_VERSION_FULL+cuda$CUDA_VERSION_FULL + +WORKDIR /tmp +ENV TRT_TAG="release/$TRT_VERSION_MAJOR_MINOR" +RUN mkdir trt_oss_src && \ + cd trt_oss_src && \ + echo "$PWD Building TRT OSS..." && \ + git clone -b $TRT_TAG https://github.com/nvidia/TensorRT TensorRT && \ + cd TensorRT && \ + git submodule update --init --recursive && \ + mkdir -p build && cd build && \ + cmake .. \ + -DGPU_ARCHS="110;120;121" \ + -DTRT_LIB_DIR=/usr/lib/aarch64-linux-gnu \ + -DTRT_OUT_DIR=/tmp/out \ + -DCUDA_VERSION=$CUDA_VERSION_MAJOR_MINOR \ + -DCUDNN_VERSION=$CUDNN_VERSION \ + -DCMAKE_C_COMPILER=/usr/bin/gcc \ + && for i in {1..50}; do make -j 12 && break; done +RUN echo "Listing /tmp/out:" && ls -l /tmp/out/libnvinfer_plugin.so.* +RUN cp /tmp/out/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ + cp /tmp/out/libnvinfer_plugin_static.a /usr/lib/aarch64-linux-gnu/libnvinfer_plugin_static.a && \ + cp /tmp/out/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/aarch64-linux-gnu/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ + cp /tmp/out/trtexec /usr/local/bin/ && \ + cd ../../../ && \ + rm -rf trt_oss_src + + +# Build DeepStream TAO app post-processors. This must come AFTER the +# DeepStream SDK is installed in the base image. The resulting +# libnvds_infercustomparser_tao.so is copied into the DeepStream lib +# directory for use by ds_app pipelines. Adjust the repo/tag or CUDA +# version if you use different DS/TAO releases. +ENV DS_TAO_APPS_REPO=https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git +ENV DS_TAO_APPS_TAG="master" +ENV DS_SRC_PATH=/opt/nvidia/deepstream/deepstream +ARG CACHE_BUSTER=unique_value_to_bypass_docker_cache +RUN mkdir ds_tao_apps_src && \ + cd ds_tao_apps_src && \ + echo "$PWD Pulling DS TAO apps repo..." && \ + git clone -b $DS_TAO_APPS_TAG $DS_TAO_APPS_REPO ds_tao_apps && \ + cd ds_tao_apps/post_processor && \ + echo "$PWD Building DS TAO apps post processing..." && \ + CUDA_MODULE_LOADING=LAZY CUDA_VER=$CUDA_VERSION_MAJOR_MINOR make DS_SRC_PATH=$DS_SRC_PATH && \ + [ -f libnvds_infercustomparser_tao.so ] && echo "$PWD post processing build successful" || echo "$PWD post processing build falied" && \ + cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib && \ + cd ../../../ && \ + rm -rf ds_tao_apps_src + +RUN rm -rf ~/.cache/gstreamer-1.0 + +WORKDIR /workspace + +# Copy the inference flow package generated by Inference Builder. +# This tarball (here: deepstream-app.tgz) is typically produced when +# running the builder with tarball output enabled, and its name should +# match the generated pipeline artifact you want to deploy. +ADD deepstream-app.tgz /workspace + +# Copy test data for CI/regression testing of this sample pipeline. +# This is optional and specific to the ds_app sample setup. +COPY test_data/* /workspace/test_data/ + +## Set Environment variables required for DeepStream runtime. +# Make sure DeepStream GStreamer plugins and libraries are discoverable. +ENV GST_PLUGIN_PATH=/opt/nvidia/deepstream/deepstream/lib/gst-plugins +ENV LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream/lib:$LD_LIBRARY_PATH +# Enable adaptive batching in nvstreammux for better GPU utilization. +ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes +# Optional: enable detailed latency measurement if needed. +#ENV NVDS_ENABLE_LATENCY_MEASUREMENT=1 +#ENV NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 + +ENTRYPOINT ["python3", "/workspace/__main__.py"] +#ENTRYPOINT ["/bin/bash"] +CMD [] diff --git a/tools/inference_builder/builder/samples/ds_app/Dockerfile.tegra b/tools/inference_builder/builder/samples/ds_app/Dockerfile.tegra new file mode 100644 index 00000000..a1d593c1 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/Dockerfile.tegra @@ -0,0 +1,147 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Sample Dockerfile for a DeepStream TAO ds_app-style pipeline on Tegra +# (Jetson), using a Triton-enabled DeepStream base image and a PyTorch +# source image for copying Python packages for aarch64. +# +# Target platform: aarch64 / NVIDIA Tegra (Jetson) +# Intended for Jetson devices (e.g. Orin, AGX Orin, Thor) running JetPack / +# Tegra Linux. PyTorch and related packages are copied from the NGC +# pytorch image rather than installed via pip, since Tegra-compatible +# wheels are not available on the standard PyTorch index. +FROM "nvcr.io/nvidia/pytorch:25.08-py3" AS pytorch_src + +# Pull the base image from Deepstream Triton multiarch image. +FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS inference_base + +RUN --mount=type=cache,target=/root/.cache/pip \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && apt-get install -y --no-install-recommends libyaml-cpp-dev pkg-config cmake + +RUN --mount=type=bind,from=pytorch_src,source=/usr/local/lib/python3.12/dist-packages,target=/tmp/pytorch_src \ + cp -r /tmp/pytorch_src/{torch,functorch,torchgen,torch-*,torchvision*,flash_attn*,tensorrt*} \ + /usr/local/lib/python3.12/dist-packages/ && \ + cp -r /tmp/pytorch_src/triton /usr/local/lib/python3.12/dist-packages/ && \ + sed -i '/self.capability = target.arch/a\ if self.capability == 121: self.capability = 120' /usr/local/lib/python3.12/dist-packages/triton/backends/nvidia/compiler.py +COPY --from=pytorch_src /usr/local/lib/libnvpl* /usr/local/lib/ + +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install \ + jinja2==3.1.6 \ + numpy==1.26.4 \ + omegaconf==2.3.0 \ + networkx==3.5 \ + sympy==1.14.0 \ + pillow==11.3 \ + transformers==4.54.1 \ + opencv-python + +# Build TensorRT OSS to provide customized plugins (e.g. for ONNX) and +# the trtexec tool. The version and GPU architectures are controlled +# by the ARGs below; update them if you target different CUDA/TRT +# versions or GPU architectures. +ARG TRT_VERSION_MAJOR=10 +ARG TRT_VERSION_MINOR=13 +ARG TRT_VERSION_PATCH=0 +ARG TRT_VERSION_BUILD=0 + +ARG TRT_VERSION_MAJOR_MINOR=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR +ARG TRT_VERSION_MAJOR_MINOR_PATCH=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR.$TRT_VERSION_PATCH +ARG TRT_VERSION_FULL=$TRT_VERSION_MAJOR_MINOR_PATCH.$TRT_VERSION_BUILD + +ARG CUDA_VERSION_MAJOR=13 +ARG CUDA_VERSION_MINOR=0 +ARG CUDA_VERSION_PATCH=0 +ARG CUDA_VERSION_BUILD=1 +ARG CUDA_VERSION_MAJOR_MINOR=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR +ARG CUDA_VERSION_FULL=$CUDA_VERSION_MAJOR_MINOR.$CUDA_VERSION_PATCH.$CUDA_VERSION_BUILD +ARG CUDNN_VERSION=9.12.0.46-1 + +ENV TRT_VERSION=$TRT_VERSION_FULL+cuda$CUDA_VERSION_FULL + +WORKDIR /tmp +ENV TRT_TAG="release/$TRT_VERSION_MAJOR_MINOR" +RUN mkdir trt_oss_src && \ + cd trt_oss_src && \ + echo "$PWD Building TRT OSS..." && \ + git clone -b $TRT_TAG https://github.com/nvidia/TensorRT TensorRT && \ + cd TensorRT && \ + git submodule update --init --recursive && \ + mkdir -p build && cd build && \ + cmake .. \ + -DGPU_ARCHS="110;120;121" \ + -DTRT_LIB_DIR=/usr/lib/aarch64-linux-gnu \ + -DTRT_OUT_DIR=/tmp/out \ + -DCUDA_VERSION=$CUDA_VERSION_MAJOR_MINOR \ + -DCUDNN_VERSION=$CUDNN_VERSION \ + -DCMAKE_C_COMPILER=/usr/bin/gcc \ + && for i in {1..50}; do make -j 12 && break; done +RUN echo "Listing /tmp/out:" && ls -l /tmp/out/libnvinfer_plugin.so.* +RUN cp /tmp/out/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ + cp /tmp/out/libnvinfer_plugin_static.a /usr/lib/aarch64-linux-gnu/libnvinfer_plugin_static.a && \ + cp /tmp/out/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/aarch64-linux-gnu/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ + cp /tmp/out/trtexec /usr/local/bin/ && \ + cd ../../../ && \ + rm -rf trt_oss_src + + +# Build DeepStream TAO app post-processors. This must come AFTER the +# DeepStream SDK is installed in the base image. The resulting +# libnvds_infercustomparser_tao.so is copied into the DeepStream lib +# directory for use by ds_app pipelines. Adjust the repo/tag or CUDA +# version if you use different DS/TAO releases. +ENV DS_TAO_APPS_REPO=https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git +ENV DS_TAO_APPS_TAG="master" +ENV DS_SRC_PATH=/opt/nvidia/deepstream/deepstream +ARG CACHE_BUSTER=unique_value_to_bypass_docker_cache +RUN mkdir ds_tao_apps_src && \ + cd ds_tao_apps_src && \ + echo "$PWD Pulling DS TAO apps repo..." && \ + git clone -b $DS_TAO_APPS_TAG $DS_TAO_APPS_REPO ds_tao_apps && \ + cd ds_tao_apps/post_processor && \ + echo "$PWD Building DS TAO apps post processing..." && \ + CUDA_MODULE_LOADING=LAZY CUDA_VER=$CUDA_VERSION_MAJOR_MINOR make DS_SRC_PATH=$DS_SRC_PATH && \ + [ -f libnvds_infercustomparser_tao.so ] && echo "$PWD post processing build successful" || echo "$PWD post processing build falied" && \ + cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib && \ + cd ../../../ && \ + rm -rf ds_tao_apps_src + +WORKDIR /workspace + +# Copy the inference flow package generated by Inference Builder. +# This tarball (here: deepstream-app.tgz) is typically produced when +# running the builder with tarball output enabled, and its name should +# match the generated pipeline artifact you want to deploy. +ADD deepstream-app.tgz /workspace + +# Copy test data for CI/regression testing of this sample pipeline. +# This is optional and specific to the ds_app sample setup. +COPY test_data/* /workspace/test_data/ + +## Set Environment variables required for DeepStream runtime. +# Make sure DeepStream GStreamer plugins and libraries are discoverable. +ENV GST_PLUGIN_PATH=/opt/nvidia/deepstream/deepstream/lib/gst-plugins +ENV LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream/lib:$LD_LIBRARY_PATH +# Enable adaptive batching in nvstreammux for better GPU utilization. +ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes +# Optional: enable detailed latency measurement if needed. +#ENV NVDS_ENABLE_LATENCY_MEASUREMENT=1 +#ENV NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 + +ENTRYPOINT ["python3", "/workspace/__main__.py"] +#ENTRYPOINT ["/bin/bash"] +CMD [] diff --git a/tools/inference_builder/builder/samples/ds_app/README.md b/tools/inference_builder/builder/samples/ds_app/README.md new file mode 100644 index 00000000..ff66dedc --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/README.md @@ -0,0 +1,251 @@ +# DeepStream Application Samples + +This directory contains sample configurations demonstrating how to build DeepStream applications using Inference Builder. + +While the samples support Ampere, Hopper, and Blackwell architectures, the model and the backend set the real hardware requirements. + +**Platform Support:** All ds_app samples are compatible with both x86-64 systems and NVIDIA Jetson Thor device. + +## Models used in the samples + +All the models can be downloaded from NGC and certain models need active subscription. + +If you don't have NGC CLI installed, please download and install it from [this page](https://org.ngc.nvidia.com/setup/installers/cli). + +### Image Classification +- **PCB Classification**: [PCB Classification Model](https://catalog.ngc.nvidia.com/orgs/nvaie/models/pcbclassification) + +### Visual Change Detection +- **Visual Changenet Classification**: [Visual Changenet Classification Model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/visual_changenet_classification) + +### Semantic Segmentation +- **CitySemSegFormer**: [CitySemSegFormer Model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/citysemsegformer) + +### Instance Segmentation +- **Mask2Fomer**: [Masked-attention Mask Transformer](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/mask2former) + +### Grounding Dino +- **Grounding DINO**: [Grounding DINO Model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/grounding_dino) +- **Mask Grounding DINO**: [Mask Grounding DINO Model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/mask_grounding_dino) + +### RT-DETR Detector +- **RT-DETR**: [TrafficCamNet Lite](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/trafficcamnet_transformer_lite) +- **RT-DETR**: [PeopleNet Transformer](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/peoplenet_transformer) + +## Getting Started + +Each sample includes its own README with specific instructions for building and running the DeepStream application. Please refer to the individual sample directories for detailed setup and usage instructions. + +The provided samples can serve as references for creating inference pipelines across a wide range of TAO computer vision models. Each model falls into one of the following categories, with corresponding instructions available: + +- classification +- detection +- segmentation +- GDINO (Open vocabulary detection and segmentation) + +Required model files including the onnx, nvinfer configuration, preprocess configuration can be found from NGC model repository or exported through TAO Finetune Microservice. + +## Configurable Parameters for the DeepStream Backend + +You can enable these features under the [`parameters section of the configuration file`](#complete-configuration-example). + +### Inference Configuration + +The core inference configuration that specifies the model and inference parameters. + +```yaml +parameters: + infer_config_path: + - nvdsinfer_config.yaml # Path to the nvinfer configuration file +``` + +### Preprocess Configuration + +Used to define preprocessing operations that run before inference. This is required when non-image tensors must be injected into the pipeline (e.g., for models that require additional metadata or custom tensor inputs). Refer to [nvdspreprocess plugin documentation](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdspreprocess.html) for more details. + +```yaml +parameters: + preprocess_config_path: + - nvdspreprocess_config.yaml # Path to the nvdspreprocess configuration file +``` + +### Tracker Configuration + +Used for object tracking along with inference using nvtracker. This enables multi-object tracking across frames. + +```yaml +tracker_config: + ll_lib_file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so # Path to the tracker library + ll_config_file: /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_IOU.yml # Path to tracker configuration file + width: 1920 # Tracker width + height: 1088 # Tracker height + display_tracking_id: true # Display tracking id in object text +``` + +### Analytics Configuration + +Used for object activity analysis such as line-crossing, ROI enetering/exiting, crowding and direction detection. + +```yaml +analytics_config: + config_file_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-nvdsanalytics-test/config_nvdsanalytics.txt # Path to the nvdsanalytics configuration file + gpu_id: 0 # GPU core id for analytics running +``` + + +### Message Broker Configuration + +Used to send inference data over the cloud using nvmsgbroker and nvmsgconverter. Supports various message brokers like Kafka, MQTT, etc. + +> **Note:** To use message broker functionality, you need to set up a broker service first and then update the parameters below accordingly. + +```yaml +msgbroker_config: + msgbroker_proto_lib_path: /opt/nvidia/deepstream/deepstream/lib/libnvds_kafka_proto.so # Path to the message broker protocol library + msgbroker_conn_str: localhost:9092 # Message broker connection string (host:port) + msgbroker_topic: ds_app # Topic name for publishing inference results + msgconv_config_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5/configs/dstest5_msgconv_sample_config.txt # Path to message converter configuration + msgconv_payload_type: 2 # Payload type for message conversion (0=DeepStream JSON, 1=DeepStream Minimal JSON, 2=DeepStream Protobuf) + msgconv_msg2p_new_api: false # Use new API which supports publishing multiple payloads using NvDsFrameMeta + msgconv_frame_interval: 1 # Frame interval at which payload is generated (every Nth frame) + msgconv_msg2p_lib: /opt/nvidia/deepstream/deepstream/lib/libnvds_msgconv.so # Path to the message converter library +``` + +### Render Configuration + +To visually see the inference output, you have two options: + +#### 1. Display on Host Machine Terminal + +```yaml +render_config: + enable_display: true # Enable display output on host machine + enable_osd: true # Enable on-screen display with bounding boxes and metadata using nvdsosd +``` + +#### 2. Stream to RTSP Port + +```yaml +render_config: + enable_stream: true # Enable RTSP streaming output + enable_osd: true # Enable on-screen display with bounding boxes and metadata using nvdsosd + rtsp_mount_point: /ds_app # RTSP mount point for the stream + rtsp_port: 8554 # RTSP server port number +``` + +This will start RTSP streaming at `rtsp://localhost:8554/ds_app` + +### Performance Measurement Configuration + +Used to monitor the performance of the inference pipeline and individual components. + +```yaml +perf_config: + enable_fps_logs: true # Enable FPS logging for each source on the host machine terminal + enable_latency_logs: true # Enable element-specific latency logging on host machine terminal +``` + +>**Note:** For latency measurements to work properly, make sure to export these environment variables: + +```bash +export NVDS_ENABLE_LATENCY_MEASUREMENT=1 +export NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 +``` + +### KITTI Data Configuration + +When enabled, this configuration dumps inference and tracking data in KITTI format to the specified directories. + +```yaml +kitti_output_path: + infer: /workspace/models/infer-kitti-dump/ # Directory for inference KITTI data + tracker: /workspace/models/tracker-kitti-dump/ # Directory for tracking KITTI data +``` + +> **Note:** Make sure to create the directories mentioned above before running the application to ensure proper KITTI data dumping. + +### Resolution Configuration + +When specified in the configuration, the input stream will be resized to the specified dimensions before processing. + +```yaml +resize_video: [height, width] # Format: [height, width] +resize_video: [1080, 1920] # Example: Resize to 1080p (1920x1080) +``` + +### Timeout Configuration + +Inference timeout ensures the inference process completes within a specified time limit. The timeout value is specified in seconds. + +```yaml +parameters: + inference_timeout: 5 # Timeout in seconds for inference operations +``` + +Batch timeout specifies the time in microseconds to wait for batched buffers to be sent out after the first buffer is available. + +- **Default value:** `1000 * max_batch_size` microseconds +- **Set to -1:** Wait infinitely for batch formation + +> **Warning:** If your `max_batch_size` in the models section is greater than the number of streams you're running, do not set the timeout to -1. This will cause the pipeline to wait infinitely for batch formation and become unresponsive. In such scenarios, set an appropriate timeout value. + +```yaml +parameters: + batch_timeout: 33000 # Timeout in microseconds for batching +``` + +### [Complete Configuration Example](#complete-configuration-example) + +Here's a complete example showing all the features enabled: + +```yaml +parameters: + # Core inference configuration + infer_config_path: + - nvdsinfer_config.yaml # Path to nvinfer configuration file + + # Resolution configuration + resize_video: [1080, 1920] # Resize input stream to 1080p (1920x1080) + + # Object tracking configuration + tracker_config: + ll_lib_file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so # Tracker library path + ll_config_file: /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_IOU.yml # Tracker config path + + # Message broker configuration for cloud integration + # Note: To use message broker functionality, you need to set up a broker service first and then update the parameters below accordingly. + msgbroker_config: + msgbroker_proto_lib_path: /opt/nvidia/deepstream/deepstream/lib/libnvds_kafka_proto.so # Protocol library + msgbroker_conn_str: localhost:9092 # Broker connection string + msgbroker_topic: ds_app # Topic for publishing results + msgconv_config_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5/configs/dstest5_msgconv_sample_config.txt # Message converter config + msgconv_payload_type: 2 # Payload type for message conversion (0=DeepStream JSON, 1=DeepStream Minimal JSON, 2=DeepStream Protobuf) + msgconv_msg2p_new_api: false # Use new API which supports publishing multiple payloads using NvDsFrameMeta + msgconv_frame_interval: 1 # Frame interval at which payload is generated (every Nth frame) + msgconv_msg2p_lib: /opt/nvidia/deepstream/deepstream/lib/libnvds_msgconv.so # Path to the message converter library + + # Rendering and display configuration + # Choose your output method: enable_display (local display), enable_stream (RTSP streaming), or both + render_config: + enable_display: true # Enable display output + enable_osd: true # Enable on-screen display with metadata + enable_stream: true # Enable RTSP streaming + rtsp_mount_point: /ds_app # RTSP mount point + rtsp_port: 8554 # RTSP server port + + # Performance monitoring configuration + perf_config: + enable_fps_logs: true # Enable FPS logging + enable_latency_logs: true # Enable latency logging + + # KITTI dump configuration + kitti_output_path: + infer: /workspace/models/infer-kitti-dump/ # Directory for inference KITTI data + tracker: /workspace/models/tracker-kitti-dump/ # Directory for tracking KITTI data + + # Inference timeout configuration + inference_timeout: 5 # Timeout in seconds for inference operations + + # Batch timeout configuration + batch_timeout: 33000 # Timeout in microseconds to wait for batching operation +``` diff --git a/tools/inference_builder/builder/samples/ds_app/classification/README.md b/tools/inference_builder/builder/samples/ds_app/classification/README.md new file mode 100644 index 00000000..83f75a8b --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/README.md @@ -0,0 +1,201 @@ +## Introduction + +This sample demonstrates how to build a deepstream application with Inference Builder using classification models: +1. changenet-classify: visual_changenet_nvpcb_deployable_v1.0 from https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/visual_changenet_classification +2. pcbclassification: deployable_v1.1 from https://catalog.ngc.nvidia.com/orgs/nvaie/models/pcbclassification + +## Prerequisites + +**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. + +Model files are loaded from '/workspace/models/{MODEL_NAME}' within the container, thus the volume must be correctly mapped from the host. +You need to export MODEL_REPO environment variable to the path where you want to store the model files. + +```bash +mkdir ~/.cache/model-repo/ +sudo chmod -R 777 ~/.cache/model-repo/ +export MODEL_REPO=~/.cache/model-repo +``` + +You need first download the model files from the NGC catalog and put them in the $MODEL_REPO/{model-name}/ directory, then copy the other required configurations to the same directory: + +**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided [here](../README.md#models-used-in-the-samples) + +### For pcbclassification sample + +Please use `pcbclassification` as the directory: + +```bash +ngc registry model download-version "nvaie/pcbclassification:deployable_v1.1" +# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default +mv pcbclassification_vdeployable_v1.1 $MODEL_REPO/pcbclassification +chmod 777 $MODEL_REPO/pcbclassification +cp -r builder/samples/ds_app/classification/pcbclassification/* $MODEL_REPO/pcbclassification/ +``` + +### For changenet-classify sample + +Please use `changenet-classify` as the directory: + +```bash +ngc registry model download-version "nvidia/tao/visual_changenet_classification:visual_changenet_nvpcb_deployable_v1.0" +mv visual_changenet_classification_vvisual_changenet_nvpcb_deployable_v1.0 $MODEL_REPO/changenet-classify/ +# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default +chmod 777 $MODEL_REPO/changenet-classify +cp -r builder/samples/ds_app/classification/changenet-classify/* $MODEL_REPO/changenet-classify/ +``` + +## Generate the DeepStream Application Package and Build Container Image + +Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment and be sure you're in the inference_builder folder, then activate your virtual environment: + +```bash +source .venv/bin/activate +``` + +### For pcbclassification sample + +Please use ds_pcb.yaml as the configuration: + +#### For x86 Architecture + +```bash +python builder/main.py builder/samples/ds_app/classification/ds_pcb.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build -t deepstream-app builder/samples/ds_app +``` + +#### For Tegra Architecture + +```bash +python builder/main.py builder/samples/ds_app/classification/ds_pcb.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build -t deepstream-app \ + -f builder/samples/ds_app/Dockerfile.tegra \ + builder/samples/ds_app +``` + +#### For Dgx Spark + +```bash +python builder/main.py builder/samples/ds_app/classification/ds_pcb.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build \ + -t deepstream-app \ + -f builder/samples/ds_app/Dockerfile.dgxspark \ + builder/samples/ds_app +``` + +### For changenet-classify sample + +Please use ds_changenet.yaml as the configuration: + +#### For x86 Architecture + +```bash +python builder/main.py builder/samples/ds_app/classification/ds_changenet.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build -t deepstream-app builder/samples/ds_app +``` + +#### For Tegra Architecture + +```bash +python builder/main.py builder/samples/ds_app/classification/ds_changenet.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build \ + -t deepstream-app \ + -f builder/samples/ds_app/Dockerfile.tegra \ + builder/samples/ds_app +``` + +#### For Dgx Spark + +```bash +python builder/main.py builder/samples/ds_app/classification/ds_changenet.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build \ + -t deepstream-app \ + -f builder/samples/ds_app/Dockerfile.dgxspark \ + builder/samples/ds_app +``` + +## Run the deepstream app with image inputs: + +**Note:** The TensorRT engine is generated during the first time run and it takes several minutes. + +**Note:** You can optionally set the `$SAMPLE_INPUT` environment variable to point to your input media directory if you want to perform inference on media files stored on your host machine. + +**Note:** To save the inference results, append the `-s result.json` option to your `docker run` command. + +```bash +# Update this with your actual samples directory path +export SAMPLE_INPUT=/path/to/your/samples/directory +``` + +### For pcbclassification sample + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). +export SAMPLE_INPUT=$(realpath builder/samples/ds_app/classification/sample-inputs/) +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $SAMPLE_INPUT:/sample_input \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url /sample_input/IMG_0002_C71.png \ + --mime image/png +``` + +### For changenet-classify sample + +**Note:** For changenet classification model, it requires two images as input. Sample test images (`pass_0.png` and `pass_1.png`) are embedded in the Docker image at `/workspace/test_data/` for testing purposes. + +**Using embedded test images (recommended for testing):** + +```bash +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url /workspace/test_data/pass_0.png /workspace/test_data/pass_1.png \ + --mime image/png image/png +``` + +**Using your own images from host:** + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). +export SAMPLE_INPUT=/path/to/your/images +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $SAMPLE_INPUT:/sample_input \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url /sample_input/ /sample_input/ \ + --mime image/png image/png +``` + +For classification samples, the output is a list of labels defined in labels.txt. e.g, for pcbclassification model, the output label will be "missing" if there is a part missing from the input image. + +**Note:** You may see `pybind11::handle::dec_ref()` related errors after the inference is completed. This is a known issue and will be fixed in the next release. \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/labels.txt b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/labels.txt new file mode 100644 index 00000000..8be0ce5e --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/labels.txt @@ -0,0 +1,2 @@ +notdefect +defect diff --git a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdsinfer_config.yaml new file mode 100644 index 00000000..e7a51da0 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdsinfer_config.yaml @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + gie-unique-id: 1 + net-scale-factor: 0.00392156862745098 + onnx-file: changenet-classify.onnx + model-engine-file: changenet-classify.onnx_b2_gpu0_fp16.engine + network-mode: 2 + network-type: 1 + offsets: 127.5;127.5;127.5 + num-detected-classes: 2 + input-tensor-from-meta: 1 + infer-dims: 3;512;128 + classifier-threshold: 0 + labelfile-path: labels.txt + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so diff --git a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_0.yaml b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_0.yaml new file mode 100644 index 00000000..1d3d860f --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_0.yaml @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + tensor-name: input_1 + processing-width: 128 + processing-height: 512 + network-input-shape: 2;3;512;128 + network-color-format: 0 + network-input-order: 0 + tensor-data-type: 0 + maintain-aspect-ratio: 1 + symmetric-padding: 1 + scaling-pool-memory-type: 0 + scaling-pool-compute-hw: 0 + scaling-filter: 0 + scaling-buf-pool-size: 6 + tensor-buf-pool-size: 6 + target-unique-ids: 1 + process-on-frame: 1 + unique-id: 5 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so + custom-tensor-preparation-function: CustomTensorPreparation + enable: 1 + +user-configs: + pixel-normalization-factor: 0.007843137 + offsets: 127.5;127.5;127.5 + +group: + - src-ids: 0;2;4;6;8;10;12;14 + custom-input-transformation-function: CustomAsyncTransformation + process-on-roi: 0 + diff --git a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_1.yaml b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_1.yaml new file mode 100644 index 00000000..c700c9b6 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_1.yaml @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + tensor-name: input_2 + processing-width: 128 + processing-height: 512 + network-input-shape: 2;3;512;128 + network-color-format: 0 + network-input-order: 0 + tensor-data-type: 0 + maintain-aspect-ratio: 1 + symmetric-padding: 1 + scaling-pool-memory-type: 0 + scaling-pool-compute-hw: 0 + scaling-filter: 0 + scaling-buf-pool-size: 6 + tensor-buf-pool-size: 6 + target-unique-ids: 1 + process-on-frame: 1 + unique-id: 5 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so + custom-tensor-preparation-function: CustomTensorPreparation + enable: 1 + +user-configs: + pixel-normalization-factor: 0.007843137 + offsets: 127.5;127.5;127.5 + +group: + - src-ids: 1;3;5;7;9;11;13;15 + custom-input-transformation-function: CustomAsyncTransformation + process-on-roi: 0 + diff --git a/tools/inference_builder/builder/samples/ds_app/classification/ds_changenet.yaml b/tools/inference_builder/builder/samples/ds_app/classification/ds_changenet.yaml new file mode 100644 index 00000000..c43b2d04 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/ds_changenet.yaml @@ -0,0 +1,59 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +name: "deepstream-app" +model_repo: "/workspace/models" + +input: +- name: media_url + data_type: TYPE_CUSTOM_LIST + dims: [ -1 ] +- name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + +output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + +models: +- name: changenet-classify + backend: deepstream/nvinfer + max_batch_size: 2 + input: + - name: images + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [-1, -1, 3] + optional: true + - name: media_url + data_type: TYPE_CUSTOM_DS_MEDIA_URL + dims: [ -1 ] + - name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + optional: false + output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + parameters: + infer_config_path: + - nvdsinfer_config.yaml + preprocess_config_path: + - nvdspreprocess_config_0.yaml + - nvdspreprocess_config_1.yaml + inference_timeout: "$INFERENCE_TIMEOUT|3" diff --git a/tools/inference_builder/builder/samples/ds_app/classification/ds_pcb.yaml b/tools/inference_builder/builder/samples/ds_app/classification/ds_pcb.yaml new file mode 100644 index 00000000..caf2e051 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/ds_pcb.yaml @@ -0,0 +1,55 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +name: "deepstream-app" +model_repo: "/workspace/models" + +input: +- name: media_url + data_type: TYPE_CUSTOM_LIST + dims: [ -1 ] +- name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + +output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + +models: +- name: pcbclassification + backend: deepstream/nvinfer + max_batch_size: 1 + input: + - name: images + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [-1, -1, 3] + optional: true + - name: media_url + data_type: TYPE_CUSTOM_DS_MEDIA_URL + dims: [ -1 ] + - name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + parameters: + infer_config_path: + - nvdsinfer_config.yaml + inference_timeout: 5 \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/labels.txt b/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/labels.txt new file mode 100644 index 00000000..33e45d56 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/labels.txt @@ -0,0 +1 @@ +missing diff --git a/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/nvdsinfer_config.yaml new file mode 100644 index 00000000..6ed69a4a --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/nvdsinfer_config.yaml @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + gie-unique-id: 1 + infer-dims: 3;224;224 + maintain-aspect-ratio: 1 + # 0.226 + net-scale-factor: 0.0173520735728 + network-mode: 2 + network-type: 1 # classification + onnx-file: pcbclassification.onnx + model-engine-file: ./pcbclassification.onnx_b1_gpu0_fp16.engine + workspace-size: 1048576 + classifier-threshold: 0 + scaling-filter: 1 + scaling-compute-hw: 1 + labelfile-path: labels.txt diff --git a/tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C71.png b/tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C71.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1389cbdd30fe550037d6a26f12737c4a204f24 GIT binary patch literal 21907 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 literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C75.png b/tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C75.png new file mode 100644 index 0000000000000000000000000000000000000000..db3e9010d507609c449ff4d112fac55dc9b51a9f GIT binary patch literal 23923 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

A}*nR#8gHAC`=A8hs+0Xb0w(D?+evgCE|u0CV4 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

r48&ZKsTkW*#uZ%(_{5Am(&ohT?3hJ2ASt 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 (which is just a placeholder) with your actual RTSP stream URL. The application supports various RTSP stream formats including H.264, H.265, and MJPEG. + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). + +# Note: Replace rtsp:// with your actual RTSP stream URL + +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url rtsp:// \ + --mime video/mp4 +``` + +### Run with source config + +```bash +# source-config: path to the source configuration file that defines input sources +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --source-config /opt/nvidia/deepstream/deepstream/service-maker/sources/apps/python/pipeline_api/deepstream_test5_app/source_list_dynamic.yaml +``` + +**Note:** To use a custom source configuration file, you need to mount your file into the docker container and reference it from within the container's filesystem. This allows you to use your own source configuration instead of the default one. + +```bash +# source-config: path to the source configuration file that defines input sources + +# Note: /workspace/inputs/source_list_dynamic.yaml is just a placeholder for any config present in $SAMPLE_INPUT directory + +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $MODEL_REPO:/workspace/models \ + -v $SAMPLE_INPUT:/workspace/inputs \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --source-config /workspace/inputs/source_list_dynamic.yaml +``` + +### Run with image input + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). + +# Note: /sample_input/test_1.jpg is just a placeholder for any image present in $SAMPLE_INPUT directory + +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $SAMPLE_INPUT:/sample_input \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url /sample_input/test_1.jpg \ + --mime image/jpeg +``` + + diff --git a/tools/inference_builder/builder/samples/ds_app/detection/ds_detect.yaml b/tools/inference_builder/builder/samples/ds_app/detection/ds_detect.yaml new file mode 100644 index 00000000..2f19b82d --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/detection/ds_detect.yaml @@ -0,0 +1,95 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +name: "deepstream-app" +model_repo: "/workspace/models" + +input: +- name: media_url + data_type: TYPE_CUSTOM_LIST + dims: [ -1 ] + optional: true +- name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + optional: true +- name: source_config + data_type: TYPE_CUSTOM_DS_SOURCE_CONFIG + dims: [ 1 ] + optional: true + +output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + +models: +- name: rtdetr + backend: deepstream/nvinfer + max_batch_size: "$MAX_BATCH_SIZE|4" + input: + - name: images + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [ -1 ] + optional: true + - name: media_url + data_type: TYPE_CUSTOM_DS_MEDIA_URL + dims: [ -1 ] + optional: true + - name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + optional: true + - name: source_config + data_type: TYPE_CUSTOM_DS_SOURCE_CONFIG + dims: [ 1 ] + optional: true + output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + parameters: + # timeout in microseconds for batching multiple inputs + batch_timeout: 33333 + infer_config_path: + - nvdsinfer_config.yaml + tracker_config: + ll_lib_file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so + ll_config_file: /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_perf.yml + width: 960 + height: 544 + display_tracking_id: true + # analytics_config: + # config_file_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-nvdsanalytics-test/config_nvdsanalytics.txt + # gpu_id: 0 + # msgbroker_config: + # msgbroker_proto_lib_path: /opt/nvidia/deepstream/deepstream/lib/libnvds_kafka_proto.so + # msgbroker_conn_str: localhost;9092 + # msgbroker_topic: ds_app + # msgconv_config_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5/configs/dstest5_msgconv_sample_config.txt + render_config: + enable_display: "$ENABLE_DISPLAY|true" + enable_osd: true + # enable_stream: true + # rtsp_mount_point: /ds_app + # rtsp_port: 8554 + perf_config: + enable_fps_logs: true + enable_latency_logs: true + # kitti_output_path: + # infer: /workspace/models/resnet/infer-kitti-dump/ + # tracker: /workspace/models/resnet/tracker-kitti-dump/ + inference_timeout: "$INFERENCE_TIMEOUT|5" diff --git a/tools/inference_builder/builder/samples/ds_app/detection/mask2former/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/detection/mask2former/nvdsinfer_config.yaml new file mode 100644 index 00000000..ec9a1dc3 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/detection/mask2former/nvdsinfer_config.yaml @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + gpu-id: 0 + net-scale-factor: 0.017507 + offsets: 123.675;116.280;103.53 + model-color-format: 0 + onnx-file: mask2former_swint.onnx + network-type: 3 ## 3 is for instance segmentation network + infer-dims: 3;800;800 + num-detected-classes: 2 + batch-size: 1 + ## 0=FP32, 1=INT8, 2=FP16 mode + network-mode: 2 + interval: 0 + gie-unique-id: 1 + #no cluster + ## 0=Group Rectangles, 1=DBSCAN, 2=NMS, 3= DBSCAN+NMS Hybrid, 4 = None(No clustering) + ## MRCNN supports only cluster-mode=4; Clustering is done by the model itself + cluster-mode: 4 + output-instance-mask: 1 + input-object-min-width: 32 + input-object-min-height: 32 + output-blob-names: pred_masks;pred_scores;pred_classes + parse-bbox-instance-mask-func-name: NvDsInferParseCustomMask2Former + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so + scaling-compute-hw: 1 + layer-device-precision: /post_processor/Div:fp32:gpu;/post_processor/ReduceSum:fp32:gpu;/post_processor/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Cast_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Where:fp32:gpu;sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Cast_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Cast_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Cast_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/norm/LayerNormalization:fp32:gpu + +class-attrs-all: + pre-cluster-threshold: 0.6 + + + + diff --git a/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/labels.txt b/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/labels.txt new file mode 100644 index 00000000..4b02dbbc --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/labels.txt @@ -0,0 +1,4 @@ +BG +Person +Face +Bag diff --git a/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml new file mode 100644 index 00000000..3f7ffc8c --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Reference configuration for PeopleNetTransformer v2 + +class-attrs-all: + pre-cluster-threshold: 0.3 + topk: 20 + +property: + gpu-id: 0 + offsets: "123.675;116.28;103.53" + net-scale-factor: 0.0173520735728 + labelfile-path: labels.txt + onnx-file: resnet50_peoplenet_transformer_op17.onnx + + # 0=FP32, 1=INT8, 2=FP16 mode + network-mode: 2 + network-type: 0 # detection + num-detected-classes: 4 # BG, Person, Face, Bag + gie-unique-id: 1 + output-blob-names: pred_boxes;pred_logits + infer-dims: 3;544;960 + cluster-mode: 4 + parse-bbox-func-name: NvDsInferParseCustomDDETRTAO + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so diff --git a/tools/inference_builder/builder/samples/ds_app/detection/resnet/labels.txt b/tools/inference_builder/builder/samples/ds_app/detection/resnet/labels.txt new file mode 100644 index 00000000..0181d7d4 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/detection/resnet/labels.txt @@ -0,0 +1,4 @@ +car +bicycle +person +road_sign \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/detection/resnet/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/detection/resnet/nvdsinfer_config.yaml new file mode 100644 index 00000000..9f44632a --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/detection/resnet/nvdsinfer_config.yaml @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + gpu-id: 0 + net-scale-factor: 0.00392156862745098 + onnx-file: resnet18_trafficcamnet_pruned.onnx + model-engine-file: resnet18_trafficcamnet_pruned.onnx_b4_gpu0_fp32.engine + labelfile-path: labels.txt + process-mode: 1 + model-color-format: 0 + network-mode: 0 + num-detected-classes: 4 + interval: 0 + gie-unique-id: 1 + cluster-mode: 2 + infer-dims: 3;544;960 +class-attrs-all: + topk: 20 + nms-iou-threshold: 0.5 + pre-cluster-threshold: 0.2 +class-attrs-0: + topk: 20 + nms-iou-threshold: 0.5 + pre-cluster-threshold: 0.4 \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/labels.txt b/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/labels.txt new file mode 100644 index 00000000..92284f3d --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/labels.txt @@ -0,0 +1,5 @@ +background +bicycle +car +person +road_sign diff --git a/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/nvdsinfer_config.yaml new file mode 100644 index 00000000..18da65ac --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/nvdsinfer_config.yaml @@ -0,0 +1,36 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +class-attrs-all: + pre-cluster-threshold: 0.5 +property: + cluster-mode: 4 + gie-unique-id: 1 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so + data-format: channels_first + infer-dims: 3;544;960 + maintain-aspect-ratio: 1 + model-color-format: 0 + symmetric-padding: 1 + # std: 1 + net-scale-factor: 0.00392156863 + network-mode: 2 + network-type: 0 + num-detected-classes: 5 + onnx-file: resnet50_trafficamnet_rtdetr.onnx + model-engine-file: resnet50_trafficamnet_rtdetr.onnx_b4_gpu0_fp16.engine + parse-bbox-func-name: NvDsInferParseCustomDDETRTAO + workspace-size: 1048576 + labelfile-path: labels.txt diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/README.md b/tools/inference_builder/builder/samples/ds_app/gdino/README.md new file mode 100644 index 00000000..25aa72b4 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/gdino/README.md @@ -0,0 +1,184 @@ +## Introduction + +This sample demonstrates how to build a deepstream application with Inference Builder using grounding dino models: +1. gdino: grounding_dino_swin_tiny_commercial_deployable_v1.0 from https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/grounding_dino +2. mask_gdino: mask_grounding_dino_swin_tiny_commercial_deployable_v1.0 from https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/mask_grounding_dino + +**Note:** For both gdino and mask_gdino models, the steps are the same as described below. Users just need to replace the model name from "gdino" to "mask_gdino" in the commands and directory names. + +## Prerequisites + +**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. + +Model files are loaded from '/workspace/models/{MODEL_NAME}' within the container, thus the volume must be correctly mapped from the host. +You need to export MODEL_REPO environment variable to the path where you want to store the model files. + +```bash +mkdir ~/.cache/model-repo/ +sudo chmod -R 777 ~/.cache/model-repo/ +export MODEL_REPO=~/.cache/model-repo +``` + +You need first download the model files from the NGC catalog and put them in the $MODEL_REPO/{model-name}/ directory, then copy the other required configurations to the same directory: + +**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided [here](../README.md#models-used-in-the-samples) + +### for gdino sample + +Please use `gdino` as the directory: + +```bash +ngc registry model download-version "nvidia/tao/grounding_dino:grounding_dino_swin_tiny_commercial_deployable_v1.0" +# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default +mv grounding_dino_vgrounding_dino_swin_tiny_commercial_deployable_v1.0 $MODEL_REPO/gdino +chmod 777 $MODEL_REPO/gdino +cp -r builder/samples/ds_app/gdino/gdino/* $MODEL_REPO/gdino/ +``` + +### for mask_gdino sample + +Please use `mask_gdino` as the directory: + +```bash +ngc registry model download-version "nvidia/tao/mask_grounding_dino:mask_grounding_dino_swin_tiny_commercial_deployable_v1.0" +# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default +mv mask_grounding_dino_vmask_grounding_dino_swin_tiny_commercial_deployable_v1.0 $MODEL_REPO/mask_gdino +chmod 777 $MODEL_REPO/mask_gdino +cp -r builder/samples/ds_app/gdino/mask_gdino/* $MODEL_REPO/mask_gdino/ +``` + +## Generate the deepstream application package and build it into a container image: + +Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment and be sure you're in the inference_builder folder, then activate your virtual environment: + +```bash +source .venv/bin/activate +``` + +### For x86 Architecture + +```bash +python builder/main.py builder/samples/ds_app/gdino/ds_gdino.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -c builder/samples/tao/processors.py \ + -t \ +&& docker build -t deepstream-app builder/samples/ds_app +``` + +### For Tegra Architecture + +```bash +python builder/main.py builder/samples/ds_app/gdino/ds_gdino.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -c builder/samples/tao/processors.py \ + -t \ +&& docker build \ + -t deepstream-app \ + -f builder/samples/ds_app/Dockerfile.tegra \ + builder/samples/ds_app +``` + +#### For Dgx Spark + +```bash +python builder/main.py builder/samples/ds_app/gdino/ds_gdino.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -c builder/samples/tao/processors.py \ + -t \ +&& docker build \ + -t deepstream-app \ + -f builder/samples/ds_app/Dockerfile.dgxspark \ + builder/samples/ds_app +``` + +## Run the deepstream app with different inputs: + +**Note:** The TensorRT engine is generated during the first time run and it takes several minutes. + +**Note:** You can optionally set the `$SAMPLE_INPUT` environment variable to point to your input media directory if you want to perform inference on media files stored on your host machine. + +**Note:** To save the inference results, append the `-s result.json` option to your `docker run` command. + +```bash +# Update this with your actual samples directory path +export SAMPLE_INPUT=/path/to/your/samples/directory +``` + +**Note:** When you set `enable_display: true` under the `render_config` section of +[ds_gdino.yaml](ds_gdino.yaml), you need to have a display on your host and run both commands in this order to give the container access to it. For more information about render configuration options, see the [render configuration section](../README.md#render-configuration). + + +First, set the display environment variable: +```bash +export DISPLAY=:0 # or :1 depending on your system +``` + +Then, allow X server connections from any host: +```bash +xhost + +``` + +If the configuration is successful, you will see this message in the log: `access control disabled, clients can connect from any host`. + +### Run with video input + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). +# text: the text prompt for object detection (e.g., "car,person"). +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 \ + --mime video/mp4 \ + --text "car,person" +``` + +### Run with RTSP input + +**Note:** Replace `rtsp://` (which is just a placeholder) with your actual RTSP stream URL. The application supports various RTSP stream formats including H.264, H.265, and MJPEG. + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). +# text: the text prompt for object detection (e.g., "car,person"). + +# Note: Replace rtsp:// with your actual RTSP stream URL + +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url rtsp:// \ + --mime video/mp4 \ + --text "car,person" +``` + +### Run with image input + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). +# text: the text prompt for object detection (e.g., "car,person"). + +# Note: /sample_input/test.jpg is just a placeholder for any image present in $SAMPLE_INPUT directory + +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $SAMPLE_INPUT:/sample_input \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + -e DISPLAY=$DISPLAY \ + deepstream-app \ + --media-url /sample_input/test.jpg \ + --mime image/jpeg \ + --text "car,person" +``` \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/ds_gdino.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/ds_gdino.yaml new file mode 100644 index 00000000..7862abcf --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/gdino/ds_gdino.yaml @@ -0,0 +1,104 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: "deepstream-app" +model_repo: /workspace/models + +input: +- name: media_url + data_type: TYPE_CUSTOM_LIST + dims: [ -1 ] +- name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] +- name: text + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + +models: +- name: gdino + backend: deepstream/nvinfer + max_batch_size: "$MAX_BATCH_SIZE|1" + input: + - name: images + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [ -1 ] + optional: true + - name: media_url + data_type: TYPE_CUSTOM_DS_MEDIA_URL + dims: [ -1 ] + - name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + - name: input_ids + data_type: TYPE_INT64 + dims: [ 256 ] + - name: attention_mask + data_type: TYPE_BOOL + dims: [ 256 ] + - name: position_ids + data_type: TYPE_INT64 + dims: [ 256 ] + - name: token_type_ids + data_type: TYPE_INT64 + dims: [ 256 ] + - name: text_token_mask + data_type: TYPE_BOOL + dims: [ 256, 256 ] + output: + - name: pred_logits + data_type: TYPE_FP32 + dims: [ -1, -1 ] + - name: pred_boxes + data_type: TYPE_FP32 + dims: [ -1, 4 ] + - name: pred_masks + data_type: TYPE_FP32 + dims: [ -1, -1, -1, -1 ] + - name: decoded_frames + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [ -1, -1, 3 ] + parameters: + # timeout in nanoseconds for batching multiple inputs + batch_timeout: -1 + infer_config_path: + - nvdsinfer_config.yaml + preprocess_config_path: + - nvdspreprocess_config.yaml + inference_timeout: "$INFERENCE_TIMEOUT|5" + preprocessors: + - kind: "custom" + name: "gdino-tokenizer" + input: ["text"] + output: ["input_ids", "attention_mask", "position_ids", "token_type_ids", "text_token_mask", "pos_map"] + postprocessors: + - kind: "custom" + name: "gdino-postprocessor" + input: ["pred_logits", "pred_boxes", "pred_masks", "pos_map"] + output: ["output"] + config: + infer_config_path: /workspace/models/gdino/nvdsinfer_config.yaml + - kind: "custom" + name: "bbox-overlay-visualizer" + input: ["output", "decoded_frames"] + output: ["output"] + config: + output_dir: /tmp/bbox_overlay + diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdsinfer_config.yaml new file mode 100644 index 00000000..0212835b --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdsinfer_config.yaml @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +class-attrs-all: + topk: 20 + pre-cluster-threshold: 0.2 +property: + gie-unique-id: 1 + # std: 0.5 + net-scale-factor: 0.0078431372549 + onnx-file: grounding_dino_swin_tiny_commercial_deployable.onnx + model-engine-file: grounding_dino_swin_tiny_commercial_deployable.onnx_b1_gpu0_fp16.engine + network-mode: 2 + network-type: 100 # detection + offsets: 127.5;127.5;127.5 + output-tensor-meta: 1 + input-tensor-from-meta: 1 + infer-dims: 3;544;960 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so + diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdspreprocess_config.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdspreprocess_config.yaml new file mode 100644 index 00000000..d185608f --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdspreprocess_config.yaml @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + tensor-name: inputs + processing-width: 960 + processing-height: 544 + network-input-shape: 1;3;544;960 + network-color-format: 0 + network-input-order: 0 + tensor-data-type: 0 + maintain-aspect-ratio: 1 + symmetric-padding: 1 + scaling-pool-memory-type: 0 + scaling-pool-compute-hw: 0 + scaling-filter: 0 + scaling-buf-pool-size: 6 + tensor-buf-pool-size: 6 + target-unique-ids: 1 + process-on-frame: 1 + unique-id: 5 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so + custom-tensor-preparation-function: CustomTensorPreparation + enable: 1 +user-configs: + pixel-normalization-factor: 0.007843137 + offsets: 127.5;127.5;127.5 +group: + - src-ids: -1 + custom-input-transformation-function: CustomAsyncTransformation + process-on-roi: 0 + diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdsinfer_config.yaml new file mode 100644 index 00000000..4577bf84 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdsinfer_config.yaml @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +class-attrs-all: + topk: 20 + pre-cluster-threshold: 0.2 +property: + gie-unique-id: 1 + # std: 0.5 + net-scale-factor: 0.0078431372549 + onnx-file: model_epoch_049.onnx + model-engine-file: model_epoch_049.onnx_b1_gpu0_fp16.engine + network-mode: 2 + network-type: 100 # detection + offsets: 127.5;127.5;127.5 + output-tensor-meta: 1 + input-tensor-from-meta: 1 + infer-dims: 3;544;960 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so + diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdspreprocess_config.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdspreprocess_config.yaml new file mode 100644 index 00000000..1ba6d07c --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdspreprocess_config.yaml @@ -0,0 +1,45 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +property: + tensor-name: inputs + processing-width: 960 + processing-height: 544 + network-input-shape: 1;3;544;960 + network-color-format: 0 + network-input-order: 0 + tensor-data-type: 0 + maintain-aspect-ratio: 1 + symmetric-padding: 1 + scaling-pool-memory-type: 0 + scaling-pool-compute-hw: 0 + scaling-filter: 0 + scaling-buf-pool-size: 6 + tensor-buf-pool-size: 6 + target-unique-ids: 1 + process-on-frame: 1 + unique-id: 5 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so + custom-tensor-preparation-function: CustomTensorPreparation + enable: 1 +user-configs: + pixel-normalization-factor: 0.007843137 + offsets: 127.5;127.5;127.5 +group: + - src-ids: -1 + custom-input-transformation-function: CustomAsyncTransformation + process-on-roi: 0 + diff --git a/tools/inference_builder/builder/samples/ds_app/segmentation/README.md b/tools/inference_builder/builder/samples/ds_app/segmentation/README.md new file mode 100644 index 00000000..96f4afd4 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/segmentation/README.md @@ -0,0 +1,154 @@ +## Introduction + +This sample demonstrates how to build a deepstream application with Inference Builder using segmentation models: +1. citysemsegformer: deployable_onnx_v1.0 from https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/citysemsegformer + +## Prerequisites + +**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. + +Model files are loaded from '/workspace/models/{MODEL_NAME}' within the container, thus the volume must be correctly mapped from the host. +You need to export MODEL_REPO environment variable to the path where you want to store the model files. + +```bash +mkdir ~/.cache/model-repo/ +sudo chmod -R 777 ~/.cache/model-repo/ +export MODEL_REPO=~/.cache/model-repo +``` + +You need first download the model files from the NGC catalog and put them in the $MODEL_REPO/{model-name}/ directory, then copy the other required configurations to the same directory: + +**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided [here](../README.md#models-used-in-the-samples) + +```bash +ngc registry model download-version "nvidia/tao/citysemsegformer:deployable_onnx_v1.0" +# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default +mv citysemsegformer_vdeployable_onnx_v1.0 $MODEL_REPO/citysemsegformer +chmod 777 $MODEL_REPO/citysemsegformer +cp -r builder/samples/ds_app/segmentation/citysemsegformer/* $MODEL_REPO/citysemsegformer/ +``` + +## Generate the deepstream application package and build it into a container image: + +Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment and be sure you're in the inference_builder folder, then activate your virtual environment: + +```bash +source .venv/bin/activate +``` + +### For x86 Architecture + +```bash +python builder/main.py builder/samples/ds_app/segmentation/ds_segformer.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build -t deepstream-app builder/samples/ds_app +``` + +### For Tegra Architecture + +```bash +python builder/main.py builder/samples/ds_app/segmentation/ds_segformer.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build \ + -t deepstream-app \ + -f builder/samples/ds_app/Dockerfile.tegra \ + builder/samples/ds_app +``` + +#### For Dgx Spark + +```bash +python builder/main.py builder/samples/ds_app/segmentation/ds_segformer.yaml \ + -o builder/samples/ds_app \ + --server-type serverless \ + -t \ +&& docker build \ + -t deepstream-app \ + -f builder/samples/ds_app/Dockerfile.dgxspark \ + builder/samples/ds_app +``` + +## Run the deepstream app with different inputs: + +**Note:** The TensorRT engine is generated during the first time run and it takes several minutes. + +**Note:** You can optionally set the `$SAMPLE_INPUT` environment variable to point to your input media directory if you want to perform inference on media files stored on your host machine. + +***Note:** To save the inference results, append the `-s result.json` option to your `docker run` command. + +```bash +# Update this with your actual samples directory path +export SAMPLE_INPUT=/path/to/your/samples/directory +``` + +**Note:** When you set `enable_display: true` under the `render_config` section of [ds_segformer.yaml](ds_segformer.yaml), you need to have a display on your host and run both commands in this order to give the container access to it. For more information about render configuration options, see the [render configuration section](../README.md#render-configuration). + +First, set the display environment variable: +```bash +export DISPLAY=:0 # or :1 depending on your system +``` + +Then, allow X server connections from any host: +```bash +xhost + +``` + +If the configuration is successful, you will see this message in the log: `access control disabled, clients can connect from any host`. + +### Run with video input + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 \ + --mime video/mp4 +``` + +### Run with RTSP input + +**Note:** Replace `rtsp://` (which is just a placeholder) with your actual RTSP stream URL. The application supports various RTSP stream formats including H.264, H.265, and MJPEG. + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). + +# Note: Replace rtsp:// with your actual RTSP stream URL + +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url rtsp:// \ + --mime video/mp4 +``` + +### Run with image input + +```bash +# media-url: the path or URL to the input media. +# mime: the media type (e.g., "video/mp4" or "image/jpeg"). + +# Note /sample_input/test_1.jpg is just a placeholder for any image present in $SAMPLE_INPUT directory + +docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ + -v $SAMPLE_INPUT:/sample_input \ + -v $MODEL_REPO:/workspace/models \ + -v /tmp/.X11-unix/:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ + deepstream-app \ + --media-url /sample_input/test_1.jpg \ + --mime image/jpeg +``` \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/labels.txt b/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/labels.txt new file mode 100644 index 00000000..ff3edb4a --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/labels.txt @@ -0,0 +1,20 @@ +road +sidewalk +building +wall +fence +pole +traffic light +traffic sign +vegetation +terrain +sky +person +rider +car +truck +bus +train +motorcycle +bicycle + diff --git a/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/nvdsinfer_config.yaml new file mode 100644 index 00000000..03fc5065 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/nvdsinfer_config.yaml @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + gie-unique-id: 6 + infer-dims: 3;1024;1820 + network-input-order: 0 + model-color-format: 1 + maintain-aspect-ratio: 1 + # std 0.226 + net-scale-factor: 0.01735207357279195 + network-mode: 2 + model-color-format: 1 + offsets: 123.675;116.28;103.53 + network-type: 2 # seg + num-detected-classes: 19 + onnx-file: citysemsegformer.onnx + model-engine-file: ./citysemsegformer.onnx_b1_gpu0_fp16.engine + workspace-size: 1048576 + parse-segmentation-func-name: NvDsInferParseCustomSegformerTAO + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so + labelfile-path: labels.txt + diff --git a/tools/inference_builder/builder/samples/ds_app/segmentation/ds_segformer.yaml b/tools/inference_builder/builder/samples/ds_app/segmentation/ds_segformer.yaml new file mode 100644 index 00000000..e5187f52 --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/segmentation/ds_segformer.yaml @@ -0,0 +1,66 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: "deepstream-app" +model_repo: "/workspace/models" + +input: +- name: media_url + data_type: TYPE_CUSTOM_LIST + dims: [ -1 ] +- name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + +output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + +models: +- name: citysemsegformer + backend: deepstream/nvinfer + max_batch_size: "$MAX_BATCH_SIZE|2" + input: + - name: images + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [ -1 ] + optional: true + - name: media_url + data_type: TYPE_CUSTOM_DS_MEDIA_URL + dims: [ -1 ] + - name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + parameters: + # timeout in microseconds for batching multiple inputs + batch_timeout: 33333 + infer_config_path: + - nvdsinfer_config.yaml + render_config: + enable_display: "$ENABLE_DISPLAY|true" + # enable segmentation mask visualization + seg_mask_visualization: + width: 1820 + height: 1024 + # enable_osd: true + # enable_stream: true + # rtsp_mount_point: /ds_app + # rtsp_port: 8554 + inference_timeout: "$INFERENCE_TIMEOUT|5" \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/test_config.json b/tools/inference_builder/builder/samples/ds_app/test_config.json new file mode 100644 index 00000000..33ff2d6b --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/test_config.json @@ -0,0 +1,241 @@ +[ + { + "name": "gdino_video_inference", + "description": "Test gdino inference application with video input", + "build_args": { + "TEST_APP_NAME": "deepstream-app", + "CACHE_BUSTER": "gdino_video_test", + "APP_YAML_PATH": "./gdino/ds_gdino.yaml", + "OUTPUT_DIR": ".", + "PROCESSORS_PATH": "../tao/processors.py", + "SERVER_TYPE": "serverless" + }, + "test_config": { + "default_enable": true, + "timeout": 600, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", + "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics" + }, + "volumes": { + "/tmp/model-repo/gdino": "/workspace/models/gdino" + }, + "cmd": [ + "--media-url", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4", + "--mime", + "video/mp4", + "--text", + "car,person" + ], + "prerequisite_script": null, + "models": { + "gdino": { + "source": "NGC", + "target": "/tmp/model-repo", + "path": "nvidia/tao/grounding_dino", + "version": "grounding_dino_swin_tiny_commercial_deployable_v1.0", + "configs": "./gdino/gdino" + } + } + } + }, + { + "name": "gdino_image_inference", + "description": "Test gdino inference application with image input", + "build_args": { + "TEST_APP_NAME": "deepstream-app", + "CACHE_BUSTER": "gdino_image_test", + "APP_YAML_PATH": "./gdino/ds_gdino.yaml", + "OUTPUT_DIR": ".", + "PROCESSORS_PATH": "../tao/processors.py", + "SERVER_TYPE": "serverless" + }, + "test_config": { + "default_enable": true, + "timeout": 600, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", + "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics" + }, + "volumes": { + "/tmp/model-repo/gdino": "/workspace/models/gdino" + }, + "cmd": [ + "--media-url", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg", + "--mime", + "image/jpeg", + "--text", + "car,person" + ], + "prerequisite_script": null, + "models": { + "gdino": { + "source": "NGC", + "target": "/tmp/model-repo", + "path": "nvidia/tao/grounding_dino", + "version": "grounding_dino_swin_tiny_commercial_deployable_v1.0", + "configs": "./gdino/gdino" + } + } + } + }, + { + "name": "changenet_classification_inference", + "description": "Test Visual ChangeNet classification application with image input", + "build_args": { + "TEST_APP_NAME": "deepstream-app", + "CACHE_BUSTER": "changenet_classify_test", + "APP_YAML_PATH": "./classification/ds_changenet.yaml", + "OUTPUT_DIR": ".", + "PROCESSORS_PATH": "../tao/processors.py", + "SERVER_TYPE": "serverless" + }, + "test_config": { + "default_enable": true, + "timeout": 300, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", + "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics" + }, + "volumes": { + "/tmp/model-repo/changenet-classify": "/workspace/models/changenet-classify" + }, + "cmd": [ + "--media-url", + "/workspace/test_data/pass_0.png", + "/workspace/test_data/pass_1.png", + "--mime", + "image/png", + "image/png" + ], + "prerequisite_script": null, + "models": { + "changenet-classify": { + "source": "NGC", + "target": "/tmp/model-repo", + "path": "nvidia/tao/visual_changenet_classification", + "version": "visual_changenet_nvpcb_deployable_v1.0", + "configs": "./classification/changenet-classify" + } + } + } + }, + { + "name": "rtdetr_detection_inference", + "description": "Test RT-DETR detection application with video input", + "build_args": { + "TEST_APP_NAME": "deepstream-app", + "CACHE_BUSTER": "rtdetr_detection_test", + "APP_YAML_PATH": "./detection/ds_detect.yaml", + "OUTPUT_DIR": ".", + "SERVER_TYPE": "serverless" + }, + "test_config": { + "default_enable": true, + "timeout": 600, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", + "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", + "ENABLE_DISPLAY": "false" + }, + "volumes": { + "/tmp/model-repo/rtdetr": "/workspace/models/rtdetr" + }, + "cmd": [ + "--media-url", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4", + "--mime", + "video/mp4" + ], + "prerequisite_script": null, + "models": { + "rtdetr": { + "source": "NGC", + "target": "/tmp/model-repo", + "path": "nvidia/tao/trafficcamnet_transformer_lite", + "version": "deployable_v1.0", + "configs": "./detection/rtdetr" + } + } + } + }, + { + "name": "rtdetr_detection_inference_source_file", + "description": "Test RT-DETR detection application with video input", + "build_args": { + "TEST_APP_NAME": "deepstream-app", + "CACHE_BUSTER": "rtdetr_detection_test", + "APP_YAML_PATH": "./detection/ds_detect.yaml", + "OUTPUT_DIR": ".", + "SERVER_TYPE": "serverless" + }, + "test_config": { + "default_enable": true, + "timeout": 600, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", + "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", + "ENABLE_DISPLAY": "false" + }, + "volumes": { + "/tmp/model-repo/rtdetr": "/workspace/models/rtdetr" + }, + "cmd": [ + "--source-config", + "/workspace/test_data/source_config.yaml" + ], + "prerequisite_script": null, + "models": { + "rtdetr": { + "source": "NGC", + "target": "/tmp/model-repo", + "path": "nvidia/tao/trafficcamnet_transformer_lite", + "version": "deployable_v1.0", + "configs": "./detection/rtdetr" + } + } + } + }, + { + "name": "citysemsegformer_segmentation_inference", + "description": "Test CitySemsegFormer semantic segmentation application with image input", + "build_args": { + "TEST_APP_NAME": "deepstream-app", + "CACHE_BUSTER": "citysemsegformer_segmentation_test", + "APP_YAML_PATH": "./segmentation/ds_segformer.yaml", + "OUTPUT_DIR": ".", + "SERVER_TYPE": "serverless" + }, + "test_config": { + "default_enable": true, + "timeout": 1000, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", + "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", + "ENABLE_DISPLAY": "false" + }, + "volumes": { + "/tmp/model-repo/citysemsegformer": "/workspace/models/citysemsegformer" + }, + "cmd": [ + "--media-url", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg", + "--mime", + "image/jpeg" + ], + "prerequisite_script": null, + "models": { + "citysemsegformer": { + "source": "NGC", + "target": "/tmp/model-repo", + "path": "nvidia/tao/citysemsegformer", + "version": "deployable_onnx_v1.0", + "configs": "./segmentation/citysemsegformer" + } + } + } + } +] + diff --git a/tools/inference_builder/builder/samples/ds_app/test_data/pass_0.png b/tools/inference_builder/builder/samples/ds_app/test_data/pass_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf0437d19cca1f491438b84eb7d4a2622534084 GIT binary patch literal 93529 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 z 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 DMNU^R literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/ds_app/test_data/source_config.yaml b/tools/inference_builder/builder/samples/ds_app/test_data/source_config.yaml new file mode 100644 index 00000000..5f3dc6fd --- /dev/null +++ b/tools/inference_builder/builder/samples/ds_app/test_data/source_config.yaml @@ -0,0 +1,23 @@ +#################################################################################################### +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. +#################################################################################################### + +source-list: +- uri: "file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4" + sensor-id: UniqueSensorId1 + sensor-name: UniqueSensorName1 +- uri: "file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4" + sensor-id: UniqueSensorId2 + sensor-name: UniqueSensorName2 +source-config: + source-bin: "nvurisrcbin" + properties: + file-loop: false diff --git a/tools/inference_builder/builder/samples/dummy/Dockerfile b/tools/inference_builder/builder/samples/dummy/Dockerfile new file mode 100644 index 00000000..836a725e --- /dev/null +++ b/tools/inference_builder/builder/samples/dummy/Dockerfile @@ -0,0 +1,75 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + + +FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS inference_base + +RUN --mount=type=cache,target=/root/.cache/pip \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update && apt-get install -y --no-install-recommends curl ca-certificates libyaml-cpp-dev pkg-config cmake + + #TODO: remove curl? + #&& apt-get purge -y --auto-remove curl + +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install \ + python-multipart==0.0.9 \ + aiofiles==23.2.1 \ + aiohttp==3.11.0 \ + annotated-types==0.7.0 \ + python-magic==0.4.27 \ + torch==2.4.0 \ + numpy==1.26.4 \ + omegaconf==2.3.0 \ + fastapi==0.115.12 \ + uvicorn==0.29.0 + +# Patch JPEG Decoder +RUN if [ -e "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnvcodec.so" ]; then \ + mv /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnvcodec.so /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnvcodec.so_bkp; \ + else \ + echo "File 'libgstnvcodec.so' does not exist"; \ + fi +RUN rm -rf /root/.cache/gstreamer-1.0/ +RUN mkdir /tmp/assets && chmod -R 777 /tmp/assets + +WORKDIR /workspace +ADD dummy.tgz /workspace + +RUN groupadd --gid 1000 --non-unique nvs && \ + useradd --create-home --shell /usr/sbin/nologin --uid 1000 --non-unique --gid 1000 nvs && \ + chown -R 1000.1000 /workspace && chmod o+w /workspace + +USER nvs:1000 + +## Set Environment variables +ENV LD_LIBRARY_PATH /opt/tritonserver/lib:$LD_LIBRARY_PATH +ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes + +RUN touch /workspace/start_server.sh && \ + chmod a+rx /workspace/start_server.sh && \ + cat > /workspace/start_server.sh <<-EOF + #!/usr/bin/env bash + set -eu + # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + # SPDX-License-Identifier: LicenseRef-NvidiaProprietary + python3 /workspace/__main__.py +# while true; do sleep 5; done +EOF + +ENTRYPOINT ["/workspace/start_server.sh"] +CMD [] diff --git a/tools/inference_builder/builder/samples/dummy/README.md b/tools/inference_builder/builder/samples/dummy/README.md new file mode 100644 index 00000000..8bc11a15 --- /dev/null +++ b/tools/inference_builder/builder/samples/dummy/README.md @@ -0,0 +1,25 @@ +This sample demonstrates how to build a inference pipeline with a dummy backend. The experiment is mainly for testing the basic flow. + +The sample configuration supports multiple input types including image data, image assets and video assets in one endpoint + +**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. + +Build the dummy inference flow: + +```bash +python builder/main.py builder/samples/dummy/dummy.yaml -a builder/samples/dummy/openapi.yaml -c builder/samples/dummy/processors.py -o builder/samples/dummy --server-type fastapi -t +``` +Run the dummy inference flow: + +```bash +cd builder/samples +docker compose up --build dry-run +``` +Test the dummy inference flow: + +Go to http://localhost:8800/docs to see the swagger ui. + + + + + diff --git a/tools/inference_builder/builder/samples/dummy/dummy.yaml b/tools/inference_builder/builder/samples/dummy/dummy.yaml new file mode 100644 index 00000000..54f6f1b1 --- /dev/null +++ b/tools/inference_builder/builder/samples/dummy/dummy.yaml @@ -0,0 +1,233 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# the name will be used to identify the microservice. +name: dummy +# the root path to the directory containing the model files. +model_repo: /workspace/.cache/model-repo/ + +# top level inference input specification +input: + # a text input typically for LLM prompts + - name: "text" + data_type: TYPE_STRING + dims: [ -1 ] + optional: true + # base64 encoded image inputs typically for computer vision tasks + - name: "images" + data_type: TYPE_CUSTOM_IMAGE_BASE64 + dims: [ -1 ] + optional: true + # a list of asset ids for image files + - name: "image_assets" + data_type: TYPE_CUSTOM_IMAGE_ASSETS + dims: [ -1 ] + optional: true + # a list of asset ids for video files + - name: "video_assets" + data_type: TYPE_CUSTOM_LONG_VIDEO_ASSETS + dims: [ -1 ] + optional: true + +# top level inference output specification +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ -1, -1, -1 ] + +server: + responders: + infer: + operation: inference + requests: + InferenceRequest: > + { + {% set input_items = request.input %} + {% if input_items|length > 0 %} + {% if input_items[0] is string %} + "images": [ + {% for item in input_items %} + {{ item|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ] + {% if request.text is not none %} + , + "text": [ + {% for item in request.text %} + {{ item|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ] + {% endif %} + {% elif input_items[0] is mapping %} + {% if input_items[0].contentType.startswith("image/") %} + "image_assets": [ + {% for item in input_items %} + {{ item.id|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ] + {% if request.text is not none %} + , + "text": [ + {% for item in request.text %} + {{ item|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ] + {% endif %} + {% elif input_items[0].contentType.startswith("video/") %} + "video_assets": [ + {% for item in input_items %} + {{ item.id|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ] + {% if request.text is not none %} + , + "text": [ + {% for item in request.text %} + {{ item|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ] + {% endif %} + {% endif %} + {% endif %} + {% endif %} + } + responses: + InferenceResponse: > + { + "data": [ + {% for item in response.output %} { + "index": {{loop.index0}}, + "output": {{item | tojson}} + } {% if not loop.last %}, {% endif %} {% endfor %} ], + "usage": { "num_images": 1}, + "model": "nvidia/nvdinov2" + } + add_file: + operation: add_media_file + responses: + AddFileResponse: > + { + "data": { + "id": {{response.id|tojson}}, + "path": {{response.path|tojson}}, + "size": {{response.size|tojson}}, + "duration": {{response.duration|tojson}}, + "contentType": {{response.mime_type|tojson}} + } + } + add_live_stream: + operation: add_live_stream + requests: + AddLiveStreamRequest: > + { + "url": {{request.url|tojson}}, + "description": {{request.description|tojson}}, + "username": {{request.username|tojson}}, + "password": {{request.password|tojson}} + } + responses: + AddLiveStreamResponse: > + { + "data": { + "id": {{response.id|tojson}}, + "path": {{response.path|tojson}}, + "size": {{response.size|tojson}}, + "contentType": {{response.mime_type|tojson}}, + "description": {{response.description|tojson}} + } + } + del_file: + operation: delete_media_file + responses: + DeleteAssetResponse: > + { + "deleted": {{response.status|tojson}} + } + del_live_stream: + operation: delete_live_stream + responses: + DeleteAssetResponse: > + { + "deleted": {{response.status|tojson}} + } + list_files: + operation: list_media_files + responses: + ListFilesResponse: > + { + "data": [ + {% for item in response.assets %} { + "id": {{item.id|tojson}}, + "path": {{item.path|tojson}}, + "size": {{item.size|tojson}}, + "contentType": {{item.mime_type|tojson}} + } {% if not loop.last %}, {% endif %} {% endfor %} + ] + } + list_live_streams: + operation: list_live_streams + responses: + ListLiveStreamsResponse: > + { + "data": [ + {% for item in response.assets %} { + "id": {{item.id|tojson}}, + "path": {{item.path|tojson}}, + "size": {{item.size|tojson}}, + "contentType": {{item.mime_type|tojson}} + } {% if not loop.last %}, {% endif %} {% endfor %} + ] + } + healthy_ready: + operation: health_ready_v1_health_ready_get + +models: + - name: dummy + backend: "dummy" + max_batch_size: 1 + parameters: {} + input: + - name: images + data_type: TYPE_FP32 + dims: [3, 768, 768] + - name: input_ids + data_type: TYPE_INT32 + dims: [ -1 ] + - name: input_lengths + data_type: TYPE_INT32 + dims: [ 1 ] + output: + - name: output + data_type: TYPE_FP32 + dims: [10, 10] + preprocessors: + - kind: "custom" + name: "dummy-preprocessor" + input: ["images"] + output: ["images"] + config: + network_size: [3, 768, 768] + - kind: "custom" + name: "dummy-tokenizer" + input: ["text"] + output: ["input_ids", "input_lengths"] + +routes: { + ':["images", "text"]': 'dummy', + ':["image_assets", "text"]': 'dummy:["images", "text"]', + ':["video_assets", "text"]': 'dummy:["images", "text"]', + 'dummy:["output"]': ':' +} + diff --git a/tools/inference_builder/builder/samples/dummy/openapi.yaml b/tools/inference_builder/builder/samples/dummy/openapi.yaml new file mode 100644 index 00000000..342734d6 --- /dev/null +++ b/tools/inference_builder/builder/samples/dummy/openapi.yaml @@ -0,0 +1,499 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +openapi: 3.1.0 +info: + title: NVIDIA INFERENCE SERVICE + description: NVIDIA INFERENCE SERVICE + version: "1.0.0" + termsOfService: https://nvidia.com/legal/terms-of-use + contact: + name: NVIDIA Support + url: https://help.nvidia.com/ + license: + name: NVIDIA AI Foundation Models Community License + url: https://docs.nvidia.com/ai-foundation-models-community-license.pdf +paths: + /v1/health/ready: + get: + tags: + - "NVIDIA METROPOLIS INFERENCE API" + summary: Health Ready + description: Provide your implementation of readiness to know when container + ready to accept traffic + operationId: health_ready_v1_health_ready_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + /v1/files: + post: + tags: + - Files + summary: Upload a media file that can be used as inference input. + description: Upload media files to be used as inference input. Currently, only images upto 50 MB are supported. + operationId: add_media_file + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/AddFileRequest' + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/AddFileResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + get: + tags: + - Files + summary: Returns a list of the uploaded files. + description: Returns a list that includes ID, file name, size, purpose, file size, and media type for the uploaded files. + operationId: list_media_files + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/ListFilesResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + /v1/files/{file_id}: + delete: + tags: + - Files + summary: Delete a uploaded file. + description: Deletes an uploaded file based on ID. + operationId: delete_media_file + parameters: + - name: file_id + in: path + required: true + schema: + type: string + maxLength: 36 + pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' + description: File having 'file_id' to be deleted. + title: File Id + description: File having 'file_id' to be deleted. + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAssetResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + /v1/live-streams: + post: + tags: + - Live Streams + summary: Add a live stream + description: Add a live stream as an asset + operationId: add_live_stream + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AddLiveStreamRequest' + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/AddLiveStreamResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + get: + tags: + - Live Streams + summary: List live streams + description: List all live streams + operationId: list_live_streams + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/ListLiveStreamsResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + /v1/live-streams/{live_stream_id}: + delete: + tags: + - Live Streams + summary: Delete a live stream + description: Delete a live stream based on ID + operationId: delete_live_stream + parameters: + - name: live_stream_id + in: path + required: true + schema: + type: string + maxLength: 36 + pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' + description: Live stream having 'live_stream_id' to be deleted. + title: Live Stream Id + description: Live stream having 'live_stream_id' to be deleted. + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAssetResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + /v1/inference: + post: + tags: + - "NVIDIA INFERENCE API" + summary: Inference sample + description: "Invokes inference for the input images or videos. + The input image can be Base64 encoded string in the request or it can be + specified using the file identifier of an uploaded file. " + operationId: inference + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InferenceRequest' + required: true + responses: + "200": + description: Invocation is fulfilled. + content: + application/json: + schema: + $ref: '#/components/schemas/InferenceResponse' + application/x-ndjson: + schema: + $ref: '#/components/schemas/InferenceResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' +security: + - Token: [] + +components: + securitySchemes: + Token: + type: http + scheme: bearer + schemas: + MediaAsset: + properties: + id: + type: string + maxLength: 36 + pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' + title: Id + description: The file identifier (asset_id), which can be referenced in the API endpoints. + description: + type: string + title: Description + description: Description of the asset. + path: + type: string + maxLength: 256 + pattern: ^(?:[a-zA-Z][a-zA-Z0-9+.-]*:(?://[^/?#]*)?)?(?:[A-Za-z0-9_.\-~:/?#\[\]@!$&'()*+,;=%]*|(?:[A-Za-z]:)?[\\/]?[A-Za-z0-9_.\-~:/?#\[\]@!$&'()*+,;=%\\]*)$ + title: Filename + description: Local path of the file or URI with optional protocol. + examples: + - myfile.jpg + - /tmp/assets/name.jpg + - file:///tmp/myfile.jpg + - rtsp://camera.example.com/stream + - udp://192.168.1.100:5000 + - rtsp:camera.example.com/stream + - udp:192.168.1.100:5000 + - C:\Users\username\Documents\file.jpg + - \\server\share\file.jpg + - https://example.com/image.jpg + - ftp://ftp.example.com/file.mp4 + size: + type: integer + format: int64 + title: Size + description: Size of the file in bytes. + duration: + type: integer + format: int64 + title: Duration + description: Duration of the file in nanoseconds. + contentType: + type: string + title: Content Type + description: MIME type of the file. + examples: + - image/jpeg + additionalProperties: false + type: object + required: + - id + - path + title: MediaAsset + description: Represents a media asset. + AddFileResponse: + properties: + data: + $ref: '#/components/schemas/MediaAsset' + additionalProperties: false + type: object + required: + - data + title: AddFileResponse + description: Response schema for the add file request. + AddFileRequest: + properties: + file: + type: string + maxLength: 52428800 + format: binary + title: File + description: File object (not file name) to be uploaded. + type: object + required: + - file + title: AddFileRequest + description: Schema for uploading media files. + AddLiveStreamResponse: + properties: + data: + $ref: '#/components/schemas/MediaAsset' + additionalProperties: false + type: object + required: + - data + title: AddLiveStreamResponse + description: Response schema for the add live stream request. + additionalProperties: false + AddLiveStreamRequest: + properties: + url: + type: string + title: URL + description: URL of the live stream. + description: + type: string + title: Description + description: Description of the live stream. + username: + type: string + title: Username + description: Username of the live stream. + password: + type: string + title: Password + description: Password of the live stream. + type: object + required: + - url + title: AddLiveStreamRequest + description: Schema for adding live streams. + ListFilesResponse: + properties: + data: + items: + $ref: '#/components/schemas/MediaAsset' + type: array + maxItems: 100000000000000000 + title: Data + additionalProperties: false + type: object + required: + - data + title: ListFilesResponse + description: Response schema for the list files API. + ListLiveStreamsResponse: + properties: + data: + items: + $ref: '#/components/schemas/MediaAsset' + type: array + maxItems: 100000000000000000 + title: Data + additionalProperties: false + type: object + required: + - data + title: ListLiveStreamsResponse + description: Response schema for the list live streams API. + DeleteAssetResponse: + properties: + deleted: + type: boolean + title: Deleted + description: Indicates if the file was deleted + additionalProperties: false + type: object + required: + - deleted + title: DeleteAssetResponse + description: Response schema for the delete asset request. + InferenceRequest: + additionalProperties: false + properties: + input: + type: array + items: + oneOf: + - type: string + pattern: ^.*$ + maxLength: 4294967296 + - $ref: '#/components/schemas/MediaAsset' + maxItems: 64 + title: Input + description: 'The list of images on which you want to perform inference. Images should be in form + of `data:image/{format};base64,{base64encodedimage}`.Accepted formats are `jpg`, `png` and `jpeg`. Or they + can be uploaded media assets.' + text: + type: array + items: + type: string + maxLength: 256 + title: Text + description: 'A list of text to be used for the extra prompt on the inference.' + model: + type: string + enum: [nvidia/nvdino-v2, nvidia/c-radio-p3-v3, nvidia/convnext] + title: Model + description: ID of the CV model. + example: nvidia/nvdino-v2 + type: object + title: InferenceRequest + description: List of input images for the inference request. + InferenceResponse: + type: object + properties: + data: + items: + $ref: '#/components/schemas/InferenceResult' + type: array + title: Data + description: The list of inference data generated by the model. + maxItems: 10 + model: + type: string + description: Model used to generate masks. + example: nvidia/nvdino + title: Model + usage: + $ref: '#/components/schemas/Usage' + description: Usage statistics for the masks request. + examples: + - num_images: 1 + additionalProperties: false + title: InferenceResponse + description: Response schema for the inference request. + InferenceResult: + type: object + description: Represents the inference result + additionalProperties: true + properties: + index: + type: integer + format: int32 + title: Index + description: The index of the mask in the list of masks. + minimum: 0 + maximum: 127 + required: + - index + - timestamp + title: InferenceResult + Usage: + properties: + num_images: + type: integer + format: int32 + title: Num Images + minimum: 0 + maximum: 64 + description: Number of images processed. + additionalProperties: false + required: + - num_images + title: Usage + Errors: + type: object + properties: + type: + type: string + maxLength: 128 + description: Error type + title: + type: string + maxLength: 128 + description: Error title + status: + type: integer + format: int32 + minimum: 100 + maximum: 999 + description: Error status code + detail: + type: string + maxLength: 1024 + description: Detailed information about the error + instance: + type: string + maxLength: 256 + description: Function instance used to invoke the request + required: + - type + - title + - status + - detail + - instance + title: Errors diff --git a/tools/inference_builder/builder/samples/dummy/processors.py b/tools/inference_builder/builder/samples/dummy/processors.py new file mode 100644 index 00000000..859c5ce8 --- /dev/null +++ b/tools/inference_builder/builder/samples/dummy/processors.py @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import numpy as np +import torch + +class DummyPreprocessor: + name = "dummy-preprocessor" + def __init__(self, config): + self.network_size = config['network_size'] + + def __call__(self, *args): + if len(args) != 1: + raise ValueError("DummyPreprocessor expects exactly one argument") + input = args[0] + if len(input.shape) != 3: + raise ValueError("DummyPreprocessor expects a 3D tensor") + if isinstance(input, np.ndarray) and input.dtype != np.uint8: + raise ValueError("DummyPreprocessor expects a uint8 tensor") + if isinstance(input, torch.Tensor) and input.dtype != torch.uint8: + raise ValueError("DummyPreprocessor expects a uint8 tensor") + return np.random.randn(*self.network_size) + + +class DummyTokenizer: + name = "dummy-tokenizer" + def __init__(self, config): + pass + + def __call__(self, *args): + return np.random.randint(0, 100, size=10), np.array([10]) diff --git a/tools/inference_builder/builder/samples/dummy/test_client.py b/tools/inference_builder/builder/samples/dummy/test_client.py new file mode 100644 index 00000000..d7412ab7 --- /dev/null +++ b/tools/inference_builder/builder/samples/dummy/test_client.py @@ -0,0 +1,86 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import os +import mimetypes +import requests +from requests_toolbelt.multipart.encoder import MultipartEncoder + + +def main(host, port, image_path, video_path, text): + invoke_url = "http://" + host + ":" + port + "/v1/inference" + upload_url = "http://" + host + ":" + port + "/v1/files" + image_data =[] + video_data = [] + if image_path: + for image in image_path: + multipart_data = MultipartEncoder( + fields={ + 'file': (os.path.basename(image), open(image, 'rb'), mimetypes.guess_type(image)[0]) + } + ) + response = requests.post(upload_url, headers={"Content-Type": multipart_data.content_type}, data=multipart_data) + image_data.append(response.json()["data"]) + print(f"image_data uploaded: {image_data}") + payload = { + "input": image_data, + "text": text, + "model": "nvidia/nvdino-v2" + } + headers = { + "Content-Type": "application/json", + "accept": "application/json" + } + response = requests.post(invoke_url, headers=headers, json=payload) + print(f"Inference result from image data: {response.json()}") + + if video_path: + for video in video_path: + multipart_data = MultipartEncoder( + fields={ + 'file': (os.path.basename(video), open(video, 'rb'), mimetypes.guess_type(video)[0]) + } + ) + response = requests.post(upload_url, headers={"Content-Type": multipart_data.content_type}, data=multipart_data) + video_data.append(response.json()["data"]) + print(f"video_data uploaded: {video_data}") + + payload = { + "input": video_data, + "text": text, + "model": "nvidia/nvdino-v2" + } + headers = { + "Content-Type": "application/json", + "accept": "application/x-ndjson" + } + stream_response = requests.post(invoke_url, headers=headers, json=payload, stream=True) + for line in stream_response.iter_lines(): + if line: + print(f"Inference result from video data: {line}") + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("--host", type=str, + help= "Server IP Address", default="127.0.0.1") + parser.add_argument("--port", type=str, + help="Server port", default="8000") + parser.add_argument("--image-path", type=str, help="Image path to send for inference", nargs='*', default=None) + parser.add_argument("--video-path", type=str, help="Video path to send for inference", nargs='*', default=None) + parser.add_argument("--text", type=str, help="Extra text to send for inference", nargs='*', default=None) + args = parser.parse_args() + main(args.host, args.port, args.image_path, args.video_path, args.text) \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/nvclip/Dockerfile b/tools/inference_builder/builder/samples/nvclip/Dockerfile new file mode 100644 index 00000000..c1cd4ed7 --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/Dockerfile @@ -0,0 +1,75 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Sample Dockerfile for an NVCLIP embedding model pipeline that uses +# DeepStream for hardware-accelerated video decoding and a +# TensorRT backend for inference. This is a reference for this specific +# sample, not a universal template for all deployments.em +FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS builder_base + +# Install Python dependencies required by THIS NVCLIP sample (CLIP +# model, TensorRT bindings, FastAPI server, etc.). Versions are pinned +# for reproducibility and can be adjusted for other pipelines. +RUN --mount=type=cache,target=/root/.cache/pip \ + pip install \ + requests==2.32.3 \ + python-multipart==0.0.9 \ + aiofiles==23.2.1 \ + aiohttp==3.11.0 \ + annotated-types==0.7.0 \ + python-magic==0.4.27 \ + Pillow==11.1.0 \ + open_clip_torch==3.2.0 \ + numpy==1.26.4 \ + omegaconf==2.3.0 \ + transformers==4.48.1 \ + fastapi==0.115.12 \ + uvicorn==0.29.0 \ + tensorrt==10.14.1.48.post1 --extra-index-url https://pypi.nvidia.com \ + polygraphy==0.49.24 +ENV TRANSFORMERS_CACHE=/tmp + +WORKDIR /workspace + +# Copy the inference flow package generated by Inference Builder. This +# tarball (here: nvclip.tgz) is typically produced when running the +# builder with tarball output enabled, and its name should match the +# generated pipeline artifact you want to deploy. +ADD nvclip.tgz /workspace + +RUN groupadd --gid 1000 --non-unique nvs && \ + useradd --create-home --shell /usr/sbin/nologin --uid 1000 --non-unique --gid 1000 nvs && \ + chown 1000.1000 /workspace + +USER nvs:1000 + +# Create the entrypoint script that runs the Inference Builder‑generated +# /workspace/__main__.py for this NVCLIP pipeline. Uncomment the +# while‑loop or alternative ENTRYPOINT for debugging if desired. +RUN touch /workspace/start_server.sh && \ + chmod a+rx /workspace/start_server.sh && \ + cat > /workspace/start_server.sh <<-EOF + #!/usr/bin/env bash + set -eu + + # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + # SPDX-License-Identifier: LicenseRef-NvidiaProprietary + python3 /workspace/__main__.py +# while true; do sleep 5; done +EOF + +ENTRYPOINT ["/workspace/start_server.sh"] +#ENTRYPOINT ["/bin/bash"] +CMD [] \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/nvclip/README.md b/tools/inference_builder/builder/samples/nvclip/README.md new file mode 100644 index 00000000..586a3156 --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/README.md @@ -0,0 +1,88 @@ +# Introduction + +This sample demonstrate how to create the inference microservice for an embedding model with TensorRT backend (polygrapy) and fastapi server. + +We provide a sample Dockerfile for the example, which you can use to build a Docker image and test the microservice on any x86 system with an NVIDIA Ampere, Hopper, and Blackwell GPU. + +# Prerequisites + +**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. + +The model used in this sample can be found from NGC: https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/nvclip_vit. Make sure you have the proper access right to the models, and download the checkpoints. + +Before downloading the model file, you need to set up your model repository: + +```bash +mkdir -p ~/.cache/model-repo && chmod 777 ~/.cache/model-repo +export MODEL_REPO=~/.cache/model-repo +``` + +## Download the model file using NGC CLI: + +```bash +ngc registry model download-version "nvidian/tao-nvaie/multi_modal_foundation_models:NVCLIP_224_700M_ViTH14" --dest /tmp +chmod 666 /tmp/multi_modal_foundation_models_vNVCLIP_224_700M_ViTH14/* +``` + +Run `ls /tmp/multi_modal_foundation_models_vNVCLIP_224_700M_ViTH14 -l` and be sure we have the checkpoint file `nvclip_clipa_vit_h14_700M.ckpt`. + +**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided above within the prerequisites section. + +## Create the optimized TensorRT Engine: + +Prior to using the model for accelerated inference, we need to convert the checkpoints into onnx files and generate TensorRT engines accordingly. + +First build the container image for TensorRT optimizer: + +```bash +docker build -t trt-optimizer builder/samples/nvclip/optimizer +``` + +Then generate the engine files using the trt-optimizer + +```bash +docker login nvcr.io +docker run -it --rm --gpus all \ + -v $MODEL_REPO:/workspace/checkpoints/optimized \ + -v /tmp/multi_modal_foundation_models_vNVCLIP_224_700M_ViTH14:/workspace/checkpoints/baseline \ + -e CHECKPOINT_NAME=nvclip_clipa_vit_h14_700M.ckpt \ + trt-optimizer +``` + +Run `ls $MODEL_REPO/`, If the above process runs correctly, there'll be 2 folders created under model-repo directory: +- nvclip_clipa_vit_h14_700M_vision: for vision encoder +- nvclip_clipa_vit_h14_700M_text: for text encoder + +Go to inference_builder folder, adjust the permissions of each folder and copy the model config from source tree to the model folder: + +```bash +sudo chmod 777 $MODEL_REPO/nvclip_clipa_vit_h14_700M_text $MODEL_REPO/nvclip_clipa_vit_h14_700M_vision +cp builder/samples/nvclip/optimizer/configs/* $MODEL_REPO/nvclip_clipa_vit_h14_700M_text +``` + +# Build the inference flow + +Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment. + +```bash +source .venv/bin/activate +python builder/main.py builder/samples/nvclip/tensorrt_nvclip.yaml -a builder/samples/nvclip/openapi.yaml -c builder/samples/nvclip/processors.py -o builder/samples/nvclip --server-type fastapi -t +``` + +# Build and run the docker image + +```bash +cd builder/samples +docker compose up --build ms-nvclip +``` + +# Test the microservice with a client + +After the server is successfully started, open a new terminal in your inference_builder folder to launch the client with a jpeg or png file. The embeddings generated by the model will be returned in the json payload. + +**important:** ** is a place holder, please replace it with the actual image path** + +```bash +source .venv/bin/activate && cd builder/samples/nvclip +./test_client.sh +``` \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/nvclip/openapi.yaml b/tools/inference_builder/builder/samples/nvclip/openapi.yaml new file mode 100644 index 00000000..b75e748b --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/openapi.yaml @@ -0,0 +1,487 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +openapi: 3.1.0 +info: + title: NVIDIA INFERENCE SERVICE API for nvidia/nvclip-vit-h-14 + description: NVIDIA INFERENCE SERVICE API + version: 1.0.0 + termsOfService: https://nvidia.com/legal/terms-of-use + contact: + name: NVIDIA Support + url: https://help.nvidia.com/ + license: + name: NVIDIA AI Foundation Models Community License + url: https://docs.nvidia.com/ai-foundation-models-community-license.pdf +tags: + - name: "NVIDIA NVCLIP API" + description: Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms. +paths: + "/v1/embeddings": + post: + tags: + - Embeddings + summary: Creates an embedding vector representing the input text or image. + description: "Invokes inference using the embedding parameters. If uploading + large images, this POST should be used in conjunction with the NVCF API which + allows for the upload of large assets. \nYou can find details on how to use + NVCF Asset APIs here: https://docs.api.nvidia.com/cloud-functions/reference/createasset." + operationId: create_embedding + requestBody: + content: + application/json: + schema: + "$ref": "#/components/schemas/EmbeddingsRequest" + required: true + x-nvai-meta: + name: "Create Text Embedding" + description: | + Generates an embedding vector from the provided text + using a specified model. The embedding can be returned + in either float array or base64-encoded format. + path: "create" + templates: + - title: "Synchronous requests" + requestEjs: + curl: | + curl -X POST https://integrate.api.nvidia.com/v1/embeddings \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $NVIDIA_API_KEY" \ + -d '{ + "input": ["Image of a dog", + "data:image/jpeg;base64,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"], + "model": "nvidia/nvclip-vit-h-14", + "encoding_format": "float" + }' + python: | + from openai import OpenAI + + client = OpenAI( + api_key="$NVIDIA_API_KEY", + base_url="https://integrate.api.nvidia.com/v1" + ) + + response = client.embeddings.create( + input=[ "Image of a dog", + "data:image/jpeg;base64,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"], + model="nvidia/nvclip-vit-h-14", + encoding_format="float" + ) + + print(response.data[0].embedding) + node: | + import OpenAI from 'openai'; + + const openai = new OpenAI({ + apiKey: '$NVIDIA_API_KEY', + baseURL: 'https://integrate.api.nvidia.com/v1/', + }) + + async function main() { + const response = await openai.embeddings.create({ + input: ["The quick brown fox jumped over the lazy dog", + "data:image/jpeg;base64,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" + ], + model: "nvidia/nvclip-vit-h-14", + encoding_format: "float" + }) + + const embedding = response.data[0].embedding; + process.stdout.write(`${embedding}\n`); + } + + main(); + + response: > + { + "object":"list", + "data":[{"index":0,"embedding":[-0.004141246434301138,-0.01689707487821579,0.012426131404936314,-0.016726966947317123,-0.008678196929395199,-0.009295804426074028,0.009726164862513542,-0.022503215819597244,-0.017610320821404457,0.0003413025406189263,-0.03806029260158539,-0.0029619780834764242,0.03500921279191971,0.00837829802185297,0.0148561280220747,-0.0212395116686821,0.017078636214137077,-0.00459861196577549,-0.021547796204686165,-0.05555511638522148,-0.025865912437438965,-0.0058914124965667725,0.01959407702088356,0.03975767642259598,-0.007950921542942524,0.0019562202505767345,-0.04658181592822075,0.006377906538546085,0.015079125761985779,-0.031968407332897186,-0.03715363144874573,-0.0035252058878540993,0.012734952382743359,0.00885448046028614,-0.033137913793325424,0.004123990423977375,0.03223686292767525,-0.007955869659781456,-0.05179435387253761,0.02788241021335125,0.03838478401303291,0.004643972031772137,-0.000478812464280054,-0.02204490825533867,-0.01571882702410221,0.029129542410373688,-0.0157241839915514,-0.0316602922976017,0.033637937158346176,-0.029353737831115723,-0.012587918899953365,0.025821227580308914,-0.0188415739685297,0.0030159130692481995,0.009031707420945168,-0.01835968717932701,-0.004277291242033243,-0.015501229092478752,0.008056040853261948,0.02946413680911064,0.012887547723948956,0.03265497088432312,0.009581572376191616,-0.1564253270626068,-0.01405376847833395,0.010441438294947147,-0.02548121102154255,0.017590057104825974,0.028301002457737923,0.0026452515739947557,0.013897688128054142,-0.014540997333824635,-0.004527798388153315,0.03835851326584816,-0.03831495717167854,0.019475141540169716,0.010080724954605103,0.02765466645359993,0.00603770837187767,-0.000400348479161039,-0.036044176667928696,-0.012854951433837414,0.03269652649760246,0.010578403249382973,-0.0032332660630345345,-0.0013423014897853136,0.01841983199119568,0.009791318327188492,0.014436286874115467,0.0052145193330943584,-0.03309307619929314,-0.00016763672465458512,-0.0008141322759911418,0.01871390827000141,0.025392455980181694,0.0025894346181303263,0.04925240948796272,0.03293110802769661,-0.008387845940887928,0.011471213772892952,0.00044845533557236195,-0.03572803735733032,0.008408864960074425,0.005150725599378347,0.0027136774733662605,-0.015526692382991314,0.019093889743089676,0.023867793381214142,0.002074668649584055,0.015213425271213055,-0.03485359251499176,-0.01568167470395565,0.0019035213626921177,-0.01312799472361803,-0.0005730802076868713,0.00797811709344387,-0.004188996739685535,-0.0004184977733530104,-0.017942678183317184,0.034504521638154984,0.02762117236852646,-0.01790756545960903,0.0009181434870697558,-0.03011685609817505,0.014275695197284222,0.015353744849562645,-0.031707435846328735,-0.014739478938281536,0.016829000785946846,0.017712701112031937,0.007461728528141975,0.01610303856432438,0.06119834631681442,0.026246709749102592,-0.018305666744709015,0.01999809592962265,0.020704712718725204,0.0006690274458378553,0.006749357562512159,-0.02893499657511711,0.030817503109574318,0.012018632143735886,-0.00804202351719141,-0.018375836312770844,0.010928541421890259,0.010707253590226173,0.013002028688788414,-0.002033184515312314,-0.005340408068150282,0.03387705981731415,-0.022892260923981667,0.014678869396448135,0.013537639752030373,-0.008713518269360065,-0.02593693695962429,0.07454174757003784,-0.024845819920301437,0.02834264747798443,-0.02971474640071392,-0.011557130143046379,-0.008002926595509052,-0.019368749111890793,0.028180744498968124,0.020025016739964485,0.00347648817114532,-0.024566639214754105,0.010174321942031384,-0.0041660708375275135,-0.032732993364334106,0.020300105214118958,-0.015345271676778793,-0.014129326678812504,-0.018271800130605698,-0.051289476454257965,0.010386044159531593,-0.009736659936606884,0.058951228857040405,-0.019437629729509354,0.010607936419546604,-0.035290662199258804,-0.018360501155257225,0.00655018538236618,0.006995379459112883,-0.0038300538435578346,0.025012381374835968,-0.016321701928973198,0.030617311596870422,0.009497919119894505,0.03148818388581276,-0.0013535958714783192,0.04819456487894058,-0.029439838603138924,-0.01625029742717743,0.02551189251244068,-0.012317327782511711,0.00624461006373167,0.0006637125625275075,0.02077995426952839,-0.020640326663851738,0.019393613561987877,0.010709955357015133,0.0266432985663414,0.007108711171895266,-0.004445891827344894,-0.00882738083600998,0.00688306475058198,0.041268378496170044,-0.007304352708160877,-0.03441083803772926,0.008169202134013176,0.011502728797495365,-0.007084041368216276,-0.020305443555116653,-0.025182053446769714,0.017318835482001305,0.033297374844551086,0.01863124966621399,0.021403657272458076,0.00891103409230709,0.006325514055788517,-0.018800152465701103,-0.010625758208334446,-0.026598088443279266,0.0007023508660495281,-0.01763393171131611,0.016984479501843452,-0.004765206947922707,-0.02932245470583439,-0.029315751045942307,-0.028604162856936455,0.001683940296061337,-0.002616151934489608,-0.0017021234380081296,-0.0058658914640545845,-0.01610795594751835,-0.013643622398376465,-0.015004831366240978,-0.02692246250808239,0.036434344947338104,0.050759829580783844,-0.02177542634308338,-0.02895553968846798,0.004390752874314785,-0.0071328007616102695,-0.0051391092129051685,-0.021695662289857864,-0.02772023156285286,0.0008286261581815779,0.005659732036292553,-0.006769032217562199,-0.013968240469694138,-0.026159070432186127,0.025013821199536324,-0.011028788983821869,0.015586946159601212,0.006575345527380705,-0.007776331622153521,-0.019144093617796898,0.00411997688934207,0.007583860773593187,-0.025160323828458786,0.0077173043973743916,-0.007576176896691322,0.003944530617445707,-0.029183954000473022,-0.01147263590246439,-0.016668498516082764,-0.011516440659761429,0.003953504376113415,0.00978126097470522,0.029793299734592438,-0.015394643880426884,0.010064088739454746,-0.021008552983403206,-0.01573927327990532,-0.030099501833319664,0.0003759782121051103,0.0006849328055977821,0.0389038547873497,-0.02146504633128643,-0.018647141754627228,-0.01572437584400177,-0.007592550944536924,-0.0015588185051456094,0.002662237733602524,0.007236766628921032,0.01272666733711958,0.026706160977482796,0.05235762149095535,-0.012421092949807644,0.00013509750715456903,0.04476403817534447,-0.009771216660737991,-0.02118249610066414,0.04454591125249863,-0.017028428614139557,-0.01195906475186348,0.005678544286638498,0.00836592260748148,0.01189937349408865,0.012730962596833706,-0.005630319472402334,0.01452713180333376,-0.013275792822241783,-0.018467117100954056,0.014105362817645073,-0.027940034866333008,0.016660083085298538,0.004231704398989677,-0.01585736684501171,0.02311568148434162,-0.012323492206633091,0.030989425256848335,-0.0017990367487072945,0.005157525651156902,0.011860912665724754,-0.003062732517719269,-0.0021780328825116158,0.027445411309599876,0.0037140955682843924,-0.027354771271348,0.01905607432126999,-0.021779637783765793,0.004786330740898848,-0.014433914795517921,-0.000988819869235158,-0.025424044579267502,-0.02375912293791771,0.0002571911318227649,-0.01142153050750494,0.00633115042001009,-0.03022611141204834,-0.006386420223861933,0.015073674730956554,0.021177120506763458,0.0010647213784977794,0.02805747091770172,-0.012359117157757282,-0.00851079635322094,0.008847501128911972,0.03417434170842171,-0.0038769945967942476,0.028228238224983215,-0.03615333139896393,-0.010117767378687859,0.03377214074134827,-0.037624865770339966,0.00220870622433722,0.00726681062951684,0.0031843953765928745,-0.00023749811225570738,-0.014478919096291065,-0.019637541845440865,-0.017522139474749565,-0.02418166771531105,-0.02212562784552574,0.05112030357122421,-0.025338690727949142,0.034731388092041016,0.03619275614619255,-0.018059806898236275,-0.012308582663536072,0.02949472703039646,-0.005662223789840937,-0.034676920622587204,-0.019521132111549377,-0.0032274748664349318,0.010125264525413513,0.016992516815662384,0.02023046649992466,0.025654837489128113,-0.0035119461826980114,-0.01830037496984005,0.0412350594997406,-0.025699708610773087,0.3945489227771759,0.0022388233337551355,0.006623091641813517,0.02957732230424881,-0.02066163346171379,0.00981396995484829,-0.008598527871072292,0.013277895748615265,0.020120883360505104,-0.006477731745690107,0.030418142676353455,-0.007340218871831894,-0.012548127211630344,0.023639768362045288,0.010163206607103348,-0.034796204417943954,0.0006370857008732855,-0.01274147629737854,-0.02447603829205036,-0.03882390633225441,-0.031244494020938873,-0.026461591944098473,-0.0022103397641330957,-0.019572583958506584,-0.016439631581306458,0.015622923150658607,-0.015521136112511158,0.03595787286758423,-0.0048918514512479305,-0.002181324642151594,0.016870345920324326,0.019937478005886078,0.041617486625909805,-0.005293984431773424,0.007304266560822725,-0.023329349234700203,-0.0038777447771281004,0.0014489589957520366,-0.009314816445112228,-0.022992243990302086,0.003761240281164646,0.0337349958717823,0.0223101619631052,0.013082288205623627,-0.026393432170152664,0.006819479167461395,-0.021051079034805298,0.010396712459623814,-0.034099213778972626,0.022815337404608727,-0.0009314282215200365,0.02074781432747841,0.0007524539832957089,0.02071470208466053,0.009940960444509983,-0.012605628930032253,-0.007611552253365517,0.034557487815618515,-0.015403050929307938,0.0068310028873384,-0.026989562436938286,-0.004270288627594709,-0.020345613360404968,0.01306311134248972,-0.013799809850752354,-0.029911305755376816,-0.009493411518633366,-0.011653181165456772,-0.009218117222189903,-0.0007806898793205619,0.01938917674124241,0.001906267600134015,-0.019101956859230995,-0.007550311740487814,-0.012143472209572792,-0.04367460682988167,0.025638077408075333,-0.014629567973315716,0.028194574639201164,-0.01728118024766445,0.0221963319927454,0.019204938784241676,0.03432143107056618,-0.02657555416226387,0.002004743553698063,-0.020791711285710335,-0.010341069661080837,-0.04619452357292175,-0.005083365831524134,-0.00990467518568039,0.002460786607116461,0.010507918894290924,0.016275444999337196,-0.06338823586702347,-0.007412796374410391,0.06120302900671959,0.010436675511300564,0.0034267818555235863,0.02876623161137104,-0.0007090673316270113,-0.008585995063185692,-0.011970008723437786,0.005763562396168709,-0.024609150364995003,0.02850452810525894,-0.022673225030303,0.01191666629165411,-0.04924258962273598,-0.04102671891450882,0.02912851609289646,-0.016620686277747154,-0.03335510939359665,-0.01148713193833828,-0.010274672880768776,0.009239780716598034,-0.004761083517223597,0.02867140993475914,0.014553618617355824,-0.021684858947992325,0.018985014408826828,0.014055677689611912,0.026981523260474205,-0.004754500463604927,-0.00038642145227640867,-0.013451570644974709,-0.016589971259236336,0.022141065448522568,-0.004539037588983774,0.03152543306350708,0.01208160538226366,-0.024780472740530968,0.02048008143901825,0.006478175055235624,0.03647821769118309,-0.02186744473874569,0.033406343311071396,0.021772053092718124,-0.0025682891719043255,0.04414818063378334,0.00921628624200821,0.008988365530967712,0.007342945784330368,-0.007830486632883549,0.03257960081100464,-0.012104877270758152,0.009669927880167961,-0.0064807008020579815,-0.009303362108767033,0.007799571845680475,0.01879187859594822,0.013339410535991192,0.01986137218773365,0.0008062629494816065,-0.2452234923839569,0.0016491387505084276,-0.04547182098031044,-0.0028053668793290854,0.009465817362070084,-0.021054264158010483,0.008472413755953312,0.0708577111363411,-0.009206854738295078,0.0014748502289876342,0.007380124647170305,0.02171417511999607,-0.003809248097240925,0.013634135015308857,-0.0012557351728901267,0.01094928290694952,0.009313702583312988,-0.02872377634048462,0.0031375717371702194,-0.01976471208035946,0.0020988467149436474,0.003526208456605673,0.01742757111787796,-0.009931430220603943,-0.011483557522296906,-0.016786184161901474,0.003717949381098151,-0.007670466788113117,-0.0036177970468997955,-0.0075657786801457405,-0.014233733527362347,-0.016591597348451614,0.019823554903268814,-0.012458041310310364,-0.012151968665421009,0.012052053585648537,0.023169804364442825,0.007043288554996252,-0.06283272057771683,0.009973570704460144,0.04159274697303772,-0.0027213972061872482,-0.026247259229421616,-0.0005786009132862091,0.005472692660987377,0.010092354379594326,-0.0004666309105232358,0.0027546195778995752,-0.021309800446033478,0.03282300382852554,0.009572925977408886,-0.020475301891565323,-0.02145480178296566,-0.027329636737704277,-0.027623644098639488,0.00212560105137527,0.021240131929516792,0.004549054894596338,-0.009809929877519608,-0.01735849492251873,-0.00037379004061222076,0.02335747703909874,-0.007545780390501022,0.0291381124407053,0.026592694222927094,-0.004482008051127195,0.030557220801711082,-0.020553363487124443,-0.01994723454117775,-0.0064659821800887585,0.02962430939078331,-0.0008922646520659328,-0.053251899778842926,0.009864742867648602,0.020337197929620743,-0.003998814150691032,-0.004185308702290058,6.866786134196445e-05,0.014037802815437317,0.027247929945588112,0.048447780311107635,-0.01015166100114584,0.02130924165248871,-0.0233079232275486,0.02607346512377262,0.040281493216753006,-0.007543081417679787,-0.035924218595027924,0.00569900730624795,-0.008039957843720913,-0.002823712769895792,-0.002803286537528038,-0.006118007004261017,0.022434748709201813,0.013933056965470314,0.002936281030997634,-0.013914977200329304,0.023689141497015953,0.007962143048644066,-0.011495125479996204,-0.02081713080406189,0.01413489505648613,0.012353007681667805,-0.015297238714993,-0.02939029410481453,-0.015370906330645084,0.015056128613650799,0.014590793289244175,0.026387853547930717,-0.00512867234647274,-0.008124465122818947,-0.015975723043084145,0.02681264467537403,-0.010784736834466457,0.01441181544214487,0.03277438506484032,0.010350184515118599,0.009400716051459312,-0.02116876281797886,0.0018132136901840568,-0.03765971586108208,0.0052503058686852455,0.03420824930071831,0.014777399599552155,-0.016579443588852882,-0.03330729156732559,-0.013327029533684254,0.0005119363777339458,-0.020840656012296677,-0.004507529083639383,-0.011724368669092655,-0.03594064712524414,0.0015368282329291105,0.009197228588163853,6.866830517537892e-05,0.0282279159873724,-0.052910640835762024,-0.040126197040081024,-0.029475118964910507,0.005734991282224655,-0.004573932383209467,-0.014002541080117226,0.002804175252094865,0.015738246962428093,0.026456352323293686,-0.011875574477016926,-0.030365511775016785,-0.008460002951323986,0.0012545310892164707,0.010170886293053627,0.037671059370040894,-0.014676935039460659,0.004320601467043161,-0.001990457298234105,-0.008405500091612339,0.009865849278867245,-0.00018689411808736622,0.00172912678681314,0.024112839251756668,-0.018725017085671425,0.02372124046087265,-0.029248137027025223,0.01865905337035656,0.022101448848843575,-0.026333123445510864,-0.03643358498811722,-0.009696442633867264,0.0064179981127381325,-0.02068602852523327,-0.0005584901664406061,-0.009454110637307167,0.03605068847537041,0.0053380923345685005,0.03280332684516907,-0.03048955276608467,0.0333951935172081,-0.013537755236029625,0.011699914000928402,0.00550722936168313,-0.003158178646117449,-0.0023985630832612514,0.0008453089976683259,-0.015513830818235874,-0.01306804921478033,0.014389708638191223,0.00964529998600483,-0.025586921721696854,0.04138404130935669,0.01857851818203926,0.003144270507618785,-0.014571740292012691,0.0008016453357413411,-0.02522323466837406,-0.021038807928562164,0.0260340366512537,-0.014219886623322964,0.02239949256181717,-0.03005603700876236,-0.0002968251646962017,0.04302574694156647,-0.011221950873732567,0.013686021789908409,0.011945300735533237,-0.021525831893086433,0.016680726781487465,-0.009338047355413437,-0.0013850744580850005,-0.004670086316764355,-0.01883036084473133,-0.021457115188241005,0.016184847801923752,-0.02029011771082878,0.012913129292428493,0.03236585855484009,-0.025957178324460983,-0.019733259454369545,0.0014983630971983075,-0.0009224032983183861,0.018271666020154953,-0.016837170347571373,-0.03021763078868389,0.024666650220751762,-0.005840935278683901,-0.0002922657295130193,0.01992247812449932,0.0025119774509221315,0.00942355114966631,-0.024607347324490547,0.0175350159406662,0.008702065795660019,-0.0030363621190190315,0.029419153928756714,0.02159796841442585,-0.02282441034913063,-0.007350334897637367,-0.04385586455464363,0.025481482967734337,-0.0009410607162863016,-0.02334352768957615,0.03386714309453964,-0.00873310212045908,-0.026216188445687294,-0.006248565390706062,-0.0017794203013181686,-0.007381954696029425,0.012409504503011703,0.009813938289880753,0.02856520004570484,-0.016347434371709824,0.009081486612558365,-0.029968498274683952,-0.03468979150056839,0.021744443103671074,-0.017760567367076874,-0.023141345009207726,0.01621149852871895,-0.022202035412192345,0.013410212472081184,-0.04080522432923317,-0.02034514583647251,0.01637434773147106,-0.01152025070041418,0.046551160514354706,-0.028310056775808334,-0.01566505618393421,0.008510574698448181,-0.004622760694473982,-0.04889841377735138,-0.007965917699038982,0.05206499621272087,0.01185608096420765,0.009846740402281284,0.014891531318426132,-0.058800600469112396,0.008623807691037655,-0.02387350983917713,0.028119025751948357,-0.030440298840403557,-0.0022277296520769596,0.008353536017239094,0.022365428507328033,0.04501890018582344,0.006614751648157835,0.009785963222384453,-0.0009170128032565117,-0.2600760757923126,-0.016080114990472794,-0.045600809156894684,0.37184008955955505,0.00042362671229057014,-0.04083505645394325,-0.0060874950140714645,0.004676590207964182,-0.0015948755899444222,0.006051524542272091,0.009526277892291546,-0.024084242060780525,0.0027569576632231474,0.0031010331586003304,-0.01725873164832592,0.012725659646093845,0.020268095657229424,-0.018510079011321068,-0.02837648242712021,0.03285406157374382,-0.04530850052833557,0.013998305425047874,0.006253780797123909,-0.008995305746793747,-0.03807469829916954,-0.005177452228963375,0.0016503955703228712,0.002722939010709524,0.01649770513176918,-0.012529625557363033,-0.011780786328017712,-0.04194258153438568,0.2932291626930237,-0.005160861648619175,-0.025871288031339645,-0.015019666403532028,0.010148548521101475,-0.031369827687740326,0.010749276727437973,0.012993646785616875,-0.032632481306791306,0.008153950795531273,-0.028490586206316948,0.013572984375059605,0.014727172441780567,0.02997964806854725,0.03599761798977852,-0.011955379508435726,-0.0023449331056326628,0.007874103263020515,0.0031892163679003716,-0.0630422905087471,-0.045875441282987595,0.0045535508543252945,-0.006551229860633612,0.014457279816269875,0.02571825310587883,0.0025780280120670795,0.004330016206949949,-0.034172870218753815,-0.0011205438058823347,-0.039298295974731445,0.013649556785821915,-0.019661420956254005,0.007333013229072094,0.0033112831879407167,-0.00907302089035511,0.05523563548922539,0.06825254112482071,-0.029133841395378113,0.007138827815651894,0.0018581028562039137,-0.0027824908029288054,-0.018279701471328735,0.013761738315224648,0.007517494726926088,-0.05192633718252182,0.019648293033242226,-0.0065101259388029575,0.0036486471071839333,-0.011046899482607841,-0.03020889312028885,-0.008332557044923306,-0.023126818239688873,-0.02244790829718113,-0.01924694888293743,0.03122282400727272,0.005073893815279007,-0.01787622645497322,0.021307969465851784,0.014510958455502987,0.010585499927401543,0.014507881365716457,-0.002168098231777549,0.014450464397668839,0.013872889801859856,-0.005848449654877186,0.006843095179647207,-0.01401022169739008,0.007842911407351494,-0.0068886177614331245,-0.015383785590529442,-0.00011942457786062732,-0.0436474084854126,-0.01509405579417944,-0.02598675526678562,0.00272564310580492,0.0038308147341012955,0.004427497275173664,-0.00624738959595561,0.009107514284551144,-0.020619701594114304,0.010628441348671913,0.005285948980599642,0.014739288948476315,0.005811752285808325,0.0026360531337559223,-0.018963048234581947,-0.009475690312683582,0.05785176157951355,-0.01737930439412594,-0.02488931454718113,-0.0399969145655632,0.003923316486179829,0.018002383410930634,-0.02504521608352661,-0.023813752457499504,-0.017232278361916542,0.00795676652342081,-0.001794273965060711,-0.020255418494343758,-0.000540823966730386,-0.001777304452843964,0.006025017239153385,-0.0427837073802948,0.019155099987983704,-0.023230666294693947,0.02336927130818367,-0.007677625399082899,-0.01661953143775463,0.03562818095088005,0.019376536831259727,-0.03837037459015846,-0.04313799738883972,0.015176735818386078,0.008284813724458218,0.009473254904150963,-0.03282340243458748,-0.00046932106488384306,0.018362799659371376,0.01757805608212948,0.015880797058343887,-0.0002934168151114136,0.017278384417295456,0.01328978594392538,-0.02181888371706009,-0.004277618136256933,0.0011071941116824746,-0.005517182871699333,0.026351038366556168,0.028246188536286354,0.0002695833973120898,0.045881159603595734,0.026812918484210968,-0.04657647758722305,0.02684716135263443,-0.010451615788042545,-0.0068083698861300945,0.019908539950847626,-0.022675009444355965,0.01397355180233717,-0.006318001076579094,-0.03992696851491928,0.013012533076107502,0.029743270948529243,-0.004279462620615959,-0.020512741059064865,-0.006946631707251072,-0.0026941944379359484,0.010775614529848099,0.018565719947218895,-0.003007622202858329,-0.013308489695191383,0.021564042195677757,-0.002796269953250885,-0.010052744299173355,-0.02053438313305378,0.005811529234051704,0.00324440049007535,0.05007342994213104,0.0023459268268197775,0.026071349158883095,0.0456637442111969,-0.02146206982433796,0.02050071582198143,-0.01621152274310589,-0.0037330505438148975,0.0015077710850164294,0.004053729120641947,-0.012518640607595444,0.005028035957366228,0.019160188734531403,0.027091413736343384,-0.007997505366802216,-0.06230811029672623,-0.03779023885726929,-0.0016847921069711447,0.004708516411483288,-0.016163809224963188,-0.006259354762732983,0.03144799917936325],"object":"embedding"},{"index":1,"embedding":[-0.025758948177099228,0.012529470957815647,-0.0036885219160467386,0.013843787834048271,0.037662822753190994,-0.002338479971513152,0.014036386273801327,-0.02571997605264187,-0.02729753963649273,0.023403557017445564,-0.025056499987840652,0.006940447259694338,0.005110990721732378,0.002051352057605982,0.009365430101752281,-0.004972649272531271,-0.008563087321817875,-0.04744229465723038,-0.007888401858508587,-0.0362674854695797,-0.04641663655638695,-0.006453453563153744,-0.0054247332736849785,-0.007706332020461559,-0.0316537506878376,0.030296489596366882,-0.03128792345523834,-0.052762240171432495,0.02158757671713829,-0.021084534004330635,0.04210008308291435,-0.009039834141731262,0.020920418202877045,0.011608952656388283,-0.027386372908949852,0.0006602472276426852,0.020277611911296844,-0.006371058989316225,-0.00742132356390357,-4.1149793105432764e-05,-0.026434097439050674,0.02487286366522312,0.005916973575949669,0.004006581846624613,0.013903914019465446,0.03047511726617813,0.010963551700115204,-0.0004852090496569872,-0.008918477222323418,0.0024200777988880873,-0.005843935534358025,-0.009319420903921127,-0.03840300813317299,-0.00996500626206398,0.0029545770958065987,-0.011163728311657906,0.01174638420343399,-0.01566792093217373,-0.02538173645734787,-0.017242424190044403,-0.02570188045501709,0.008348853327333927,-0.024366218596696854,0.012855932116508484,0.027172120288014412,-0.01550713274627924,-0.008245732635259628,-0.004089049994945526,0.011690033599734306,0.011521993204951286,-0.03591177612543106,-0.012615636922419071,-0.02868751250207424,-0.015085900202393532,-0.038233257830142975,-0.016448313370347023,0.037549398839473724,-1.5810148397576995e-05,-0.020648358389735222,-0.016178883612155914,0.02934243343770504,0.015080793760716915,0.034065019339323044,0.007480921223759651,0.00841328501701355,-0.04200136661529541,-0.024020958691835403,-0.0023532297927886248,-0.02087455242872238,-0.05933527648448944,-0.029153307899832726,-0.020886346697807312,0.0040543656796216965,0.03735136613249779,0.018253160640597343,-0.010190599597990513,-0.006286981515586376,0.01285966020077467,0.018434688448905945,-0.01497467141598463,0.032310742884874344,-0.07860245555639267,0.0018877912079915404,0.028160221874713898,-0.012849449180066586,-0.0030984075274318457,0.007885973900556564,0.013520868495106697,-0.023572495207190514,0.002127881860360503,0.011660636402666569,-0.006299937609583139,0.007196198217570782,-0.03473691642284393,-0.0029503554105758667,-0.027778655290603638,-0.03009990230202675,0.014822233468294144,0.004842456895858049,-0.019102793186903,0.020562220364809036,0.01187469158321619,-0.008432718925178051,0.041573893278837204,0.037788111716508865,0.008579518646001816,0.025191793218255043,-0.05494324117898941,0.02662293054163456,0.008876971900463104,0.004079464357346296,-0.03443434461951256,0.016408467665314674,0.01451954711228609,0.03553950786590576,0.0038041200023144484,0.0015072039095684886,0.04059716686606407,0.0009355077636428177,-0.017191415652632713,-0.004116380121558905,-0.03172164037823677,0.06326121836900711,-0.042410608381032944,-0.01892443373799324,0.000301255815429613,0.014980636537075043,0.008668444119393826,-0.006467134226113558,0.01782114803791046,-0.00831829197704792,0.044133491814136505,-0.0182215366512537,-0.04831685125827789,0.03808142989873886,0.040061261504888535,-0.038982439786195755,0.025533616542816162,-0.01174217090010643,0.019772527739405632,0.015522862784564495,0.0030584626365453005,-0.004236175678670406,0.021114911884069443,0.003085960168391466,0.0017570361960679293,0.001260936027392745,0.01698777638375759,-0.037901267409324646,0.04388272017240524,-0.005779674742370844,-0.006999421864748001,-0.0004813986597582698,-0.007257245946675539,-0.009489151649177074,-0.015425185672938824,0.03870683163404465,-0.001314341789111495,-0.01330617442727089,-0.06468790024518967,-0.03725465387105942,-0.03481857851147652,-0.029993493109941483,0.001782639417797327,0.014728524722158909,-0.023663615807890892,0.003847962012514472,0.016591563820838928,0.009149174205958843,0.013524849899113178,0.014362265355885029,-0.05420935899019241,0.015831908211112022,0.02472783997654915,0.011116784065961838,-0.02629142627120018,-0.006261439062654972,0.007880052551627159,-0.008645856752991676,0.0014268093509599566,0.014113090001046658,0.004895458929240704,0.010227800346910954,-0.03291991353034973,0.014134642668068409,-0.00833825021982193,0.021962054073810577,-0.027159973978996277,0.0009441711590625346,-0.023185022175312042,-0.0014423648826777935,-0.02066347748041153,-0.05037784203886986,0.011989530175924301,0.019780971109867096,0.02544422633945942,0.011617295444011688,0.05003154277801514,-0.06384427100419998,0.03010302409529686,0.010974934324622154,-0.02524236962199211,-0.04694395512342453,0.04317052662372589,-0.014662305824458599,-0.011110682971775532,-0.013760543428361416,0.032241374254226685,-0.021328603848814964,-0.005873484071344137,0.020389661192893982,-0.0020480805542320013,-0.036380380392074585,-0.003262253012508154,0.022140566259622574,0.014284894801676273,0.02966931276023388,-0.014425903558731079,-0.007815143093466759,-0.03838087618350983,-0.01601572334766388,-0.008720634505152702,0.00740523636341095,-0.010962577536702156,-0.01864113286137581,-0.03902296721935272,0.0023240335285663605,-0.03017006255686283,-0.010889565572142601,-0.00671680923551321,0.0002762922376859933,-0.0018828880274668336,-0.0048309871926903725,0.0182066410779953,0.034271206706762314,0.051186565309762955,-0.00884862057864666,-0.01352836936712265,0.0046797567047178745,0.01883058063685894,-0.013339086435735226,-0.0057356832548975945,0.031059427186846733,0.013298808597028255,0.01392305176705122,-0.01582452654838562,-0.007665578275918961,-0.04605823755264282,0.01951473578810692,-0.0003280778764747083,-0.017294079065322876,-0.007146188989281654,0.011400898918509483,0.02734067291021347,0.006338881328701973,-0.006668481510132551,0.05188588425517082,0.002703281817957759,-0.02523582987487316,-0.010897639207541943,0.01924540475010872,-0.0009212141158059239,-0.012981880456209183,0.028238492086529732,0.03482842445373535,0.027267372235655785,0.03475086763501167,-0.021356694400310516,-0.0003882267337758094,-0.02259952947497368,0.031467314809560776,-0.011028904467821121,-0.005698627792298794,0.010554694570600986,0.04053696244955063,-0.001511637819930911,-0.061206888407468796,-0.0029146643355488777,0.01215550396591425,0.006889894139021635,0.044212453067302704,-0.030752873048186302,0.004620553459972143,-0.00023938347294460982,-0.024459535256028175,-0.009339572861790657,-0.04982149228453636,0.033970270305871964,0.021464470773935318,-0.006805697921663523,0.026049407199025154,-0.01640831120312214,0.0077367620542645454,-0.04079772159457207,-0.016999192535877228,0.030637428164482117,0.00034822430461645126,0.020782500505447388,0.025917865335941315,0.045175231993198395,0.004338984377682209,0.004516663961112499,-0.03431222215294838,-0.0018257899209856987,-0.010955095291137695,0.004570914898067713,0.3870064914226532,0.026963500306010246,-0.035104792565107346,0.011724506504833698,-0.013705889694392681,-0.0509878471493721,-0.02112174779176712,0.008177575655281544,0.01993235945701599,-0.014281210489571095,0.017260506749153137,-0.045702073723077774,0.006509148050099611,0.0032414980232715607,0.005621928256005049,0.034762829542160034,-0.0007084138342179358,-0.020915701985359192,0.005990590900182724,0.021028028801083565,-0.045931894332170486,0.010121088474988937,0.0044517978094518185,-0.03989334776997566,-0.008309227414429188,-0.02713819220662117,-0.00228235125541687,-0.01568441092967987,-0.02216830477118492,-0.004598020110279322,-0.010677327401936054,-0.009580195881426334,-0.003543584141880274,0.03834174945950508,0.01644299365580082,-0.03651408851146698,0.0067563727498054504,-0.015657847747206688,0.0012091726530343294,-0.033857397735118866,-0.012780657038092613,0.005480979103595018,-0.03239237889647484,0.013967982493340969,0.03662465885281563,-0.03532421588897705,0.01288940105587244,-0.02662917785346508,-0.04374580830335617,-0.015550529584288597,-0.006989222951233387,0.011201686225831509,0.06042121350765228,0.007955683395266533,-0.003084216732531786,-0.011056994087994099,0.0037636784836649895,0.007206861395388842,0.027355395257472992,-0.00904571358114481,-0.04939938336610794,0.019223814830183983,0.04885827749967575,0.004720363765954971,-0.03998367488384247,-0.04003869742155075,-0.010004842653870583,-0.009810425341129303,-0.011637724004685879,0.01382185984402895,0.0011330196866765618,0.02921152301132679,0.007083197124302387,0.015879228711128235,-0.011928517371416092,-0.011234760284423828,0.0018301004311069846,-0.024675864726305008,-0.008007164113223553,0.05101221799850464,-0.01141275092959404,0.018010249361395836,-0.02040042355656624,-0.017251471057534218,-0.015094183385372162,0.024670656770467758,-0.007679453119635582,-0.0023301681503653526,0.01593824103474617,-0.017610495910048485,0.0392007976770401,0.039871010929346085,0.038008034229278564,-0.034386586397886276,0.03700798749923706,-0.02587129920721054,-0.0024405464064329863,-0.024259598925709724,0.007090513128787279,0.0037076836451888084,0.038092534989118576,0.002115082461386919,-0.0011044091079384089,-0.015718095004558563,0.0022297045215964317,0.025628330186009407,0.03330320864915848,0.011225000023841858,-0.01548957172781229,0.01112839300185442,-0.0005184286274015903,0.012068329378962517,-0.0018296351190656424,-0.0198866818100214,0.021056117489933968,0.042734939604997635,0.011327057145535946,-0.010904025286436081,-0.004531412851065397,0.0400407649576664,0.005563332233577967,-0.012673179619014263,0.0009829836199060082,-0.008927428163588047,-0.047734569758176804,-0.0014640727313235402,0.014513886533677578,0.014106206595897675,-0.02875625342130661,0.027171747758984566,0.05241311714053154,0.02950497902929783,-0.030510742217302322,-0.006987013854086399,-0.006407857406884432,0.03180888295173645,0.004917642567306757,0.010594794526696205,-0.025200797244906425,-0.018448997288942337,-0.0018395927036181092,-0.010068191215395927,-0.06761447340250015,0.03835010156035423,0.02366061508655548,-0.014682404696941376,0.022400829941034317,-0.05012622848153114,-0.02561725489795208,0.027008507400751114,0.0015325259882956743,0.05601796507835388,-0.05630066990852356,0.02009653113782406,-0.02773994207382202,-0.04563506320118904,-0.01889072358608246,-0.05071859434247017,-0.008834474720060825,0.0068897102028131485,-0.015094980597496033,-0.0444563664495945,-0.03613041713833809,-0.02099127508699894,-0.03687067702412605,-0.044355358928442,-0.010367853567004204,0.028472913429141045,0.01250379253178835,0.016446998342871666,-0.031522832810878754,0.0023249490186572075,0.018918611109256744,0.0017459378577768803,-0.019281113520264626,0.019197694957256317,-0.007465716917067766,0.04378819465637207,-0.012430009432137012,-0.007315130904316902,0.005798067897558212,0.026136348024010658,-0.05674370378255844,-0.02571779303252697,-0.011887992732226849,-0.01981491968035698,-0.010861019603908062,0.03535069525241852,-0.028128519654273987,0.004035569727420807,0.05296939238905907,-0.0008354758028872311,0.010797429829835892,0.027159707620739937,0.024418288841843605,0.01101562287658453,0.020692870020866394,0.006610993295907974,0.026814602315425873,0.04471895843744278,0.01140670944005251,0.0178330447524786,0.020213549956679344,-0.0070716277696192265,-0.04305743798613548,0.011643058620393276,-0.005915377289056778,0.03349792957305908,-0.026610828936100006,-0.004258973523974419,-0.02179308421909809,0.042003829032182693,-0.025853054597973824,-0.012385998852550983,0.002028633374720812,-0.022666480392217636,0.01318320445716381,0.01882292702794075,0.031063402071595192,-0.03805585950613022,0.035645823925733566,0.002151072956621647,0.007318989373743534,0.016153370961546898,0.04089585691690445,-0.023799102753400803,0.013497691601514816,-0.026399897411465645,-0.049984849989414215,-0.017662756145000458,0.03448191657662392,-0.008758445270359516,0.008639284409582615,-0.013155733235180378,-0.018071550875902176,0.019655385985970497,-0.013738088309764862,0.04678110033273697,0.027242839336395264,0.0018837314564734697,-0.030672207474708557,0.011950843036174774,0.029605276882648468,0.017911622300744057,-0.015331711620092392,-0.014341580681502819,0.024940475821495056,0.009718193672597408,0.00183775182813406,0.031651679426431656,0.027826672419905663,0.007948522455990314,-0.005205032881349325,0.02395801618695259,-0.03033900447189808,-0.026571951806545258,-0.03070627897977829,-0.011602534912526608,0.019729234278202057,0.018046380952000618,-0.019431443884968758,-0.00806436873972416,-0.007017528638243675,-0.0008441002573817968,0.008560731075704098,-0.01921754702925682,-0.005517745856195688,-0.007153145503252745,0.04134321212768555,0.0026307522784918547,-0.02331283688545227,-0.0027744488324970007,0.009677980095148087,0.021427741274237633,-0.004601431544870138,-0.00012251334555912763,0.028399625793099403,-0.006959706079214811,-0.01915843039751053,0.03018774650990963,-0.03351955860853195,0.06670859456062317,-0.03129318356513977,-0.009517683647572994,0.049102671444416046,-0.010580141097307205,0.01756119914352894,0.02052275277674198,-0.00034793917438946664,-0.05726324021816254,-0.021166298538446426,-0.005764365196228027,0.028409039601683617,-0.004559235647320747,-0.036898449063301086,0.016247611492872238,0.04555016756057739,-0.025495193898677826,0.016971617937088013,-0.0012656591134145856,-0.028013968840241432,0.02536524273455143,-0.016685131937265396,0.003650881117209792,-0.001630979822948575,-0.01653134636580944,-0.006658824160695076,0.03132772073149681,0.011927434243261814,-0.026557045057415962,-0.19315965473651886,0.006070801988244057,-0.018877672031521797,0.015526301227509975,0.04478176310658455,-0.0008945377776399255,0.013174171559512615,0.023236852139234543,0.001876345369964838,-0.009473146870732307,-0.0458466038107872,0.028369978070259094,-0.03175703436136246,-0.030467139557003975,0.05286461114883423,0.006947376299649477,-0.018354244530200958,0.013310008682310581,-0.010109184309840202,-0.014129184186458588,-0.0019312937511131167,-0.014013266190886497,-0.010930518619716167,-0.039712607860565186,-0.0027366008143872023,0.022063201293349266,0.041075583547353745,0.009186118841171265,0.018548376858234406,-0.021595891565084457,-0.00893919263035059,-0.007997609674930573,-0.011303680017590523,-0.00778892682865262,0.003854784881696105,0.0269649475812912,0.003425600938498974,0.0011551182251423597,0.014906526543200016,-0.0268486887216568,0.015963394194841385,-0.037813760340213776,0.059832315891981125,-0.012539348565042019,-0.024167275056242943,0.010521982796490192,-0.01648557558655739,0.004499785602092743,-0.0023810069542378187,0.006643267348408699,-0.001206551562063396,-0.009098317474126816,0.004006785340607166,0.016244588419795036,0.022345518693327904,-0.003811529139056802,0.00012655694445129484,-0.007302777376025915,-0.03910021483898163,-0.011724776588380337,-0.022477485239505768,0.012693922966718674,-0.014236903749406338,0.012715728022158146,0.013103259727358818,0.0066465092822909355,0.020985668525099754,0.013942337594926357,0.0061926888301968575,-0.03711562603712082,-0.04018467292189598,0.004651527386158705,0.028886903077363968,-0.003899460658431053,0.014873364940285683,-0.051289740949869156,0.023774413391947746,0.025767862796783447,-0.008617984130978584,-0.01755518466234207,0.04933374375104904,0.023852013051509857,-0.02684945799410343,0.0013523841043934226,-0.015365022234618664,-0.059762801975011826,0.02864656411111355,0.026391534134745598,0.03813229128718376,-0.012687886133790016,0.028539935126900673,0.08154822140932083,0.010055551305413246,0.011949121952056885,-0.013092302717268467,-0.026565100997686386,-0.012263688258826733,-0.03514808788895607,-0.008544047363102436,0.04167114570736885,0.0164664164185524,-0.021921271458268166,0.030826108530163765,-0.0005666292272508144,0.030772607773542404,0.028927890583872795,-0.026523489505052567,-0.040638573467731476,0.010861112736165524,0.01859780214726925,-0.02758798561990261,0.00662233354523778,-6.221868534339592e-05,-0.2581826150417328,-0.007566799875348806,0.023047540336847305,0.05015581473708153,0.022923756390810013,0.011462699621915817,-0.006452121306210756,0.01042680349200964,-0.045284438878297806,-0.03936319053173065,0.025846514850854874,0.01967019960284233,0.01158192753791809,-0.002621933352202177,-0.004696441814303398,-0.007103266194462776,-0.027700381353497505,-0.01727375201880932,-0.054769087582826614,-0.0009374514338560402,-0.0020084483548998833,-0.029182057827711105,-0.02928612194955349,-0.013479417189955711,0.014092243276536465,-0.02705872803926468,-0.2062506377696991,-0.032158512622117996,-0.001065562479197979,-0.0021600360050797462,0.010404354892671108,-0.004580553621053696,-0.018738871440291405,0.006836488842964172,0.012025109492242336,-0.006518018431961536,-0.015243074856698513,-0.014231253415346146,-0.007296913769096136,-0.029546253383159637,-0.0028502221684902906,-0.002059105783700943,0.007829741574823856,-0.004269144497811794,-0.003506772220134735,0.0058273510076105595,0.038228943943977356,-0.012362856417894363,0.009196849539875984,0.0353967659175396,0.019691014662384987,0.043394770473241806,-0.02336663194000721,-0.02038705162703991,0.010309695266187191,0.010493269190192223,-0.0331498458981514,-0.00010303814633516595,4.527062628767453e-05,0.02266409434378147,0.0237970482558012,0.013503585942089558,0.033019356429576874,0.00894979014992714,0.026262132450938225,-0.0324513241648674,-0.0023145636077970266,-0.023432565852999687,0.025271620601415634,-0.054976947605609894,-0.04756287485361099,-0.0010525790276005864,-0.011116070672869682,-0.013173092156648636,0.013781415298581123,-0.04248414933681488,0.03725264593958855,0.02580961212515831,-0.012125491164624691,0.02321331948041916,-0.02967040054500103,0.006719142198562622,0.03681555762887001,0.012434516102075577,-0.020225614309310913,0.0033314889296889305,0.045238882303237915,0.0066699073649942875,-0.012408467009663582,0.00021850998746231198,0.019060451537370682,-0.0006506550125777721,0.01005454920232296,0.01281825453042984,0.00896813441067934,0.0012294386979192495,-0.019075196236371994,-0.010988892987370491,-0.05445272848010063,0.014546976424753666,-0.017002645879983902,-0.0025320511776953936,0.010421212762594223,0.005355092231184244,0.03140374645590782,-0.026313388720154762,-0.012697379104793072,0.02073219232261181,-0.030334170907735825,-0.002526636002585292,0.0777592658996582,-0.0059554907493293285,0.02468961291015148,-0.00607061805203557,-0.02240404114127159,0.006578207015991211,-0.08804464340209961,0.00022360611183103174,0.015509969554841518,0.0393218956887722,0.04558814689517021,-0.02600737102329731,-0.021574974060058594,0.017614254727959633,0.026419052854180336,-0.04863389581441879,-0.0016794393304735422,-0.016488557681441307,0.010242369025945663,-0.03042541816830635,0.05223585292696953,0.04129870608448982,0.01913716457784176,-0.041871797293424606,0.0030736117623746395,-0.01691257767379284,-0.013012166135013103,0.00914959516376257,-0.0024987095966935158,0.007190996780991554,-0.025641370564699173,-0.010286902077496052,-0.007655346300452948,0.013065553270280361,-0.034356068819761276,0.015048309229314327,-0.02974660135805607,-0.005650005768984556,-0.038438260555267334,-0.02338286116719246,0.011432373896241188,-0.026035446673631668,-0.03573842719197273,0.008249914273619652,-0.0048288218677043915,-0.009025415405631065,0.03204389289021492,-0.052015554159879684,-0.0005947394529357553,0.021108917891979218,-0.022609738633036613,0.007677216082811356,-0.002741162432357669,0.020198849961161613,-0.030973486602306366,0.022916922345757484,0.03197067603468895,0.0075868177227675915,0.021733008325099945,-0.022171737626194954,0.005577221978455782,0.06291462481021881,0.010051161050796509,0.005346635356545448,-0.0051164403557777405,0.0022031276021152735,-0.024477621540427208,0.020949041470885277,0.010851479135453701,0.038324132561683655,-0.006827448029071093,0.03552427887916565,-0.014253451488912106,0.015789812430739403,-0.008592965081334114,0.0009922918397933245,-0.02933741733431816,-0.006749261170625687,0.0038825541269034147,-0.0180740337818861,-0.019547542557120323,0.016794750466942787,0.01443388406187296,-0.01414264552295208,-0.0030532937962561846,-0.03292255103588104,-0.014052394777536392,-0.02198878861963749,-0.047747328877449036,0.0030371444299817085,0.021263878792524338,0.03646152466535568,-0.019917698577046394,0.0015535950660705566,-0.01240338385105133,0.011204435490071774,-0.004732639994472265,-0.005655153654515743,0.012495842762291431,-0.02762053720653057,0.0033291024155914783,-0.043057601898908615,-0.01731264591217041,0.009004561230540276,-0.010167465545237064,-0.017755435779690742,-0.006926957983523607,0.016514629125595093,-0.009980103000998497,-0.013384087942540646,-0.02238798327744007,0.011801606975495815,-0.02240007556974888,0.03967168927192688,0.005245546344667673,0.004888048395514488,-0.019460370764136314,-0.01258539967238903,-0.019087960943579674,-0.0111539326608181,-0.02416262961924076,0.0175357423722744,0.037282995879650116,-0.009718337096273899,0.004204864148050547,-0.05133983865380287,-0.01688362844288349,0.007046089507639408,0.030954411253333092,-0.04153471067547798,-0.045260824263095856,-0.008186589926481247,0.03154851496219635,-0.011969528160989285,0.0371565967798233,0.025364214554429054,0.006151722744107246,-0.00727783003821969,-0.009958743117749691,-0.009278294630348682,0.007596738636493683,0.01336624100804329,-0.021447397768497467,0.02054646424949169,-0.02611776813864708,-0.00033270398853346705,-0.03493153676390648,0.019608505070209503,0.0039603435434401035,-0.06740758568048477,-0.006607137154787779,-0.015215092338621616,0.0280825924128294,-0.01991902105510235,0.03201878070831299,-0.04012446105480194,-0.3158552050590515,0.01535746268928051,-0.036682210862636566,-0.010678562335669994,-0.019429007545113564,0.021722931414842606,0.0052073015831410885,-0.01830298826098442,0.011535142548382282], + "object":"embedding"}], + "usage":{"num_images":1,"prompt_tokens":77,"total_tokens":77}, + "model":"nvidia/nvclip-vit-h-14" + } + responses: + '200': + description: Invocation is fulfilled. + content: + application/json: + schema: + "$ref": "#/components/schemas/EmbeddingsResponse" + '402': + description: Payment Required. + content: + application/json: + schema: + properties: + detail: + type: string + maxLength: 256 + format: ^[a-zA-Z-]{1,64}$ + description: Contains specific information related to the error and why it occurred. + example: You have reached your limit of credits. + type: object + title: PaymentRequiredError + '422': + description: Validation failed, provided entity could not be processed. + content: + application/json: + schema: + "$ref": "#/components/schemas/Errors" + example: + type: urn:nvcf-worker-service:problem-details:unprocessable-entity + title: Unprocessable Entity + status: 422 + detail: string + instance: "/v2/nvcf/pexec/functions/bc205f8e-1740-40df-8d32-c4321763498a" + requestId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + '500': + description: The invocation ended with an error. + content: + application/json: + schema: + "$ref": "#/components/schemas/Errors" + example: + type: urn:nvcf-worker-service:problem-details:internal-server-error + title: Internal Server Error + status: 500 + detail: string + instance: "/v2/nvcf/pexec/functions/bc205f8e-1740-40df-8d32-c4321763498a" + requestId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 +security: +- Token: [] +components: + securitySchemes: + Token: + type: http + scheme: bearer + schemas: + NIMAssetInfoResponse: + properties: + assetName: + type: string + title: Assetname + description: The name of the asset used by NIMs. + url: + type: string + title: Url + description: The url of the asset being used. + checksum: + type: string + title: Checksum + description: The unique identifier for asset. + type: object + required: + - assetName + - url + - checksum + title: NIMAssetInfoResponse + NIMHealthSuccessResponse: + properties: + object: + type: string + title: Object + default: health.response + message: + type: string + title: Message + type: object + required: + - message + title: NIMHealthSuccessResponse + NIMLicenseInfoResponse: + properties: + name: + type: string + title: Name + description: The name of the NIMs license. + path: + type: string + title: Path + description: The path of the NIMs license file inside the container. + sha: + type: string + title: Sha + description: The unique identifier of the license. + size: + type: integer + title: Size + description: The size of the license file in bytes. + url: + type: string + title: Url + description: The url of the NIMs license. + type: + type: string + title: Type + description: The content type of the license. + content: + type: string + title: Content + description: The content inside the NIMs license file. + type: object + required: + - name + - path + - sha + - size + - url + - type + - content + title: NIMLicenseInfoResponse + NIMMetadataResponse: + properties: + version: + type: string + title: version + description: The version of the NIM service. + modelInfo: + items: + $ref: '#/components/schemas/NIMModelInfoResponse' + type: array + title: Modelinfo + description: The list of information of models being served inside NIMs + container + default: [] + assetInfo: + items: + $ref: '#/components/schemas/NIMAssetInfoResponse' + type: array + title: Assetinfo + description: The list of different assets used by the NIMs + default: [] + licenseInfo: + allOf: + - $ref: '#/components/schemas/NIMLicenseInfoResponse' + description: The information of the license of released NIMs + type: object + required: + - version + - licenseInfo + title: NIMMetadataResponse + NIMModelInfoResponse: + properties: + shortName: + type: string + title: Shortname + description: The name of the model served by NIMs + modelUrl: + type: string + title: Modelurl + description: The URL from which the model is downloaded. + type: object + required: + - shortName + - modelUrl + title: NIMModelInfoResponse + EmbeddingsRequest: + additionalProperties: false + properties: + input: + oneOf: + - type: string + title: string + example: "This is a test." + pattern: ^.*$ + - type: array + items: + type: string + pattern: ^.*$ + maxItems: 64 + title: Input + description: 'The list of images or texts that you want to generate embeddings + for. Images should be in form of `data:image/{format};base64,{base64encodedimage}`. + If the size of an image is more than 200KB, it needs to be uploaded to + a presigned S3 bucket using NVCF Asset APIs. Once uploaded you can refer + to it using the following format: ``. Accepted formats are `jpg`, `png` and `jpeg`.' + examples: + - - The quick brown fox jumped over the lazy dog + - data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAEElEQVR4nGK6HcwNCAAA//8DTgE8HuxwEQAAAABJRU5ErkJggg== + - - The quick brown fox jumped over the lazy dog + - data:image/png;asset_id,87b132b0-08f9-43ea-8fab-f107350a5d00 + encoding_format: + type: string + enum: + - float + - base64 + title: Encoding Format + description: "The format to return the embeddings in. Can be either `float` or `base64`." + default: float + model: + type: string + enum: [nvidia/nvclip-vit-h-14] + title: Model + description: ID of the embedding model. + examples: nvidia/nvclip-vit-h-14 + type: object + required: + - input + - model + title: EmbeddingsRequest + EmbeddingsResponse: + type: object + properties: + object: + description: 'The object type, which is always `list`.' + enum: + - list + title: Object + type: string + data: + items: + "$ref": "#/components/schemas/Embedding" + type: array + title: Data + description: The list of embeddings generated by the model. + maxItems: 128 + examples: + - - embedding: + - 0.1 + - 0.1 + - 0.1 + index: 0 + object: embedding + - embedding: + - 0.1 + - 0.1 + - 0.1 + index: 1 + object: embedding + model: + type: string + description: Model used to generate embeddings. + example: nvidia/nvclip-vit-h-14 + title: Model + const: nvidia/nvclip-vit-h-14 + usage: + allOf: + - "$ref": "#/components/schemas/Usage" + description: Usage statistics for the embeddings request. + examples: + - num_images: 1 + prompt_tokens: 80 + total_tokens: 80 + required: + - object + - data + - usage + - model + title: EmbeddingsResponse + Embedding: + type: object + description: Represents an embedding vector returned by embedding endpoint. + properties: + object: + description: 'The object type, which is always `embedding`.' + enum: + - embedding + title: Object + type: string + index: + type: integer + format: int32 + title: Index + description: The index of the embedding in the list of embeddings. + minimum: 0 + maximum: 127 + embedding: + oneOf: + - type: array + description: | + The embedding vector as a list of floats, The length of the vector depends on the model. + items: + - type: number + maxItems: 1024 + - type: string + description: | + The embedding vector as base64 string. The length of the vector depends on the model. + format: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$ + title: Embedding + required: + - index + - object + - embedding + title: Embeddings + Usage: + properties: + num_images: + type: integer + format: int32 + title: Num Images + minimum: 0 + maximum: 64 + description: Number of images passed. + prompt_tokens: + type: integer + format: int32 + title: Prompt Tokens + description: Number of tokens in the prompt. + minimum: 77 + maximum: 4928 + total_tokens: + type: integer + format: int32 + title: Total Tokens + description: Total number of tokens used in the request. + minimum: 77 + maximum: 4928 + type: object + required: + - num_images + - prompt_tokens + - total_tokens + title: Usage + Errors: + properties: + type: + type: string + format: "^.{1, 128}$" + maxLength: 128 + description: Error type + title: + type: string + format: "^.{1, 128}$" + maxLength: 128 + description: Error title + status: + type: integer + format: int32 + minimum: 100 + maximum: 999 + description: Error status code + detail: + type: string + format: "^.{1, 1024}$" + maxLength: 1024 + description: Detailed information about the error + instance: + type: string + format: "^.{1, 256}$" + maxLength: 256 + description: Function instance used to invoke the request + requestId: + type: string + format: uuid + maxLength: 36 + description: UUID of the request + type: object + required: + - type + - title + - status + - detail + - instance + - requestId + title: InvokeError diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/CLIP.png b/tools/inference_builder/builder/samples/nvclip/optimizer/CLIP.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b5ec9171fd7a51e36e845a02304eb837142ba1 GIT binary patch literal 252444 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%0DeXzksd;-# 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�HbU>U!f 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 R>eLeW(pJ}3%RF=<=x@pmd%6Gs literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/Dockerfile b/tools/inference_builder/builder/samples/nvclip/optimizer/Dockerfile new file mode 100644 index 00000000..30fd9fd1 --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/optimizer/Dockerfile @@ -0,0 +1,47 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +FROM nvcr.io/nvidia/tritonserver:26.01-py3 + +WORKDIR /workspace/ + +# Environment variables +ENV PIP_NO_CACHE_DIR=off +ENV CUDA_MODULE_LOADING=LAZY +ENV PYTHONUNBUFFERED=1 + +RUN apt update +RUN apt-get install -y git +RUN pip install open_clip_torch==3.2.0 onnx==1.20.1 onnxscript==0.1.0 transformers==4.48.1 tokenizers>=0.21 +RUN pip install --no-cache-dir --extra-index-url https://pypi.ngc.nvidia.com polygraphy + +# Copy files into the container +COPY ./configs ./configs +COPY ./CLIP.png . +COPY ./export_to_onnx.py . +COPY ./optimize.sh . + +ENV MAX_BATCH_SIZE=64 +ENV INPUT_HEIGHT=224 +ENV INPUT_WIDTH=224 +ENV TEXT_LENGTH=77 + +# Make the script executable +RUN chmod +x /workspace/optimize.sh + + +# Set entrypoint to execute the installation script and then run optimize.sh +ENTRYPOINT ["/bin/bash", "-c", "/workspace/optimize.sh"] \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/configs/NVCLIP_224_700M_ViTH14.json b/tools/inference_builder/builder/samples/nvclip/optimizer/configs/NVCLIP_224_700M_ViTH14.json new file mode 100644 index 00000000..b34a5219 --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/optimizer/configs/NVCLIP_224_700M_ViTH14.json @@ -0,0 +1,29 @@ +{ + "embed_dim": 1024, + "init_logit_bias": -10, + "vision_cfg": { + "image_size": 224, + "layers": 32, + "width": 1280, + "head_width": 80, + "patch_size": 14, + "no_ln_pre": true, + "pool_type": "avg", + "final_ln_after_pool": true, + "pos_embed_type": "sin_cos_2d", + "patch_dropout": 0.0 + }, + "text_cfg": { + "context_length": 77, + "vocab_size": 32000, + "hf_tokenizer_name": "bert-base-uncased", + "tokenizer_kwargs": { + "strip_sep_token": true + }, + "width": 1024, + "heads": 16, + "layers": 24, + "pool_type": "last", + "no_causal_mask": true + } +} diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/export_to_onnx.py b/tools/inference_builder/builder/samples/nvclip/optimizer/export_to_onnx.py new file mode 100644 index 00000000..17a6d25a --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/optimizer/export_to_onnx.py @@ -0,0 +1,81 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from pathlib import Path + +import open_clip +import torch +from PIL import Image +import os + +# Register the model config +open_clip.add_model_config("configs") + +MODEL = os.environ.get("MODEL_NAME", "NVCLIP_224_700M_ViTH14") +model, _, preprocess = open_clip.create_model_and_transforms( + MODEL, + pretrained=f"/workspace/checkpoints/baseline/{os.environ.get("CHECKPOINT_NAME")}", +) +tokenizer = open_clip.get_tokenizer(MODEL) + +text = tokenizer(["a diagram", "a dog", "a cat"]) +image = preprocess(Image.open("CLIP.png")).unsqueeze(0) + +# Export to onnx +npx = 224 +dummy_image = torch.randn(10, 3, npx, npx) +model.forward(dummy_image,text) # Original CLIP result (1) + +# Vision model +torch.onnx.export(model, (dummy_image, None), + f"/workspace/checkpoints/baseline/nvclip_clipa_vit_h14_700M_vision.onnx", + export_params=True, + input_names=["IMAGE"], + output_names=["LOGITS_PER_IMAGE"], + opset_version=19, + dynamic_axes={ + "IMAGE": { + 0: "image_batch_size", + }, + "LOGITS_PER_IMAGE": { + 0: "image_batch_size", + 1: "text_batch_size", + }, + }, + verbose=True, + dynamo=False +) + + +# Text model +torch.onnx.export(model, (None, text), + f"/workspace/checkpoints/baseline/nvclip_clipa_vit_h14_700M_text.onnx", + export_params=True, + input_names=["TEXT"], + output_names=["LOGITS_PER_TEXT"], + opset_version=19, + dynamic_axes={ + "TEXT": { + 0: "text_batch_size", + }, + "LOGITS_PER_TEXT": { + 0: "text_batch_size", + 1: "image_batch_size", + }, + }, + verbose=True, + dynamo=False +) diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/optimize.sh b/tools/inference_builder/builder/samples/nvclip/optimizer/optimize.sh new file mode 100644 index 00000000..f036f49f --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/optimizer/optimize.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +set -xe + +python3 export_to_onnx.py + +mkdir -p /workspace/checkpoints/optimized/nvclip_clipa_vit_h14_700M_vision +/usr/src/tensorrt/bin/trtexec --onnx=/workspace/checkpoints/baseline/nvclip_clipa_vit_h14_700M_vision.onnx --saveEngine=/workspace/checkpoints/optimized/nvclip_clipa_vit_h14_700M_vision/model.plan --optShapes=IMAGE:${MAX_BATCH_SIZE}x3x${INPUT_HEIGHT}x${INPUT_WIDTH} \ + --minShapes=IMAGE:1x3x${INPUT_HEIGHT}x${INPUT_WIDTH} --maxShapes=IMAGE:${MAX_BATCH_SIZE}x3x${INPUT_HEIGHT}x${INPUT_WIDTH} --fp16 + +mkdir -p /workspace/checkpoints/optimized/nvclip_clipa_vit_h14_700M_text +/usr/src/tensorrt/bin/trtexec --onnx=/workspace/checkpoints/baseline/nvclip_clipa_vit_h14_700M_text.onnx --saveEngine=/workspace/checkpoints/optimized/nvclip_clipa_vit_h14_700M_text/model.plan --optShapes=TEXT:${MAX_BATCH_SIZE}x${TEXT_LENGTH} \ + --minShapes=TEXT:1x${TEXT_LENGTH} --maxShapes=TEXT:${MAX_BATCH_SIZE}x${TEXT_LENGTH} --fp16 + + diff --git a/tools/inference_builder/builder/samples/nvclip/processors.py b/tools/inference_builder/builder/samples/nvclip/processors.py new file mode 100644 index 00000000..ab1deca8 --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/processors.py @@ -0,0 +1,69 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +import io +from PIL import Image +from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize, InterpolationMode + +class OpenclipTokenizer: + name = "openclip-tokenizer" + def __init__(self, config): + import open_clip + open_clip.add_model_config(config["model_home"]) + self._tokenizer = open_clip.get_tokenizer("NVCLIP_224_700M_ViTH14") + + def __call__(self, *args): + return self._tokenizer(args[0]) + +class VisionPreprocessor: + name = "nvclip-vision-preprocessor" + def __init__(self, config): + self._transform = Compose( + [ + Resize((224, 224), interpolation=InterpolationMode.BICUBIC), + CenterCrop(224), + lambda image: image.convert('RGB'), + ToTensor(), + Normalize( + (0.48145466, 0.4578275, 0.40821073), + (0.26862954, 0.26130258, 0.27577711), + ), + ] + ) + + def __call__(self, *args): + return self._transform(Image.open(io.BytesIO(args[0]))) + +class NvClipPostProcessor: + name = "nvclip-postprocessor" + def __init__(self, config): + self._config = config + + def __call__(self, *args): + text = args[0].tolist() + images = args[1].tolist() + indices = args[2].tolist() + total_tokens = sum(len(s) for s in text) + num_images = len(images) + embeddings = [] + for index in indices: + if index == "text": + embeddings.append(text.pop(0)) + elif index == "image": + embeddings.append(images.pop(0)) + return np.array(embeddings), np.array(total_tokens), np.array(num_images) + + diff --git a/tools/inference_builder/builder/samples/nvclip/tensorrt_nvclip.yaml b/tools/inference_builder/builder/samples/nvclip/tensorrt_nvclip.yaml new file mode 100644 index 00000000..8c7463ca --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/tensorrt_nvclip.yaml @@ -0,0 +1,135 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: nvclip +model_repo: /workspace/model-repo/ + +# top level inference input specification +input: + - name: "text" + data_type: TYPE_STRING + dims: [ -1 ] + optional: true + - name: "image" + data_type: TYPE_CUSTOM_BINARY_BASE64 + dims: [ -1 ] + optional: true + - name: "indices" + data_type: TYPE_STRING + dims: [ -1 ] + optional: true + +# top level inference output specification +output: + - name: "embeddings" + data_type: TYPE_FP32 + dims: [-1, -1] + - name: "total_tokens" + data_type: TYPE_INT32 + dims: [ 1 ] + - name: "num_images" + data_type: TYPE_INT32 + dims: [ 1 ] + +server: + responders: + infer: + operation: create_embedding + requests: + # root template for generating input json from the request + EmbeddingsRequest: > + { + "text": [ + {% set text_items = request.input | reject('startswith', 'data:image') | list %} + {% for item in text_items %} + {{ item|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ], + "image": [ + {% set image_items = request.input | select('startswith', 'data:image') | map('replace', 'data:image\/[a-zA-Z0-9.+-]+;base64,', '') | list %} + {% for item in image_items %} + {{ item|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ], + "indices": [ + {% for item in request.input %} + "{{ 'image' if item.startswith('data:image') else 'text' }}"{% if not loop.last %}, {% endif %} + {% endfor %} + ] + } + responses: + EmbeddingsResponse: > + { + "data": [{% for item in response.embeddings %} {"index": {{ loop.index }}, "embedding": {{ item|tojson }}, "object": "embedding"}{% if not loop.last %}, {% endif %}{% endfor %}], + "usage": { "num_images": {{ response.num_images }}, "prompt_tokens": {{ response.total_tokens }}, "total_tokens": {{ response.total_tokens }}}, + "model": "nvidia/nvclip-vit-h-14", + "object": "list" + } + +# list of model specifications for inference +models: + - name: nvclip_clipa_vit_h14_700M_text + backend: "polygraphy" + max_batch_size: 64 + input: + - name: "TEXT" + data_type: TYPE_INT64 + dims: [-1, -1] + output: + - name: "LOGITS_PER_TEXT" + data_type: TYPE_FP32 + dims: [-1, -1] + parameters: + tensorrt_engine: "model.plan" + preprocessors: + - kind: "custom" + name: "openclip-tokenizer" + input: ["text"] + output: ["TEXT"] + - name: nvclip_clipa_vit_h14_700M_vision + backend: "polygraphy" + max_batch_size: 64 + input: + - name: "IMAGE" + data_type: TYPE_FP32 + dims: [-1, 3, -1, -1] + output: + - name: "LOGITS_PER_IMAGE" + data_type: TYPE_FP32 + dims: [-1, -1] + parameters: + tensorrt_engine: "model.plan" + preprocessors: + - kind: "custom" + name: "nvclip-vision-preprocessor" + input: ["image"] + output: ["IMAGE"] +postprocessors: + - kind: "custom" + name: "nvclip-postprocessor" + input: ["LOGITS_PER_TEXT", "LOGITS_PER_IMAGE", "indices"] + output: ["embeddings", "total_tokens", "num_images"] +# route map +# A route is defined as +# Source and destination should be defined as +# Model name is optional, so <:["TENSOR_NAME1", "TENSOR_NAME2", ...]> is valid +# Tensor list is optional too and is valid +routes: { + ':["text"]': 'nvclip_clipa_vit_h14_700M_text', + ':["image"]': 'nvclip_clipa_vit_h14_700M_vision', + ':["indices"]': ':', + 'nvclip_clipa_vit_h14_700M_text:["LOGITS_PER_TEXT"]': ':', + 'nvclip_clipa_vit_h14_700M_vision:["LOGITS_PER_IMAGE"]': ':' +} diff --git a/tools/inference_builder/builder/samples/nvclip/test_client.sh b/tools/inference_builder/builder/samples/nvclip/test_client.sh new file mode 100644 index 00000000..638afcee --- /dev/null +++ b/tools/inference_builder/builder/samples/nvclip/test_client.sh @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +image=$1 +image_b64=$( base64 $image ) + +url="http://localhost:8800/v1/embeddings" +echo '{ + "input": ["Image of a dog", + "data:image/png;base64,'${image_b64}'" + ], + "model": "nvidia/nvclip-vit-h-14", + "encoding_format": "float" + }' > payload.json + +curl -N -X POST $url \ + -H "Content-Type: application/json" \ + -H "$accept_header" \ + -d @payload.json + diff --git a/tools/inference_builder/builder/samples/qwen/Dockerfile b/tools/inference_builder/builder/samples/qwen/Dockerfile new file mode 100644 index 00000000..22c0d8ef --- /dev/null +++ b/tools/inference_builder/builder/samples/qwen/Dockerfile @@ -0,0 +1,83 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Sample Dockerfile for a Qwen multimodal pipeline using a TensorRT-LLM +# release image combined with DeepStream components for video input and +# hardware-accelerated decoding. +# +# Stage 1: pull in DeepStream libraries, binaries, and sample assets. +FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS ds_stage + +FROM nvcr.io/nvidia/tensorrt-llm/release:1.1.0 AS inference_base + +ENV NVIDIA_DRIVER_CAPABILITIES $NVIDIA_DRIVER_CAPABILITIES,video + +# Install GStreamer plugins and DeepStream runtime dependencies needed +# for hardware-accelerated decoding and RTSP support. +RUN apt update && apt install -y --no-install-recommends gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ + libyaml-cpp-dev libgstrtspserver-1.0-0 libjsoncpp25 libgles2 pkg-config + +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/lib /opt/nvidia/deepstream/deepstream-9.0/lib +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/bin /opt/nvidia/deepstream/deepstream-9.0/bin +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.sh /opt/nvidia/deepstream/deepstream-9.0/ +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.txt /opt/nvidia/deepstream/deepstream-9.0/ +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/README* /opt/nvidia/deepstream/deepstream-9.0/ +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.pdf /opt/nvidia/deepstream/deepstream-9.0/ +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/service-maker /opt/nvidia/deepstream/deepstream-9.0/service-maker +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/samples/streams/* /opt/nvidia/deepstream/deepstream-9.0/samples/streams/ + +RUN /opt/nvidia/deepstream/deepstream-9.0/install.sh +RUN ln -sf deepstream-9.0 /opt/nvidia/deepstream/deepstream || true + +# Install Python dependencies required by THIS Qwen sample. These +# versions are pinned for reproducibility and can be adjusted for +# other pipelines or environments. +RUN --mount=type=cache,target=/root/.cache/pip pip install qwen-vl-utils[decord]==0.0.8 \ + python-multipart==0.0.9 \ + aiofiles==23.2.1 \ + aiohttp==3.11.0 \ + annotated-types==0.7.0 \ + python-magic==0.4.27 \ + numpy==1.26.4 \ + omegaconf==2.3.0 + +WORKDIR /workspace + +# Copy the inference flow package generated by Inference Builder. +# This tarball (here: qwen.tgz) is typically produced when running the +# builder with tarball output enabled, and its name should match the +# generated pipeline artifact you want to deploy. +ADD qwen.tgz /workspace + +## Set Environment variables required for DeepStream+TensorRT-LLM runtime. +ENV LD_LIBRARY_PATH /opt/tritonserver/lib:/opt/nvidia/deepstream/deepstream/lib:/usr/local/tensorrt/lib/:/opt/tritonserver/backends/tensorrtllm:$LD_LIBRARY_PATH +ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes +ENV HF_HOME=/tmp + +# Create the entrypoint script that runs the Inference Builder-generated +# /workspace/__main__.py for this Qwen pipeline. +RUN touch /workspace/start_server.sh && \ + chmod a+rx /workspace/start_server.sh && \ + cat > /workspace/start_server.sh <<-EOF + #!/usr/bin/env bash + set -eu + # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + # SPDX-License-Identifier: LicenseRef-NvidiaProprietary + python3 /workspace/__main__.py +# while true; do sleep 5; done +EOF + +ENTRYPOINT ["/workspace/start_server.sh"] +CMD [] diff --git a/tools/inference_builder/builder/samples/qwen/README.md b/tools/inference_builder/builder/samples/qwen/README.md new file mode 100644 index 00000000..58875de4 --- /dev/null +++ b/tools/inference_builder/builder/samples/qwen/README.md @@ -0,0 +1,129 @@ +## Introduction + +This example demonstrates how to build an inference pipeline and for the Qwen family of VLM models using the Inference Builder tool. Following models have been tested: +- Qwen/Qwen2.5-VL-3B-Instruct +- Qwen/Qwen2.5-VL-7B-Instruct +- Qwen/Qwen2.5-VL-32B-Instruct + +Three configurations are provided, allowing you to choose based on your specific software and hardware environment: + +1. pytorch_qwen.yaml: leveraging the transformer APIs and fits all the models +2. trtllm_qwen.yaml: leveraging TensorRT LLM APIs for better performance +3. trtllm_nvdec_qwen.yaml: leveraging h/w decoder and TensorRT LLM for the best performance + +We provide a sample Dockerfile for the example, which you can use to build a Docker image and test the microservice on any x86 system. + +**⚠️ System Requirements:** This model requires significant GPU resources and is optimized for high-performance systems. We recommend testing on H100 or B200 GPUs for optimal performance. Docker build may fail on less powerful hardware. + +## Prerequisites + +**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. + +Before downloading the model file, you need to set up your model repository: + +```bash +mkdir -p ~/.cache/model-repo && chmod 777 ~/.cache/model-repo +export MODEL_REPO=~/.cache/model-repo +``` + +The model checkpoints can be downloaded from huggingface. First, install git-lfs for large model files: + +```bash +sudo apt install git-lfs +git lfs install +``` + +Then download the model: + +```bash +git clone https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct $MODEL_REPO/Qwen2.5-VL +``` + +Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment and be sure you're in the inference_builder folder, then activate your virtual environment: + +```bash +source .venv/bin/activate +``` + +## Build and Test the Qwen2.5-VL-7B-Instruct Inference Microservice + +### Generate the Inference Pipeline + +For Pytorch backend with transformers API, use the command below: + +```bash +python builder/main.py builder/samples/qwen/pytorch_qwen.yaml --api-spec builder/samples/qwen/openapi.yaml \ +-o builder/samples/qwen/ -c builder/samples/qwen/processors.py -t +``` + +For TensorRT-LLM backend with S/W decoder, use the command below: + +```bash +python builder/main.py builder/samples/qwen/trtllm_qwen.yaml --api-spec builder/samples/qwen/openapi.yaml \ +-o builder/samples/qwen/ -c builder/samples/qwen/processors.py -t +``` + +If you want to acheive the best performance with Deepstream and TensoRT-LLM, please use following command: + +```bash +# Enable hardware decoder +python builder/main.py builder/samples/qwen/trtllm_nvdec_qwen.yaml --api-spec builder/samples/qwen/openapi.yaml \ +-o builder/samples/qwen/ -c builder/samples/qwen/processors.py -t +``` + +### Build and Start the Inference Microservice: + +```bash +cd builder/samples && docker compose up ms-qwen --build +``` + +The build may take a while—images are pulled from NGC and speed depends on your network. ⌛ + +### Test the Inference Microservice with a client + +Wait for the server to start, then open a new terminal in your inference_builder folder. The sample includes a test OpenAI client. For image input, run the client with the path to an image file. + + +```bash +source .venv/bin/activate && cd builder/samples/qwen +python client.py --images # replace placeholder with an actual file +``` + +For video input, you need to first upload a test video file. + +**⚠️ Important:** **replace the placeholder in below command with an actual file path in your system**. + +```bash +export VIDEO_FILE= +curl -X "POST" \ + "http://localhost:8800/v1/files" \ + -H "accept: application/json" \ + -H "Content-Type: multipart/form-data" \ + -F "file=@$VIDEO_FILE;type=video/mp4" +``` + +You'll get a response 200 with a json body which includes the id and path of the uploaded asset like below: + +{ + "data": { + "id": "577a9f11-2b24-4db8-82c8-2601e0c2b6e4", + "path": "/tmp/assets/577a9f11-2b24-4db8-82c8-2601e0c2b6e4/its_1920_30s.mp4", + "size": 3472221, + "duration": 30000000000, + "contentType": "video/mp4" + } +} + +Run the client.py with the video path from your response if the inference pipeline is built from trtllm_qwen.yaml or pytorch_qwen.yaml without H/W decoder: + +```bash +# Please use the path from your file upload response +python client.py --videos /tmp/assets/577a9f11-2b24-4db8-82c8-2601e0c2b6e4/its_1920_30s.mp4 +``` + +OR run the client.py with the returned asset id if the inference pipeline is built from trtllm_nvdec_qwen.yaml with H/W decoder enabled: + +```bash +# Please replace 577a9f11-2b24-4db8-82c8-2601e0c2b6e4 with the id returned from your file upload response +python client.py --videos 577a9f11-2b24-4db8-82c8-2601e0c2b6e4?frames=8 +``` \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/qwen/client.py b/tools/inference_builder/builder/samples/qwen/client.py new file mode 100644 index 00000000..4c0a780b --- /dev/null +++ b/tools/inference_builder/builder/samples/qwen/client.py @@ -0,0 +1,137 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import time +import argparse +from openai import OpenAI +import base64 +import mimetypes +from concurrent.futures import ThreadPoolExecutor, as_completed +from urllib.parse import urlparse, parse_qs + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("--images", type=str, help="Image paths to send for inference", default=None, nargs="*") + parser.add_argument("--videos", type=str, help="Video paths to send for inference", default=None, nargs="*") + parser.add_argument("--endpoint", type=str, help="Endpoint to send for inference", default="http://0.0.0.0:8800/v1", nargs="?") + parser.add_argument("-p", "--parallel", type=int, help="Number of parallel requests to send", default=1) + args = parser.parse_args() + + messages = [] + if args.images: + for image in args.images: + with open(image, "rb") as f: + data = base64.b64encode(f.read()).decode() + mime_type = mimetypes.guess_type(image)[0] + messages.append({ + "role": "user", + "content": [ + { + "type": "text", + "text": "Please describe the image in detail." + }, + { + "type": "image", + "image": f"data:{mime_type};base64,{data}" + } + ] + }) + elif args.videos: + for video in args.videos: + # Parse video path to check for ?nframes=x query parameter + # Only extract nframes if video starts with "/" (local file path) + if video.startswith('/') and '?' in video: + video_path, query_string = video.split('?', 1) + query_params = parse_qs(query_string) + + video_content = { + "type": "video", + "video": video_path + } + + # Add nframes parameter if present + if 'nframes' in query_params: + try: + nframes_value = int(query_params['nframes'][0]) + video_content["nframes"] = nframes_value + except (ValueError, IndexError): + pass # Ignore invalid nframes values + else: + video_content = { + "type": "video", + "video": video + } + + messages.append({ + "role": "user", + "content": [ + { + "type": "text", + "text": "Please describe the video in detail." + }, + video_content + ] + }) + else: + raise ValueError("No images or videos provided") + + client = OpenAI(base_url=args.endpoint, api_key="not-used") + + def make_request(request_id): + """Make a single request to the API""" + start_time = time.time() + chat_response = client.chat.completions.create( + model="nvidia/cosmos", + messages=messages, + max_tokens=512, + stream=False + ) + infer_time = time.time() - start_time + return request_id, infer_time, chat_response.choices[0].message + + # Send requests in parallel + overall_start_time = time.time() + if args.parallel == 1: + # Single request mode + request_id, infer_time, assistant_message = make_request(0) + print(f"Inference time: {infer_time:.4f} seconds") + print(assistant_message) + else: + # Parallel requests mode + with ThreadPoolExecutor(max_workers=args.parallel) as executor: + futures = [executor.submit(make_request, i) for i in range(args.parallel)] + + results = [] + for future in as_completed(futures): + request_id, infer_time, assistant_message = future.result() + results.append((request_id, infer_time, assistant_message)) + print(f"Request {request_id} completed in {infer_time:.4f} seconds") + + # Sort results by request_id for consistent output + results.sort(key=lambda x: x[0]) + + overall_time = time.time() - overall_start_time + avg_time = sum(r[1] for r in results) / len(results) + print(f"\n--- Summary ---") + print(f"Total requests: {args.parallel}") + print(f"Overall time: {overall_time:.4f} seconds") + print(f"Average inference time: {avg_time:.4f} seconds") + print(f"Throughput: {args.parallel / overall_time:.2f} requests/second") + + # Print all responses + print(f"\n--- Responses ---") + for req_id, _, assistant_message in results: + print(f"\nResponse (Request {req_id}):") + print(assistant_message) diff --git a/tools/inference_builder/builder/samples/qwen/openapi.yaml b/tools/inference_builder/builder/samples/qwen/openapi.yaml new file mode 100644 index 00000000..8f444d5f --- /dev/null +++ b/tools/inference_builder/builder/samples/qwen/openapi.yaml @@ -0,0 +1,1367 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +openapi: 3.1.0 +info: + title: NVIDIA NIM for VLMs + summary: Accelerated VLM inference for NVIDIA GPUs. + version: 1.1.2 +paths: + /v1/health/ready: + get: + tags: + - Health + summary: Health Ready + description: Provide your implementation of readiness to know when container ready to accept traffic + operationId: health_ready_v1_health_ready_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + /v1/chat/completions: + post: + summary: OpenAI-compatible chat endpoint + operationId: create_chat_completion_v1_chat_completions_post + parameters: + - name: content-type + in: header + required: false + schema: + anyOf: + - type: string + - type: 'null' + title: Content-Type + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NIMLLMChatCompletionRequest' + responses: + '200': + description: Successful Response + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/NIMLLMChatCompletionResponse' + - $ref: '#/components/schemas/NIMLLMChatCompletionStreamResponse' + title: Response Create Chat Completion V1 Chat Completions Post + '400': + description: Received an invalid request possibly containing unsupported + or out-of-range parameter values. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: The requested model does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/files: + post: + tags: + - Files + summary: Upload a media file that can be used as inference input. + description: Upload media files to be used as inference input. Currently, only images upto 50 MB are supported. + operationId: add_media_file + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/AddFileRequest' + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/AddFileResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + get: + tags: + - Files + summary: Returns a list of the uploaded files. + description: Returns a list that includes ID, file name, size, purpose, file size, and media type for the uploaded files. + operationId: list_media_files + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/ListFilesResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + /v1/files/{file_id}: + delete: + tags: + - Files + summary: Delete a uploaded file. + description: Deletes an uploaded file based on ID. + operationId: delete_media_file + parameters: + - name: file_id + in: path + required: true + schema: + type: string + maxLength: 36 + pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' + description: File having 'file_id' to be deleted. + title: File Id + description: File having 'file_id' to be deleted. + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteFileResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' +components: + schemas: + BaseModel: + properties: {} + type: object + title: BaseModel + ChatCompletionLogProb: + properties: + token: + type: string + title: Token + logprob: + type: number + title: Logprob + default: -9999.0 + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + additionalProperties: false + type: object + required: + - token + title: ChatCompletionLogProb + ChatCompletionLogProbs: + properties: + content: + anyOf: + - items: + $ref: '#/components/schemas/ChatCompletionLogProbsContent' + type: array + - type: 'null' + title: Content + additionalProperties: false + type: object + title: ChatCompletionLogProbs + ChatCompletionLogProbsContent: + properties: + token: + type: string + title: Token + logprob: + type: number + title: Logprob + default: -9999.0 + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + top_logprobs: + items: + $ref: '#/components/schemas/ChatCompletionLogProb' + type: array + title: Top Logprobs + additionalProperties: false + type: object + required: + - token + title: ChatCompletionLogProbsContent + ChatCompletionNamedFunction: + properties: + name: + type: string + title: Name + additionalProperties: false + type: object + required: + - name + title: ChatCompletionNamedFunction + ChatCompletionNamedToolChoiceParam: + properties: + function: + $ref: '#/components/schemas/ChatCompletionNamedFunction' + type: + type: string + const: function + title: Type + default: function + additionalProperties: false + type: object + required: + - function + title: ChatCompletionNamedToolChoiceParam + ChatCompletionResponseChoice: + properties: + index: + type: integer + title: Index + message: + $ref: '#/components/schemas/ChatMessage' + logprobs: + anyOf: + - $ref: '#/components/schemas/ChatCompletionLogProbs' + - type: 'null' + finish_reason: + anyOf: + - type: string + enum: + - stop + - length + - tool_calls + - type: 'null' + title: Finish Reason + default: stop + stop_reason: + anyOf: + - type: integer + - type: string + - type: 'null' + title: Stop Reason + additionalProperties: false + type: object + required: + - index + - message + title: ChatCompletionResponseChoice + ChatCompletionResponseStreamChoice: + properties: + index: + type: integer + title: Index + delta: + $ref: '#/components/schemas/DeltaMessage' + logprobs: + anyOf: + - $ref: '#/components/schemas/ChatCompletionLogProbs' + - type: 'null' + finish_reason: + anyOf: + - type: string + enum: + - stop + - length + - tool_calls + - type: 'null' + title: Finish Reason + stop_reason: + anyOf: + - type: integer + - type: string + - type: 'null' + title: Stop Reason + additionalProperties: false + type: object + required: + - index + - delta + title: ChatCompletionResponseStreamChoice + ChatCompletionToolsParam: + properties: + type: + type: string + const: function + title: Type + default: function + function: + $ref: '#/components/schemas/FunctionDefinition' + additionalProperties: false + type: object + required: + - function + title: ChatCompletionToolsParam + ChatMessage: + properties: + role: + type: string + title: Role + content: + anyOf: + - type: string + - type: 'null' + title: Content + tool_calls: + anyOf: + - items: + $ref: '#/components/schemas/ToolCall' + type: array + - type: 'null' + title: Tool Calls + additionalProperties: false + type: object + required: + - role + title: ChatMessage + DeltaMessage: + properties: + role: + anyOf: + - type: string + - type: 'null' + title: Role + content: + anyOf: + - type: string + - type: 'null' + title: Content + tool_calls: + anyOf: + - items: + $ref: '#/components/schemas/ToolCall' + type: array + - type: 'null' + title: Tool Calls + additionalProperties: false + type: object + title: DeltaMessage + ErrorResponse: + properties: + object: + type: string + title: Object + default: error + message: + type: string + title: Message + type: + type: string + title: Type + param: + anyOf: + - type: string + - type: 'null' + title: Param + code: + type: integer + title: Code + additionalProperties: false + type: object + required: + - message + - type + - code + title: ErrorResponse + FunctionCall: + properties: + name: + anyOf: + - type: string + - type: 'null' + title: Name + default: '' + arguments: + anyOf: + - type: string + - type: 'null' + title: Arguments + default: '' + additionalProperties: false + type: object + title: FunctionCall + FunctionDefinition: + properties: + name: + type: string + title: Name + description: + anyOf: + - type: string + - type: 'null' + title: Description + parameters: + anyOf: + - type: object + - type: 'null' + title: Parameters + additionalProperties: false + type: object + required: + - name + title: FunctionDefinition + HTTPValidationError: + properties: + detail: + items: + $ref: '#/components/schemas/ValidationError' + type: array + title: Detail + type: object + title: HTTPValidationError + ImageURL: + properties: + url: + type: string + title: Url + type: object + required: + - url + title: ImageURL + Logprob: + properties: + logprob: + type: number + title: Logprob + rank: + anyOf: + - type: integer + - type: 'null' + title: Rank + decoded_token: + anyOf: + - type: string + - type: 'null' + title: Decoded Token + type: object + required: + - logprob + title: Logprob + NIMLLMChatCompletionMessage: + properties: + role: + $ref: '#/components/schemas/Role' + description: The role of the message's author. + content: + anyOf: + - type: string + minLength: 1 + - items: + anyOf: + - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartImage' + - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartText' + - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartVideo' + - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartVideoStreaming' + type: array + title: Content + description: "The contents of the message.\n
To pass images (only\ + \ with role=`user`):\n
- When content is a string, image\ + \ can be passed together with the text with `img` HTML tags that wraps\n\ + \ an image URL (``),\n base64 encoded\ + \ image data (``),\n or an NVCF asset ID (``)\n when the container is hosted in NVCF and the payload exceeds\ + \ 200KB.\n or http link (`https:{image_link}`)\n
\ + \ - When content is a list of objects, images can be passed as objects\ + \ with type=`image_url`.\n
- In both cases, images can\ + \ be PNG, JPG or JPEG.\n
To pass videos (only with role=`user`):\n\ + \
- When content is a string, video can be passed together\ + \ with the text with `video` HTML tags that wraps\n a video URL\ + \ (`
&0n`apqhR)V<5#YOppV;UCdi{4g^bNwDo@ve>* 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 &@l+u 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

d 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≧tKm4Y;&`R|-SS&5rI80d2+*v>b&2j+7n~S1f<+n`}Ryyb5YZ zcpMZyh5VU8!TZKwYySYQOIH8NuY^Ju;e=C@^98{_O<<3eNukesQtdN9z|&Yr0)xSbCX7ol(^I31*$ODh#6N zr>u-Q8dfnLdq--*T=uDG$GIyYLRawdEG*&hUo6A=d3(Xs^eUM-I13ZVa$>|6$~EIc zuI(GTe?#HXdx8*GJr?vt9S?}soKsO zCsUcS)cARSspV%sSS-w&Pd~e;NJw5q+&I|i`aV&ix@%)o>9&=&sgJ&(<87@Dr6YQ> zoZzSxXCYY%Ng(I0eL3+uw}+Ez2_;z<^!cnVTC=2A<=LzDWrc3r)9#9#_FoWV$4=Et zQO;d&IrgWFllpnd!0L;FaN-mW7f~!4{#_s%{xL3HIhds|8UFxVodj5QdZyNaY0Gw| zm(7JcRsNjBs9w<9Yr9HHM&(1JxrH6daFFD%QX7_AZKgrp-6EmNlKE&YSS$OTG^FgH$86Lj*zOBQK_girP!gv z-sf&(>kRdN#Ghbkl)KvMm}yQ+rLi*6uG4{bHP0Bh0C+Oy9N0zx3B!m`S`?h4ge6lF z(x#UOB3X{lrML8lbW`Q6)hR%LZZd9Lx0FKZt><=XrKfQ+v{WE6%}P{Ca#l_q7*Es$ zA!*2PZcCd<;4A^hxFO;+g;SYBA($HLKi{SzC1~B8u@Y*nKKh}wQZ}fa z+=U)E@z2kms*e#9r39?9(_%jMf6MH#+0@@ zs2K=D$^l@KHw+L!;N$Os)Oq3``jw$q2|8{>Y-qqzS1!c4$@Tehaw2JO3rf1((I$Z& z>S%__5~JK?v`$h`Qb|LJ$G33@BgZ`p#L+IIkjs26lkd&$-8E=wOD#*9Eo}Pp>l@SP ze^e}%y)e*el}NEe^@eD1D$R1H zU>*9LqN9M;NwcT(zXJ7qI7>W?0%IxZMe^kflpd3JylPvvNLO*Mzp*yy<#NM3YT+ z@cwFB!AWIv8$elL_)gGpd;{Fz5;8jJD5yyxpAVgkaxpbGoHpuYx74!W0=LS!hjr@^mPDig>Z(b;XZG?F~5fJe`c3D5j|M5K_(&BxF0C?<=Dttm5RAOUvVw$A+^ zX-d;8PP=&`*|=`jZCGF_>9t7>ytXOrWB~Hg!d9gxdVs<~B%U%)LDtNuk^q*1qmTfx z>9;qB6S%C@N)ytMr)CeJ%=2zn>lO_W()#|OY7DJ8x2k4TX4YO6S!FS)@u8(g)IkmeQ%0AP`;C$3t1>1DtM>U}w8$L$kb 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 AW&i*H literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00001362.json b/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00001362.json new file mode 100644 index 00000000..826e0ff7 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00001362.json @@ -0,0 +1 @@ +{"data": [{"index": 0, "shape": [224, 224], "bboxes": [[0, 0, 224, 224]], "probs": [0.0], "labels": [["n13054560"]], "masks": [], "objects": [], "timestamp": 29306093786}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00002167.json b/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00002167.json new file mode 100644 index 00000000..841e51ae --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00002167.json @@ -0,0 +1 @@ +{"data": [{"index": 0, "shape": [224, 224], "bboxes": [[0, 0, 224, 224]], "probs": [0.0], "labels": [["n13052670"]], "masks": [], "objects": [], "timestamp": 100464334485}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/labels.txt b/tools/inference_builder/builder/samples/tao/validation/cls/labels.txt new file mode 100644 index 00000000..8972f79f --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/cls/labels.txt @@ -0,0 +1 @@ +n01440764;n01443537;n01484850;n01491361;n01494475;n01496331;n01498041;n01514668;n01514859;n01518878;n01530575;n01531178;n01532829;n01534433;n01537544;n01558993;n01560419;n01580077;n01582220;n01592084;n01601694;n01608432;n01614925;n01616318;n01622779;n01629819;n01630670;n01631663;n01632458;n01632777;n01641577;n01644373;n01644900;n01664065;n01665541;n01667114;n01667778;n01669191;n01675722;n01677366;n01682714;n01685808;n01687978;n01688243;n01689811;n01692333;n01693334;n01694178;n01695060;n01697457;n01698640;n01704323;n01728572;n01728920;n01729322;n01729977;n01734418;n01735189;n01737021;n01739381;n01740131;n01742172;n01744401;n01748264;n01749939;n01751748;n01753488;n01755581;n01756291;n01768244;n01770081;n01770393;n01773157;n01773549;n01773797;n01774384;n01774750;n01775062;n01776313;n01784675;n01795545;n01796340;n01797886;n01798484;n01806143;n01806567;n01807496;n01817953;n01818515;n01819313;n01820546;n01824575;n01828970;n01829413;n01833805;n01843065;n01843383;n01847000;n01855032;n01855672;n01860187;n01871265;n01872401;n01873310;n01877812;n01882714;n01883070;n01910747;n01914609;n01917289;n01924916;n01930112;n01943899;n01944390;n01945685;n01950731;n01955084;n01968897;n01978287;n01978455;n01980166;n01981276;n01983481;n01984695;n01985128;n01986214;n01990800;n02002556;n02002724;n02006656;n02007558;n02009229;n02009912;n02011460;n02012849;n02013706;n02017213;n02018207;n02018795;n02025239;n02027492;n02028035;n02033041;n02037110;n02051845;n02056570;n02058221;n02066245;n02071294;n02074367;n02077923;n02085620;n02085782;n02085936;n02086079;n02086240;n02086646;n02086910;n02087046;n02087394;n02088094;n02088238;n02088364;n02088466;n02088632;n02089078;n02089867;n02089973;n02090379;n02090622;n02090721;n02091032;n02091134;n02091244;n02091467;n02091635;n02091831;n02092002;n02092339;n02093256;n02093428;n02093647;n02093754;n02093859;n02093991;n02094114;n02094258;n02094433;n02095314;n02095570;n02095889;n02096051;n02096177;n02096294;n02096437;n02096585;n02097047;n02097130;n02097209;n02097298;n02097474;n02097658;n02098105;n02098286;n02098413;n02099267;n02099429;n02099601;n02099712;n02099849;n02100236;n02100583;n02100735;n02100877;n02101006;n02101388;n02101556;n02102040;n02102177;n02102318;n02102480;n02102973;n02104029;n02104365;n02105056;n02105162;n02105251;n02105412;n02105505;n02105641;n02105855;n02106030;n02106166;n02106382;n02106550;n02106662;n02107142;n02107312;n02107574;n02107683;n02107908;n02108000;n02108089;n02108422;n02108551;n02108915;n02109047;n02109525;n02109961;n02110063;n02110185;n02110341;n02110627;n02110806;n02110958;n02111129;n02111277;n02111500;n02111889;n02112018;n02112137;n02112350;n02112706;n02113023;n02113186;n02113624;n02113712;n02113799;n02113978;n02114367;n02114548;n02114712;n02114855;n02115641;n02115913;n02116738;n02117135;n02119022;n02119789;n02120079;n02120505;n02123045;n02123159;n02123394;n02123597;n02124075;n02125311;n02127052;n02128385;n02128757;n02128925;n02129165;n02129604;n02130308;n02132136;n02133161;n02134084;n02134418;n02137549;n02138441;n02165105;n02165456;n02167151;n02168699;n02169497;n02172182;n02174001;n02177972;n02190166;n02206856;n02219486;n02226429;n02229544;n02231487;n02233338;n02236044;n02256656;n02259212;n02264363;n02268443;n02268853;n02276258;n02277742;n02279972;n02280649;n02281406;n02281787;n02317335;n02319095;n02321529;n02325366;n02326432;n02328150;n02342885;n02346627;n02356798;n02361337;n02363005;n02364673;n02389026;n02391049;n02395406;n02396427;n02397096;n02398521;n02403003;n02408429;n02410509;n02412080;n02415577;n02417914;n02422106;n02422699;n02423022;n02437312;n02437616;n02441942;n02442845;n02443114;n02443484;n02444819;n02445715;n02447366;n02454379;n02457408;n02480495;n02480855;n02481823;n02483362;n02483708;n02484975;n02486261;n02486410;n02487347;n02488291;n02488702;n02489166;n02490219;n02492035;n02492660;n02493509;n02493793;n02494079;n02497673;n02500267;n02504013;n02504458;n02509815;n02510455;n02514041;n02526121;n02536864;n02606052;n02607072;n02640242;n02641379;n02643566;n02655020;n02666196;n02667093;n02669723;n02672831;n02676566;n02687172;n02690373;n02692877;n02699494;n02701002;n02704792;n02708093;n02727426;n02730930;n02747177;n02749479;n02769748;n02776631;n02777292;n02782093;n02783161;n02786058;n02787622;n02788148;n02790996;n02791124;n02791270;n02793495;n02794156;n02795169;n02797295;n02799071;n02802426;n02804414;n02804610;n02807133;n02808304;n02808440;n02814533;n02814860;n02815834;n02817516;n02823428;n02823750;n02825657;n02834397;n02835271;n02837789;n02840245;n02841315;n02843684;n02859443;n02860847;n02865351;n02869837;n02870880;n02871525;n02877765;n02879718;n02883205;n02892201;n02892767;n02894605;n02895154;n02906734;n02909870;n02910353;n02916936;n02917067;n02927161;n02930766;n02939185;n02948072;n02950826;n02951358;n02951585;n02963159;n02965783;n02966193;n02966687;n02971356;n02974003;n02977058;n02978881;n02979186;n02980441;n02981792;n02988304;n02992211;n02992529;n02999410;n03000134;n03000247;n03000684;n03014705;n03016953;n03017168;n03018349;n03026506;n03028079;n03032252;n03041632;n03042490;n03045698;n03047690;n03062245;n03063599;n03063689;n03065424;n03075370;n03085013;n03089624;n03095699;n03100240;n03109150;n03110669;n03124043;n03124170;n03125729;n03126707;n03127747;n03127925;n03131574;n03133878;n03134739;n03141823;n03146219;n03160309;n03179701;n03180011;n03187595;n03188531;n03196217;n03197337;n03201208;n03207743;n03207941;n03208938;n03216828;n03218198;n03220513;n03223299;n03240683;n03249569;n03250847;n03255030;n03259280;n03271574;n03272010;n03272562;n03290653;n03291819;n03297495;n03314780;n03325584;n03337140;n03344393;n03345487;n03347037;n03355925;n03372029;n03376595;n03379051;n03384352;n03388043;n03388183;n03388549;n03393912;n03394916;n03400231;n03404251;n03417042;n03424325;n03425413;n03443371;n03444034;n03445777;n03445924;n03447447;n03447721;n03450230;n03452741;n03457902;n03459775;n03461385;n03467068;n03476684;n03476991;n03478589;n03481172;n03482405;n03483316;n03485407;n03485794;n03492542;n03494278;n03495258;n03496892;n03498962;n03527444;n03529860;n03530642;n03532672;n03534580;n03535780;n03538406;n03544143;n03584254;n03584829;n03590841;n03594734;n03594945;n03595614;n03598930;n03599486;n03602883;n03617480;n03623198;n03627232;n03630383;n03633091;n03637318;n03642806;n03649909;n03657121;n03658185;n03661043;n03662601;n03666591;n03670208;n03673027;n03676483;n03680355;n03690938;n03691459;n03692522;n03697007;n03706229;n03709823;n03710193;n03710637;n03710721;n03717622;n03720891;n03721384;n03724870;n03729826;n03733131;n03733281;n03733805;n03742115;n03743016;n03759954;n03761084;n03763968;n03764736;n03769881;n03770439;n03770679;n03773504;n03775071;n03775546;n03776460;n03777568;n03777754;n03781244;n03782006;n03785016;n03786901;n03787032;n03788195;n03788365;n03791053;n03792782;n03792972;n03793489;n03794056;n03796401;n03803284;n03804744;n03814639;n03814906;n03825788;n03832673;n03837869;n03838899;n03840681;n03841143;n03843555;n03854065;n03857828;n03866082;n03868242;n03868863;n03871628;n03873416;n03874293;n03874599;n03876231;n03877472;n03877845;n03884397;n03887697;n03888257;n03888605;n03891251;n03891332;n03895866;n03899768;n03902125;n03903868;n03908618;n03908714;n03916031;n03920288;n03924679;n03929660;n03929855;n03930313;n03930630;n03933933;n03935335;n03937543;n03938244;n03942813;n03944341;n03947888;n03950228;n03954731;n03956157;n03958227;n03961711;n03967562;n03970156;n03976467;n03976657;n03977966;n03980874;n03982430;n03983396;n03991062;n03992509;n03995372;n03998194;n04004767;n04005630;n04008634;n04009552;n04019541;n04023962;n04026417;n04033901;n04033995;n04037443;n04039381;n04040759;n04041544;n04044716;n04049303;n04065272;n04067472;n04069434;n04070727;n04074963;n04081281;n04086273;n04090263;n04099969;n04111531;n04116512;n04118538;n04118776;n04120489;n04125021;n04127249;n04131690;n04133789;n04136333;n04141076;n04141327;n04141975;n04146614;n04147183;n04149813;n04152593;n04153751;n04154565;n04162706;n04179913;n04192698;n04200800;n04201297;n04204238;n04204347;n04208210;n04209133;n04209239;n04228054;n04229816;n04235860;n04238763;n04239074;n04243546;n04251144;n04252077;n04252225;n04254120;n04254680;n04254777;n04258138;n04259630;n04263257;n04264628;n04265275;n04266014;n04270147;n04273569;n04275548;n04277352;n04285008;n04286575;n04296562;n04310018;n04311004;n04311174;n04317175;n04325704;n04326547;n04328186;n04330267;n04332243;n04335435;n04336792;n04344873;n04346328;n04347754;n04350905;n04355338;n04355933;n04356056;n04357314;n04366367;n04367480;n04370456;n04371430;n04371774;n04372370;n04376876;n04380533;n04389033;n04392985;n04398044;n04399382;n04404412;n04409515;n04417672;n04418357;n04423845;n04428191;n04429376;n04435653;n04442312;n04443257;n04447861;n04456115;n04458633;n04461696;n04462240;n04465501;n04467665;n04476259;n04479046;n04482393;n04483307;n04485082;n04486054;n04487081;n04487394;n04493381;n04501370;n04505470;n04507155;n04509417;n04515003;n04517823;n04522168;n04523525;n04525038;n04525305;n04532106;n04532670;n04536866;n04540053;n04542943;n04548280;n04548362;n04550184;n04552348;n04553703;n04554684;n04557648;n04560804;n04562935;n04579145;n04579432;n04584207;n04589890;n04590129;n04591157;n04591713;n04592741;n04596742;n04597913;n04599235;n04604644;n04606251;n04612504;n04613696;n06359193;n06596364;n06785654;n06794110;n06874185;n07248320;n07565083;n07579787;n07583066;n07584110;n07590611;n07613480;n07614500;n07615774;n07684084;n07693725;n07695742;n07697313;n07697537;n07711569;n07714571;n07714990;n07715103;n07716358;n07716906;n07717410;n07717556;n07718472;n07718747;n07720875;n07730033;n07734744;n07742313;n07745940;n07747607;n07749582;n07753113;n07753275;n07753592;n07754684;n07760859;n07768694;n07802026;n07831146;n07836838;n07860988;n07871810;n07873807;n07875152;n07880968;n07892512;n07920052;n07930864;n07932039;n09193705;n09229709;n09246464;n09256479;n09288635;n09332890;n09399592;n09421951;n09428293;n09468604;n09472597;n09835506;n10148035;n10565667;n11879895;n11939491;n12057211;n12144580;n12267677;n12620546;n12768682;n12985857;n12998815;n13037406;n13040303;n13044778;n13052670;n13054560;n13133613;n15075141 \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.generate.sh new file mode 100644 index 00000000..3484ffb0 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.generate.sh @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +nim_workspace=/tmp/nim/generator/cv_nim +nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.profile.yaml new file mode 100644 index 00000000..80da5367 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.profile.yaml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema_version: '1.0' +model: "eevaigoeixww/dev/tao_cv" +release: 'rc1' +simple: + profiles: + - model_version: cls.nvdino_pretrain_0114_final_scale0.8.engine_b1_fp16_A6000_trt10.9 + tags: + gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.yaml new file mode 100644 index 00000000..ceee76ac --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.yaml @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +schema_version: '2.0' +profile_selection_criteria: auto +model: eevaigoeixww/dev/tao_cv +release: rc1 +profiles: +- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd + tags: + gpu: a6000 + workspace: + files: + classifier.onnx_b1_gpu0_fp16.engine: + uri: ngc://eevaigoeixww/dev/tao_cv:cls.nvdino_pretrain_0114_final_scale0.8.engine_b1_fp16_A6000_trt10.9?file=classifier.onnx_b1_gpu0_fp16.engine + checksum: blake3:27621bbfdbba1538a1ee6b5ae527b233e841fd405887c8ac9ea46c6d509c5adb + labels.txt: + uri: ngc://eevaigoeixww/dev/tao_cv:cls.nvdino_pretrain_0114_final_scale0.8.engine_b1_fp16_A6000_trt10.9?file=labels.txt + checksum: blake3:7065fb33f25f05e562a0ac12acf084a95c2892ede4bec8b2af0b8c2df6f27172 + nvdsinfer_config.yaml: + uri: ngc://eevaigoeixww/dev/tao_cv:cls.nvdino_pretrain_0114_final_scale0.8.engine_b1_fp16_A6000_trt10.9?file=nvdsinfer_config.yaml + checksum: blake3:c406a73ece6aae6700606a937fb5b0ff38ed1ba0690c47fcd1182ffc772e9a10 diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/cls/nvdsinfer_config.yaml new file mode 100644 index 00000000..86793ad4 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/cls/nvdsinfer_config.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +class-attrs-all: + pre-cluster-threshold: 0 + topk: 2 +property: + cluster-mode: 4 + gie-unique-id: 1 + infer-dims: 3;224;224 + maintain-aspect-ratio: 1 + net-scale-factor: 0.01508295626 # 1 / (255 * 0.26) + offsets: 122.7709;116.746;104.09373 # 255 * mean + network-mode: 2 # 0 FP32, 2 FP16 + network-type: 1 # classification + onnx-file: classifier.onnx + model-engine-file: ./classifier.onnx_b1_gpu0_fp16.engine + output-blob-names: output + workspace-size: 1048576 + classifier-threshold: 0 + labelfile-path: ./labels.txt diff --git a/tools/inference_builder/builder/samples/tao/validation/docker-compose.yaml b/tools/inference_builder/builder/samples/tao/validation/docker-compose.yaml new file mode 100644 index 00000000..d310821e --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/docker-compose.yaml @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +version: '3.8' + +services: + validation-client: + build: + context: . # Context is the validation directory + dockerfile: Dockerfile.validation + image: validation-client + # ipc: host + network_mode: "host" + environment: + - NIM_MODEL_NAME=${NIM_MODEL_NAME:-rtdetr} + - TEST_HOST=${TEST_HOST:-http://127.0.0.1:8800} diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/expected.iva_0010_02_1280_0_181016_007207.json b/tools/inference_builder/builder/samples/tao/validation/gdino/expected.iva_0010_02_1280_0_181016_007207.json new file mode 100644 index 00000000..33424e29 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/gdino/expected.iva_0010_02_1280_0_181016_007207.json @@ -0,0 +1 @@ +{"data": [{"index": 0, "shape": [1, 1], "bboxes": [[0.4875030517578125, 0.3655242919921875, 0.5281219482421875, 0.4118194580078125], [0.317352294921875, 0.472137451171875, 0.401885986328125, 0.546417236328125], [0.255279541015625, 0.3712921142578125, 0.301361083984375, 0.4045867919921875], [0.623138427734375, 0.483489990234375, 0.688385009765625, 0.560455322265625], [0.211151123046875, 0.366546630859375, 0.238800048828125, 0.402008056640625], [0.543182373046875, 0.45965576171875, 0.615020751953125, 0.54425048828125], [0.6658248901367188, 0.3303680419921875, 0.6906204223632812, 0.3629913330078125], [0.1240234375, 0.4144287109375, 0.277587890625, 0.6763916015625], [0.6029052734375, 0.34515380859375, 0.6334228515625, 0.38043212890625], [0.4227294921875, 0.42755126953125, 0.4952392578125, 0.50213623046875], [0.125274658203125, 0.336669921875, 0.221893310546875, 0.433349609375], [0.4257659912109375, 0.369537353515625, 0.4707183837890625, 0.413665771484375], [0.8157501220703125, 0.35472869873046875, 0.8336639404296875, 0.38257598876953125], [0.8364677429199219, 0.3504791259765625, 0.8500556945800781, 0.3702239990234375], [0.6914825439453125, 0.3391876220703125, 0.7108612060546875, 0.3571014404296875], [0.7206649780273438, 0.3330230712890625, 0.7383193969726562, 0.3520355224609375], [0.8022041320800781, 0.3065185546875, 0.8130302429199219, 0.3233642578125], [0.42626953125, 0.36932373046875, 0.470703125, 0.41290283203125]], "probs": [0.7570766806602478, 0.7505527138710022, 0.7318258881568909, 0.7114308476448059, 0.6893056035041809, 0.672331690788269, 0.6540113091468811, 0.6513549089431763, 0.6442250609397888, 0.6415346264839172, 0.5717666149139404, 0.5660185217857361, 0.531209409236908, 0.5126925706863403, 0.4834045469760895, 0.4746311902999878, 0.28537195920944214, 0.22101424634456635], "labels": [["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["1"], ["0"], ["0"], ["1"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["1"]], "masks": [[]], "objects": [], "timestamp": 0}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.jpg b/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ba3d1539f543dde6b313b565a738af71ffde2b3 GIT binary patch literal 114044 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 literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.txt b/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.txt new file mode 100644 index 00000000..8714ee02 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.txt @@ -0,0 +1 @@ +car,truck diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.generate.sh new file mode 100644 index 00000000..3484ffb0 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.generate.sh @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +nim_workspace=/tmp/nim/generator/cv_nim +nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.profile.yaml new file mode 100644 index 00000000..60694f86 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.profile.yaml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema_version: '1.0' +model: "eevaigoeixww/dev/tao_cv" +release: 'rc1' +simple: + profiles: + - model_version: gdino.engine_b1_fp16_A6000_trt10.9 + tags: + gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.yaml new file mode 100644 index 00000000..1d102d72 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.yaml @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +schema_version: '2.0' +profile_selection_criteria: auto +model: eevaigoeixww/dev/tao_cv +release: rc1 +profiles: +- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd + tags: + gpu: a6000 + workspace: + files: + grounding_dino_swin_tiny_commercial_deployable.onnx_b1_gpu0_fp16.engine: + uri: ngc://eevaigoeixww/dev/tao_cv:gdino.engine_b1_fp16_A6000_trt10.9?file=grounding_dino_swin_tiny_commercial_deployable.onnx_b1_gpu0_fp16.engine + checksum: blake3:092963900dd0b08fcdce6ab783fb7ab011051c51b92173a642dc82714af8d606 + nvdsinfer_config.yaml: + uri: ngc://eevaigoeixww/dev/tao_cv:gdino.engine_b1_fp16_A6000_trt10.9?file=nvdsinfer_config.yaml + checksum: blake3:a96518b01c399c0b22064ac73758b0555041badf26b11f20e29218e161f86c2c + nvdspreprocess_config.yaml: + uri: ngc://eevaigoeixww/dev/tao_cv:gdino.engine_b1_fp16_A6000_trt10.9?file=nvdspreprocess_config.yaml + checksum: blake3:a261def4031c9a7f068ecf144c4285d26b0767b9e143b83f48ea92b75e383041 diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/gdino/nvdsinfer_config.yaml new file mode 100644 index 00000000..54f07c11 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/gdino/nvdsinfer_config.yaml @@ -0,0 +1,36 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +class-attrs-all: + topk: 300 + pre-cluster-threshold: 0.4 +property: + gie-unique-id: 1 + net-scale-factor: 0.0078431372549 + model-engine-file: ./grounding_dino_swin_tiny_commercial_deployable.onnx_b1_gpu0_fp16.engine + onnx-file: ./grounding_dino_swin_tiny_commercial_deployable.onnx + # 0=FP32, 1=INT8, 2=FP16 mode + network-mode: 2 + # 0 detection; 1 cls; 2 seg; 3 instance seg; 100 no pp + network-type: 100 + offsets: 127.5;127.5;127.5 + output-tensor-meta: 1 + input-tensor-from-meta: 1 + infer-dims: 3;544;960 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so + # process-mode: 1 + # num-detected-classes: 256 + # batch-size: 1 + diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/nvdspreprocess_config.yaml b/tools/inference_builder/builder/samples/tao/validation/gdino/nvdspreprocess_config.yaml new file mode 100644 index 00000000..9d097d42 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/gdino/nvdspreprocess_config.yaml @@ -0,0 +1,64 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# The values in the config file are overridden by values set through GObject properties. + +property: + tensor-name: inputs + processing-width: 960 + processing-height: 544 + network-input-shape: 1;3;544;960 + # Color format (0=RGB, 1=BGR, 2=GRAY) + network-color-format: 0 + + # Network input order (0=NCHW, 1=NHWC, 2=CUSTOM) + network-input-order: 0 + # Tensor data type (0=FP32, 1=UINT8, 2=INT8, 3=UINT32, 4=INT32, 5=FP16) + tensor-data-type: 0 + # Maintain aspect ratio while scaling + maintain-aspect-ratio: 1 + # Pad symmetrically with maintain-aspect-ratio enabled + symmetric-padding: 1 + # Memory type (0=NVBUF_MEM_DEFAULT, 1=NVBUF_MEM_CUDA_PINNED, 2=NVBUF_MEM_CUDA_DEVICE, 3=NVBUF_MEM_CUDA_UNIFIED) + scaling-pool-memory-type: 0 + # Compute hardware (0=Default, 1=GPU, 2=VIC) + scaling-pool-compute-hw: 0 + # Scaling interpolation method + # 0=Nearest, 1=Bilinear, 2=Algo1, 3=Algo2, 4=Algo3, 5=Algo4, 6=Default + scaling-filter: 0 + scaling-buf-pool-size: 6 + tensor-buf-pool-size: 6 + # List of component gie-id for which tensor is prepared + target-unique-ids: 1 + # Process type (0=process on objects, 1=process on frames) + process-on-frame: 1 + # Uniquely identify the metadata generated by this element + unique-id: 5 + # Custom library configuration + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so + custom-tensor-preparation-function: CustomTensorPreparation + # Enable the component + enable: 1 +user-configs: + # Network scaling factor + pixel-normalization-factor: 0.007843137 + # Channel offsets + offsets: 127.5;127.5;127.5 +group: + - src-ids: -1 + custom-input-transformation-function: CustomAsyncTransformation + process-on-roi: 0 + diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/expected.iva_0010_02_1280_0_181016_007207.json b/tools/inference_builder/builder/samples/tao/validation/mgdino/expected.iva_0010_02_1280_0_181016_007207.json new file mode 100644 index 00000000..2211607c --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/mgdino/expected.iva_0010_02_1280_0_181016_007207.json @@ -0,0 +1 @@ +{"data": [{"index": 0, "shape": [136, 240], "bboxes": [[76.01543426513672, 64.22148275375366, 96.24960422515869, 74.30086851119995], [117.1091365814209, 49.73912835121155, 126.87460899353027, 55.97859215736389], [149.55687046051025, 65.8276515007019, 165.2081823348999, 76.28065347671509], [61.328251361846924, 50.49053955078125, 72.38215684890747, 55.02797031402588], [50.39588212966919, 49.84304618835449, 57.35758066177368, 54.67936992645264], [130.3823947906494, 62.527989625930786, 147.58572578430176, 74.00219440460205], [144.71351623535156, 46.95439052581787, 152.0046329498291, 51.72429180145264], [101.4444637298584, 58.09965658187866, 118.86742115020752, 68.27037525177002], [159.7992467880249, 44.91036772727966, 165.74705600738525, 49.38552641868591], [102.26685762405396, 50.20192527770996, 113.00596475601196, 56.17985773086548], [195.79012870788574, 48.23801231384277, 200.06887435913086, 52.034428119659424], [29.847022891044617, 56.80689096450806, 66.53929710388184, 91.80922651290894], [200.72824001312256, 47.67160964012146, 204.03704166412354, 50.34301829338074], [30.151913166046143, 45.9470534324646, 53.226635456085205, 58.97380828857422], [172.9476499557495, 45.25403141975403, 177.20808506011963, 47.84655833244324], [165.94213485717773, 46.02498269081116, 170.6198501586914, 48.47013831138611], [102.29614019393921, 50.19777488708496, 112.97668218612671, 56.11759376525879], [101.68612718582153, 58.145323038101196, 118.97730588912964, 68.22471284866333], [159.83402252197266, 44.92904853820801, 165.7122802734375, 49.36684560775757], [144.73547458648682, 46.99590253829956, 151.98267459869385, 51.68277978897095]], "probs": [0.7262350916862488, 0.7180535793304443, 0.7115143537521362, 0.698273241519928, 0.6837961077690125, 0.6615200638771057, 0.6479339599609375, 0.6333128809928894, 0.6163401007652283, 0.6042172312736511, 0.5862676501274109, 0.5524140000343323, 0.5441274046897888, 0.5259096026420593, 0.49397939443588257, 0.48956820368766785, 0.4240688681602478, 0.34374338388442993, 0.2937321364879608, 0.29185056686401367], "labels": [["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["1"], ["0"], ["1"], ["0"], ["0"], ["1"], ["1"], ["1"], ["1"]], "masks": [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], "objects": [], "timestamp": 0}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.jpg b/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ba3d1539f543dde6b313b565a738af71ffde2b3 GIT binary patch literal 114044 zcmb@tbyS-{_dggkIK^FBXlbF8qQ$j%ao12>ibDwy2vVeI@j|iU?pEC0-Q6`%BoJiN z_dWaDfA+U$zk7Ca?wmYhxt}|e=ia$<=V|_F9q>#+MqUPhf&u`bAU}YoC4dwF73E+0 zm!tkm=xG0P40LofbW99P%>NJ&8w(SN4aCI6!o|YI`InI2@NjYP{yqE~ko5p`A`If^oD!HMYM+5GoJqO-V}4^XNmh1{sZYR|xlLUH zuyM#KD5@beKT_lODk&|TUR&tuO47e zufT6X!6BjF!(!v&6B3htCZ}X&=j7()7Zes%RoB$k)i?ZU?Ck39>Fw(u7@VA%o|&DS zUs&AO+}hsR-P=DnJiqvRd3AjQzrFj13k87oUs%Ze{}vY!5*O;fIRO5{g@WpVBs3y) zjOUz~#1d-2&(0(-xcsq5C1ZY9c3?ActHa1lT_$kInRzx|p8tdPA7uaUfCc=2LiWFa z{a?5i0eEOA$jL(^0*C<~q5D~3fY<*UV!Jzw(c^ul!4nD38T?sFD>5v`W5vyg`f>klG3ZLO;`x{s8{xH9zcJqN3 z);&M!!FcAj>&KLp(|$>6;)Mf<3iCt*hFJh)rAbxM7|y5_bP&C*Xl`N(Q8^AF2WsQ!Zfer5etn4EpAS$R?}x2VzHLDOzL+~- zo*EPSEWa1fMwO0H`KNDjGluIj5bfYj$O=jOho9Y#OF4h`gUGgp>JBeCZh6 zw&_@;D8^xxJJKh&YX34-3@=t0Ep$Ji{(BJ&fUHtnt&;!#>-oqVzxx8z7BcQW>WDJI zI}N9QmD2LaDx|zo=t$MXG5$-bswfiKVtb?na$}`{YaA{gd}JfmPlOT@qaRy%=|omdB4qNs6MZTgU0BZ?B)A6^j1}yoDpzw$3cqO(Q0L9b9t9i%vw@OCGd ze_N-`{4OO>t(rRW+bp4Q<@YS>MY)%+4=GI&J`bjYMWT78D$8qRabb?vesI0>EyYB{ z#@=^g?_V-(g*Fs&Cao1ta%{qcAraf}x4-f(5nh2JAynrc*V?mB04v9+xhDYiBMU_C zJZ&w+@r!8lb0n3VRLspHlhJ zmZB=pJ__A)&^FsGu>5FGxxX?Qi!g<*@FzL3~6E}S3F zjz6#p#xyeI%8C{>aEemk^f6WJ+G75z(iT%VUx_<=ep`flVu@ZQg^^zE|nKHJ&{PEVOj^u6+9>n{Q_wS2IJ z#%cVVMy{cce&&{b&*xj?J#8K))R9vD*AK%d{NR(hVY<*X0$5nEfT_Y#3Xt7qa?O~H z>sPt3H9`)iYcH%N<&t^azq+FG1StCnW5s&{=%@U8hqHb+d;Ou(XofHD!R9BjwIe%c zlr`roe#~%;(61c1T=~d(lCAJcc}vc;m|sgnF`4t-X6=p`cefZBRBYg;* z{?`pJSnYo;rHt|oB}V$J95<>%FAXZm%S=qUFd1jH#&=Ua3P@!U`FN0tHCTYuMRLfu zZgwWtKgAgKI5?(WnWQ}ZWwW6^olib9<^92nn1CF5ET*vAzMeL8VJLzX_l(4M)R$6} z1r9Bsi0c92IQ$wR?_b~=%S*;?2UPOyJr8#BY`>FE4GgpEmm&bty{22ZfOfTEmez-4 zY>C~IWN%_*PL?|;9&>y#^ISJ4>Y1SKKc!hM7FNSwykY4FQus88p z|91NFRH^bZU>&tfJLOZcql~^|I;G=c4e13f6oYEd<1^^mEF*1~x>~tin{=lf(4dy! zSk3{(pB_p?Zty+*z0oU%Yd-gnW+C$YRmHxy3T|9XCI_E zq^Crt9k-c>k9~Ls&)d82V=qdq+TCFp7n8arbR?HRhDbVH>E>Lk|$YDsYW=G z&J@xFCuf(>Pn9M}clqNWRTxxy@zVubh?mrx*BZ`Z~(A=RSc2k$O$_+mYX~rmt`WnvgZ)^t$B*0erV&9CIVG(s_O55)Rbj*DTAkSrAOpE zvvt>A6m?jw&F8ZC`${8mAqFOvz_PG5cUhdrwPHifs}Vu1?qy9OEmqxDejxjw3U3WW zUS#3Etw0`yv`RJo)@A0BiFw$cN|A#q8OqPryFZOc?{hA*2UQe)9Y;s094WnT;4idq z>6Nsva=~~Wq`8hXbL5Zirs%0~X`cXs;yU0s5g|>NkEzbu^b}(b@#%^PRScPnX(#Sa zKZ<{=HjH^yu*;b$y{Siw6DJiN)g)<*8@egp#pvh}pH)_tU`PX~+I?MBhAMonhonOl znm;=^%P#yKAVm>hNE8qoOqngoN4wRIUT7&Sw;usm4t!DOzAtREWXgPClUq_3sizYf z$MpDz?04xJFnu+_`*?Mlw;mWZjq>Z-TK4L}8a3k|BL$0?1Gh~xPk@&Xg`#8Wa+x@y z5|6MvktULk2R89el-@U`n9Ab69dKPj7Upjr-cZl{GqfnCe*59g3{)jmHH;rl!X%A3^i3{yyWCuX@Kaj5xLU)hrOJ|CN zpdk}0T~zQUk1`w&?M`!yhN$;Vt40*G6d?IuX+$5N9o=bVl|~s{<&9&ARp*xWprqb#QFESfK&5p$B(O^l}VdpZ* zTUu~zgo1U2wJ0xoB6Dncrh%nuND2Fq9*hSU=AhL zg^S*F)8kLO`&daf)>}>18id>Zj0b*mMr#}hWHxyw<2+=we-;5kZ>7C=hq|K5 zH>p2b)OIVIH6UgGDnMe`<(&(q2kmaF#fLR=s3pT1ZgX2RuqRU#fynkLj=ZnFJ&Un*}4`TLVulgXod^m zPyH|GG&h z3#tpA^JOCRb3HK%itbh-RBPhnG5!T!`smF}3nk^rL|45UNW09qwN}B+N^T_fgygr2oq4f(#Y6TRXnHo7^fF| zaXlO`_})waux{xm!mvR*XG!ID>u}SXQ}tYct>^2}jqGGIQ01IFebT3lPIk}~{1T?* z;fn(g%(IcC!F>V{$ucXWbVomy{NM*p)@XQ46H0k}r1HQKkuRD$^1{yvpc%28p=&*C z9^^KZ?IsKt1YUoj4KBZi=X%g5LLQCFKz+(0%;Lp!2dPuGb>U%^mG! z{2m!bVsXw|)63e;O5@B3hS^pVSYNoXl$FPIXzllPR_vD+OpISevl`2R5bYU@SQ~;q z=zAijviH6LNwsMED5U1*M2b5srKWI(9%67-yAls;6n9#FVA$$~evJ|eLt@)%9wo|` z&HM}fKx{fC^3dC4;6h(5XXz-o*jQ0*C#H|IW&Dr)$*A{bUd?mgb6!YKTwGWb7!!yZ z?Iw^cH860bltRqJUz}mpe;{`a*XUt!2x4(%S66QGK3DE;4K59be!f-Pj<%J0K_^#hgz z%jsw4X-|8X%?h#(f^%Nc1`gysq#|Y_k-h=pCxF6x=pS*?$5EdH;b^Zv)ejkyS)6}d zID5gFIHe9A>OQG6Sta>2P+GOPhmKnfgMj7YYqNt-4fSmFTHZ75DoPo-c({0^4{S0c z2Gc{D@h+OX@g+GXfg?uNT;2Y%3uBr0g;>LOdf#s~r<~t8hs_`aE*TPZ?4YUVcd8h| ziu=~cNhtG4y(1iqu12VS${h?N#4B?RoQxYx5Tdt}`i~SB*vDuI2mSNitop0Sc2x9D zzJKrHAoDpH6(nel@501Xeodv(4^o+oe(octP`@2G9wr=fB2Fe8bouc5f@12j*jMg4 zdw_l#MdSGBQ_72w9lD~a?u}5jzR8q{y7xm!MnLROfJW&9K0Ak-#4)G;AY26W3Wa~ z3U6z6p6xSA#}bF^721BUV1~H@;jme!UhV`D5mx-1cj9Lw0LWZ{0YvH{h(r6DbVk?! z7Azk?`9kK;jPNT0CvhsfUut~_o4|RKN5Z+wZP<6g^qKqKxwsUc=!|_YJ?P@C?{8^R zomejkr0Wsoe@dV~)I^_i^gs5A8r9e}T=5&4KYpCsXz^XQu4mL;DxgGN6-Jx4XDIbB zX`Ms*MTfh#LdGsXn2eQsP1HACr~(~C*zkENH;tA;)@^7&b?-bxIggC&HiUQo3@DkX z%C@@hrcK#@cUaO!%tb10degm9qpiNbrPZ<7cyQ(Gw9Xj=Y~$pzJlly`HC~aEh^H54 z*7+bjc^iAbclHF3&^9|qk6pSn#>7`kaeI5LvifBUMrJ%IG4w(TDoh(9JWXNzeELIC z$v0PjHLC6szNl39qAC8r+-H-~HjFzl6AOou-sW5biA?z|%#|*BF0Q(Ax_%zCX1O-j zi}Bjfw}(`&{bw2@PCGG$nBgx+{2O#|Jjl>QY*I**1dWFD2OE~x1K}Eu!t$hb_IS=! z8#fLI{s($GqU@FR?tdr%KjwQqvwsSh`#gu~=n&=4TkbJ!i)QSRE!!Hi!%kzoG1CeT zD`j~*Q29q)Q@1L%&dYy6gwCb!*yEl(BRX{2HMLEBo~u z^cFm|?Z_%^`r*|w22(zL?ckB``D^W!(ywUqtCZTC&Uj8gT_C&JJSbv#xFnN)FQ4}Wga);@E2moZN$N?A zq0yaDI~})ocRV9X2Ny(o4AWMLM&+UtWb^Jk@;v0!D81XC2kR~w6@bzYmAb7SQi)Rb zAiU?*M!}PMWe^1xOBc!Ik2Lhz5wzN^6Tr98PCo*g@mxQZaj)-nAC)s4ez-Hv-}X!# zFR7$7dlNqZ6ku8UTL#Oqb&g7KhV&@k;{K?zO`Db4xTW9g`?Y0K7tssfT8Kg6A*bB+QO%~` z>m8&geEe$#W4YRqwsc!9#}Bb437h3nI}-vm*9m${-1%gUc^Z!*Y4;^{{qh7v={w^^46onfU9SH9VsM>}Ho&M8Tce8HHOFV@%WRJs|W@HQtk7oY*P%E?uO{f)3G}*j~8baVE?-wu2OFOB4 zhLvn2W#Sc<`k4T7kQJpL{2avCS&+gIr$Q>~OP^H4?6)5TqWX^iDH=f;*i0FJma|oB z&4b1gW@m7pk5&sX4~&(~ebqC1thK->RAKWd{&=FpY1r%AbD3>=r`21(eZCs~Pljs4 zpE9_(_i%Ektr^{^itC@5Z_zbr2uEM5>?jF+a|ny94d#2SSzywZ)kANMXYJN&13 zKg3RZvWvTNVh#!2|70X#p;Y&{bUq)uTe7v?)Qr^SFlH|5rSSw&7|3zvzrySD*rm(A2JHUoP~$`}S^z+1?#}BIvpmRG=nJww?Y% zO_~(&KP8>xnW*OLMXjuUh3Lv|0|I&A5PC$qG9ej!2vjMkX!G{WIw~>}fhi=T zEHbL({<$&TLF}JiVF}Tgsg;|(Fi2+KbiU}M48EJbZgfn63^?R}UUJ(`v8chSX7)fo zMn^?C(N>q0`1Xa+_E3OEQJu};^>G>1;}n|%+Jkv+<>iRo{9yobl`IR}n0|kwsm!Kl zzJ5QM%UUGg!_*s|YaVxz&t>@}l>>C1N5(O*n;zn|gA9wh+IME{%wIQ~qvR7nLH$=F z_FyZ+#+o0pHbQ-IiHlz6YE(S($K{*yJV){`)BITfFp02HuWbs)4ny4=D301-qmfv)fFvVD zyPbf|FS0wSfy?O$BW3kIxkEn8iItw=Y^Y6Da%@MkTxiS3?kz&vHSq^Y-&s$(>_yl@ znx-wIyB#f0A(?%EITBd*CVh6!5wT5Ud}VJvXLSL7gFWL``pmcyxL9HGUhlg21|MzV zJ~Cpbo;G9Xc4FA?@(Dn2$eLmWj9fWVUs987HIw6kCtyZ z^PsW0)BJVvAy|9W?4`!|v_h8j>$>QVv%aigQ|zp&s=40@DUzkMt^f%-yP z*wA!#N5r6~QTiac-2ILEolsBNQUBL|GQso-W!vu@P%$lcPt7m(d9>7n+_F zdIFG3L541P+AHXeJT#}bCVv}vy8v7pVBEK}$~tc^OT{*8CzWVZf`;(Bc2SBeVHrI_ zp^n;GF~i`U56;nsI%AxxhQ`nQ`x%|b6pl)24|qmIbeCfgEx%gMCFA4BqAOZ4@6CdT zy7RRv+YoHuE^<&AH#IHQRRhOq-48iI${gJ)Sn}5IXbk=F0(a0;1EcPBcJn*iXccqy zYpQHN>rG)QHC4z;^mtQrL1~w5J%WXT6Q*BjE%EbC7Af?S1f`AT)II^ilCOROw zuU+()IEPu(_lglSp?)N0JYl_J2xc2&=XhLtHgM8wlM)hfc|vbd)g(RU(mZkU%E~&u zI{V%@-6nK80hQ=tD?)n+q7Tbaz~~v!KGn2rW*zHGVef!^(y?jpr=6|_M=PX;d*1ntb-6`!_NDoQBLNlAU zN=f|N<4Zi{U_7LDE|Y;ikt$DGA6k+>9sn-d6E}DUcyE27UELQYjN=6!Q+NV&e1mSO zEki!S-L1LZw^ryyxjYV?3B=Bd1jeb;)y>~|ieSiY1GuD}#Hb$M!tw5z&zZn>o7(Y6 z(`Ei|xJsq%L^5O~-(jRQb&rlU|M>P?s1t3yK7^zPO6+!a@;sjqDQg?s!ac{g-AV73 zzTZuZJriLW&^HtR;8rqm&avSu08iRDyQh_Y0`#ao0dR#jthXM?Jwn7_u7pnjGFf4T zU6~*L5_{355Z816(pmjZ z3g`uVu3KNZu*7Ipx9k1)(_Kyr!NQo(gJWrzxmfGPq~0)UtuRj(>c?$@f+{l-ca&>9B-UkptM(oG}1AFiLU6}k0h;zl7C$lQ#f(M05jv-c^}F; z9!sejE#SwJuMpAMRKXbr7)gH_;hDT8Jcn_vp$RXx;y%j2zn98eoIjZLKvS!0n;02L zan~|`{w-9^NlwITE>{ti7M1(2ix~AF?BRF(;mgX=;`fdNuhGOhZsr!(zVVb=X@FC9 z&y)h}0&#x)T0pVSj1?acQL?^eS}c2)K`O^2jiUKk5(c=;LA(+W8%ym!pxQ6~Rr}0YHQ`ntji#Z*4Lmz4{Dunt$>z`1u0yk=0~P5CZZU!>mM2gD*;|sE$-}Jg?E>P zmU4e^D126*aPrcj@YsSba`}u|!EnXvLnDG3&cRkd|4vuL>o6&>xr4RnX#y2IOA|H;$gpD zimO?Z@y6bjZaM%=xRSz$=kZ*C>R49v;Zq9XiTEl6z88)+39r*)NGS3`=@NxwStU%Z%+>+Uqo3_M=3_G544w1kU*S|PvqRM^lU=BOE zf(Eoz8|C}4^NJ`S4ALLv^i~+UKYR*jw8SZDy6AIQeJ{@vrql#{tMvW2JQ0J51W{8$z-mNFMF2d}p+)G0o;!06ozJkCJS+PKxqxJF*-+b`yJj zSLUieSiibB7tx6N3>iBAsNh3bVKr+cmn)(dZ}w_u+)!_Zn0F#ve$EHv7l^%cfZI}bptD;36ina)p`dDq8bw(2$ypn<;RNV3FR$taG zk1+X+W4aFX`e1OTeN2gpvFB30yZ-gj_LVNdjVHZ}dHnt^lIWaTwRfkcdWOCBzfVNl{#+VQ=7T*bu&#d zatRS+TN`e>iEyqa#G#crGC%|k5`KdJN@!|zFf2Vog`OYQ`XCJkNQGqSxolThP}QM3 zc!1WMSa1%n4OdvWKCv+*RG1~Z*95)G!p?%qsINJKl$?KyPPEohZ9-Te3zQ$`2F09L z*ymfd88CYmWnDR-wd8l`BqMr_B_czhS%=nE2cLp*%ShLUY>xW%nN~lf-!M5-G3D!D zssMeLpw+!`BDFzt-QF)vB^{T)5*C}0?Y3f1wbI*8$d*dv9FX*IS@Ib1@v?dcUch7} z*=pbh>t{F+<@3n4(0360yhs+ghFBWj*aeA{b-L(xfDWx4@vFC{SS6w-qK8OK2RISnOK;jccCS5Ku%}TJr5az_ z)#jV%DmbU{E}yC#qe8!n~TumAVEd zIOG{qt-c)?fG8mHMa!#t5U$BGtJppLu_bf7ZhbwJ?=P91u=}NfgY4#>Edmc-u>u_zRzcKfzJ&diHg(mf$5SdBhya+dq=;;@0e?# z=`O2icz)U6CqUK_RC)THC>i(~ior9yNKom_I~&Bqg6k+mH@Oruj_PY6c7`)~o)kf$ zGS$2+(tXkYqNdIU=XR1lOz@7_2k#@6$`8*bY zol;47G6N&-d>NpmsE;8-)wV&~)b|)(Obo`{fUs&)nbb~iHXtA#BNw5k9m~2OV1)vd z2Z3QpoeZSSpmUN>#9(EQK+33#!-q6&Z2n~?m0N4CEq*#e-XxyzYc(oIgop2FdmwaE z#Pr#|5jO0he>s~bAYL%N>;*kGydHw9ojP%DYSf=v|&UajBM@N!Qn!nB6g@7FIpEzWT~7ksmOu7@A@ zGzE&8tB0tHbOycj^nY4fQ#ua@qOBG_p|Pj>w>h_?BTP(oe|W!6yQ)8_N4zl{o;^Ab zSbRfLv~1(?{RvQGS2!;AC3=B=Or6~L6?`vS_L-ywLmNS|VPQu&ugAt?F_N1;KePJT zh_5LvK^@hzzm#531YeMMaW!6`(aMQvg*d#Pdsiwfe=e(BJHumVZ#yUF);vp)m+sUM z|BijbQn&&g$To%I?VeP&9{-trxKPY)Y{6LmWgRHmm<}TlgOCTw#&5>5u^xsx;PF)9 z!QLa$6JU{{v*c6Q+6ARnJGuj6{v_ou0~NHB0#@9oZggafH)TEvQ4~nTHLxdol_GQ= zWKtP4#8zlXpKRz+{_*^*bE!NuoxHyG+^Ta8$C_Gt>V4GcT$eW2A#pcFv2wvg`wBSP zHNxk-Kc9|rk9ndBY71Iu(yV;Out?ESy898EeN*vs&Gq4C4ovoh31*4tm|QV{=)iuo zedf_Ve*$z$*>3Yq7HxZ`Ved8v_GO^^;(|dN%O1X1@aG#=zdCPXKtIi4mlWJaOTAIm zlDpEcB>Ruo_&g;dOpCw<8#*0O8n7U~Oy4yWX0SAPtPQ?rw`6uVOHI_hZ5PYcnn=Ec z`rVts+7!=eY};UskPjkv`fSRd=S~)|-4U6my+Gc5Rfu!tgqzK~8WoxY4_u)HeDZwU zAkj9qa}eb|sLJX%qiBuJwR;WMjcl@Jp>>RhZ&B~tveA1+89l7GML3mxR2KAE4UtkC z`Nzff_{B>z+eHd3MiPf~FJ#&~*~KKFz(eNlq6B`ReTRN%%aX;jlgb zODOIEku^OL?4dR?g6g8QBpc^@TwMFjK(YFQ(Z{dy4qcC^c6&;SkJupy`u#+b!-|#r zkCT}J(w1km|c@em09wbW1I+kie<{3nS$ctKt^$ zZra5sop*Jz45&_%3*mJ}2qF&{3XF{B9&toA5g8(AC5zGD+z#sBP-*-S*!&YsdjI~R zg@=Loz?d4AbaL(Zvc<|fs1@#NU2KOMAUyk8-UNi}2Lydl&1;O$x?}KK1?NlF{p_AA z?%4ie7d83#4(v6g-Zr%zxxhU0$~{3RGT$1=03!iWf|bv%@0(${eWAi;2um>eK+RHN zDX*@32Fe#jy{#{#Trx*L2DPUB{{jsO>>{Rpd7&MWmv2&_czv*?ZgLf8)`Ockn-8;* zg;*Dp^0X?9ZjqW6xlYfV0~V-8Mt)z&JqT9+3D}(#Dv(jvBnZiq0E8uK8MUze1zrn3 zG(*=5TA9xA=&{bBLBe!jAv)KQI-T|Od^RW9Q3FI_9oV%P-@H}h|B|K?3LIUY#vx>p zYU<-FGkbT0&^^<18U_E6M64 zO^f0+pt4zdc5`CnI_aEmfgS%itb~d9Q~1OBAAXupsxh)Dc=mPEL!K~NPHX)++9USN z<}VsbDVp#l$526@@jS65u7dj!n-i40ji;6XzF zb&>j%dID>t5rg;_v{Ig}JhnZgg^Qu{5TT=OPpCNuvB+D^j`vnP3rWcuECHD2Y74J=s|S6KA3mog`)z0pHtq9a>{FlGu|Wx;gXE- zZmEJtJVlaD5Qt~CMdfA)Z7}oM{>xc%jt4xP<;sVmHj5R*{A)^|;xp%dyZ5f~%jC_Dq}f{$FFQ%=GP46=;AAox8Q{r|ca4 zs>C^uS`gi_n zBC(xcSdeP(lbx$uG&gpwtA8zl+ySM~X4Rw6uMG=TtFACtKF8vY(PTM~j3BHqP*BNR zJ1_EB74bKeWY=?D2}R9b(m2HkZ$VR<(Rh57s5Xew-+us~!7V4SUNq(HNjx${{qQzI z{2n{Uk!GpH^Rt8V(btSE-E_wD+PZA(FBmf=QeQWHXY=__X5&hg7vBqHP(iH2+wa_a zLc*`o1c^s>^jCgc5XTbI81VDolso~@A&RiCgmCOyOD!h6USBxMZohO`-X&q5>`o|H@(e$Au?Emt)3>nM+Yt| zV(3izcNeVV!_eOcg4u!Gb5Pi;)KK%u8kkui)zAt$bfHuMu27$6#+q!R~Flx8)~ zdiBYY&`_O-zXQGC?Bvk1d!%d`$ZXz!H1{@GveK!XE}bu_8zulB4|*4((_f{zZjF)F zd|zL&9OaqK>*jMY$YVd{XCB5r@E_tZAxg1cy>B@#<>CoI3~y;>-x@kW>*!sy=3rTK-es%dqhLA1WCgE8E-4Gx z4u=>#RA1p^G7v7o*}7)uUT6^?GAvo-CZO!dj1oly8urQnV^pHAGp>J6^ZaQRa^6ru z)itO(G5H>f(Col@4sF?6S8I-w%3 zbYvIB-l(APzkLrV7oHNx;b5;(917^FqQQ{deK}Muv66=kQK+HxPA^|NY?ez&-A9QynlXj70u;}H%q+8 zu65VA6wXkV7V2HYafeb_7k?FHI$X1R;n z5vkW`2Xm#mA=l=xuVOV0ZV$FrSO-)eE_S41hk=#Mai`W)Z4VjH;)U{irfcFAMpg61 z$PXV0ysX4Hw^E(Yv>-3nkIJ#_h>s}9t3w@`U#>a_>FK7;^8-*l`)n0e7P>YrXOC=K zab^~XoGQzHd(`-%oG(q5j38LSa!a)%A)Q9z3j5k@L5j)meSE(%p|z1^@RS!&T%|Fo z1|N+jllH0*pV6pnX>L_UR{dQw;1D@gMY&BGg5@8NWr349YS7lD<20x8bWeZl>Un(B z*@=(X!gD>CTC6XB0$6}h;oP4n(qF^1Okh|;G~M5JD8E{W2&~iFp89pno*h5ZG^ec8 zhkn_roL1V z6B<5qu3sPXiMsCk`RpGCEZ-3jK_HM`;NC6Y&cznt9Vgnzw> z4-o!_A0#5P)$l_Oc{W9}Ll2}+DuxE{sCoo5`Fz;-z+8q=L!mW*T7}J5N^pp~F5Lxf+ zR!e!Ij)rl;hK@)8F5IVrmaR5$=vGrkFqHW0-aFIg8LnbSXpO0d^cQbWi`G*WmLrfP zT(O6N0AhXTex03lK&`)YlIZb=NYcUb^F=oyy=fUP(V>$xb4jlX%gJ|yz`P9^qY zxC#&NHm{wHZ5}MEE@*<$Po7jZXK`17+ZFrY_ zIH{hACEITt7@@|sFIQIW&C?>Z!#=$OuYG$0*orNzb+o>nzI*^~YK6m14^l2xzPUm( z2c35rRYS0b6;aZ$McAra9~#6gk*Cj@Q;#oXDaFySYK~$vx7tqOBNh;2*xI+pSMyTd zzRXjfV-HLxn^%Z;u}QX3b1`;I&ckMF<^;6Yr2MizDH_K^m=FTUpz?=M$Azlmy=tosY*HmaC( zn{5f@?X9%R9sTsRzr8t#*1>Sg(dmN~ufy8rY@1c79@x9fm#DQVcyon*(heU}&(!*F zO@jrrkw$ELe0%2)pKQ`Ts7AJZX~fjXWAj7gDaR=neoJXx+Sl0%kENY&LXAGVW6A-g zpvTEJoEj+63cPruS+FekdI)u{(Y-80SdN}q=p{|IDi=UoJh#P0|x27>!0QHs*~qE#Q#T-nQqXHI(; z5`c92F$7Z6t%bM?)D|~vj9+5A-R34KWZ)b#qM_*Qj>QTv%r@fVh~e6#ke9>iK$swW zDXB1U$??l^=j#z+LeA}re=C0yXjB`jQS3rtb1g{tc7`OXE(XsGgsg_N%GUXLT%!XN#UFOD*A98!I zFPx#|6aC`o@Asc1q^|oPh)%`S zQ{68!l{vp$*jru4J;d$8(yk-d*TNE$D3YAaPHs%iTr6q7>+6vWzr`8@qD|3itr0vf zwPK!ggucCZ-6{{Ib_n!vw0+AS)H2+J^4*V%wJIirirI|eL#^oMP1l@`jYolmy@z8k zNucfd4=g4D^D#O*maUAgC%`vfnrc{m#EIKc=w?H5?EQ*fe=aV{cP2CXNeY%f$QV76 zabW?3=i`VM$M-Vc@@Mx_o;Cfx-JdfkOj>68O4Ws=D#i9sNo|ZFG_to*Yx)%PsaqJ}|fE)nT z&-AJUz*F>pL?1%B7dkj++BCqvxnXE@S{i^R({lAks7vSb%OFzw^m?QTJcRSfyj|0r zh}6p_VQ0tN^r%3#2+QAzOu{q9J#- zSA`pn1AKq0BZ#pfnSX&Db7gtBPV9S3*eRAkS=4gIPICEU={87y2lQ*2hO*MrM?E3{nwJzKO#ZH<@ZJ$5v>ofD(TAN9A0x(`)3PXiSp zbSSV7oDuk9|Al!Z#>aV6jB4#iUrDTUQ}e*(bGbf0CeHfHl})Z7u3FhhDdx^iZghCY zvlx8I>j~yh<8F6;V=G!umrSrGsojLj!m};+?L5#C{FvqQA5mut%n6w3XiL@M!i8%@TAh(x7zYnaZGZI9Pe`36TqdC)d z|4Q?)QJ2C9@QRMa-XZ?A3J)1Hv}$ZnCCPVTB;fIF=6^(XfAE4JoF)SC0t+uJV~aQg ze75~Qj#Eg?cx;-jalLpoS9JRW&#nWth{1;7e#A+_`9TO4!5N&qG+?xVg7X-2=d1@* zyU_OsFA3Qx#PH%mhJL3C57JTiu>MDsH$uvN*PJXBL7MPA`5Tx6_+$igPee-}V>Qm3 zy}k)mD>j_?J1kSnA6908q92ryled=}Vv#=6iBq!SFz6R|#0$>>Wgx%sGg|Y4^$*IO zK%Y~bCy!|d#tq0qQn1X@p8!uWR?PY6i$+AkBN@0w1>N#~582aut7VacL#oW%bnzDw z$-j>#3hJq2TJ(!h8{xj|VKj}&8tB~+N7z?oC2Or8E+UxB3+orK4Z-+}bBTZjCF+g` z5W4qs^~aj)Y)f~H_Q#TpP0|#2`My8|y;=5W>H{DUUIN)0d84Pep0-)F3^R)|(5i0! z2D4nzEPQSElS975zi{(y5^P&g`oqU~IV=>WtMz&L^q*^CH>zcmseO&~1f16Gz_$9DaH3ES|m z_5H9IpGx@dH6To2Qg6t9;aXpU7@_2dj+)6=q64xy ziHF|r;AyV~z$Ub1HosF3&|KKD!62v)J)= zzRjNdJD-ShUD@l;7M`@h9b&AJs)?2b>qDh~($aw;W#h|XNAK0ESFA@rEuvIMT$vFp z0Ip1+EcC-|M*#P#MlsZ68cK}H@R$9NXf;`JVT7FdmBnn?rz+V#li2>_uMSTGc6cTI zOPPzmeKAybmLF%p6$PX>TEpcHya=ejZI>b3tFg*R9z*T!F39qo$>aB{)`fDj=!Mw2 z&SkD{-hL&v`hnT<>}iE6oZ4n+cTt$_TElC;wo&R~Z&_0eNEj!H9l33|5#BU}Dk>dy zBM-l)KN`U*F&!Hac|EAzxw2~lQQ+5Mb#oofr8p|3C1;z?x!oj)XL0>bJmiD2#Ipb^ z%h}{6;*emU0by!qJIw;ly;)XJ-$tOXLI1J2qTi-Y_(SXNbVyADki9OI-qPc15&58- z@-lV6T{{9JT67dw?jUOni&U}~BVAiJRmCg|LnJ1J6xbh-4gC!xO>$r1O!=!?kI}-0 zw_rDh=BF6VM7hM_>7S;B_-qC{( zw)BE1+N4Z3$5q5B$!EMRkogW!Z%nh|l&m`HTrjMI;7#t9uj~+T0Mg=|ucaK;pTF2m zyUmdONss+);`AZh#;$3-x;XXue?(6d8hHY#4$ifC@ek6jrOXe?P!o(e?K);;_?w8A zXxGU4`y%6NoHk?P-n{J2%fP0p*!rsFi8oVif`UQ2IL9pz^)3AK*I|I1HP|T6f4EC{ zhsEZ@xa54Ri4snT^ZPn=e2>3U-(fL@NScIL_z4SdW+An*NBAD5=y+|Qgzv;(9_@$a z#674YXjA|i9$WAz8H0rvubG(adQs;2!7?_a-zYMP;Q>MkQJpp=RMm=AJxVL~TQWbX zvWm3a{d|fcIMbE#Mc`|`5o#6-jiKvOfABWJeis~PW&)vmhrSn5-d>Jf{w(v4DLo#} z$NMCjnOZN5H|L^ko#eI-cn8AUTZ_x+>tsF!yee)oI`NF;%lc&`9^9c9rc1oVmz}j= z+JEGS%>`qM^w1&+(H-{#mbmC$rvK^i{6}O+(1+GihJ{UUJ|rD+;k1)*RpwdMFmH>+ zh1VCuy3J49yz?~jZv12$vKiazB*9{?lywF)Yo-+~<%y+1-odLSBSdnKe}h%UmSZ*} zjwyZI-Tg5MZziF#o|ps1mZxndUmM%VO91YaU5~BLPI-e3#jLDue;i%)c$?8VmcCoXkd-}LPXHWy?6^7m`K+K`5?TyO0K0p0;v zwg{42>kqAMR463w6{6uqL=ru%))VEA7F=y=2STn?ux_0;8k7i-gFqS?;zq!vf2tm0 z0~q450(v(lxj*1H-e*;`$tbU10ptJDCnAoQ7l9#9X!?%E7<%ovD-DB3li1nM{?7fm zQQPDS4z;YE*i;vIvEhxT6sdTX?54ewgbeCv)1~67kCA`NGM_$gb+YD3{ z4X&}b5$F(Wa)>AE3_S%{@5D7va2X#!6$x|+`EA6_hwE0Q<&d7#8VfEl{T4rg?*0BA z0fme6s;JXC!X^b{lv>m2@8Foi54rmRba5UZXLp4}eg$h|q}+)#o*^5@>MWZpZh1d8 zV-|wTfnqlfn1|Wo&C?ax80Y#j&m=aDJW>tTKGoH5-L{LKYyF8wR{M1mtvBMB6{K1` z%P+J6Lg}8|RtbE2SI!Hk>f?XKMR*D57k*|i+L54H^C#n|`i+*wug+FTiQ-XfIe z!P0&s-W`m8OFCKN&8i>84(FrE&nv9WDV@4!j{Gai%vS#BJHyH~u#k^|Hs2o+OZP(v z%#^Wt$>z}cEtf&O?omFUeR4R5@DA592y4)cj_A>X$E-iX9d1=o?te2vNH+v`09t0J z_X`lITJJP-pCLEBNe<0T!05a!{=zKMd05>>q*Z2LhZX1*{Xr3jJc-i$FRx!%c1MuM z0W~x3R2@B5vv!b18E#c%x!St`Od0FP^ma|>CTTUJfbkJ<-%GlWm^1_>EtW#~G}4^C zBOHZ-IJ=yl57F#;?xm>VA1B>Euk`NgG7on1 z{N9W7lk%?>9MHM~D*PYW26AW?~fJ2ti7ov)I9 zF!)ZOlzOk{KQ&^)f}XjR&fMj@WsY`oXAO)0hv*QQthdY$ZwDIAF-_d{t(?EPMC^c~ zFRnH#LHpi&+VKe8h9AIR(QiFU5X0-?oxFz$OrkEJpBusYyO)GWHB)=H|JCsGf9D$< zxOP|ElLv?w;eH)#sn$s>u4EYTw?!)^Mt-AuFep!YUNs_gE01Ox07bmVNovk`CD1In zMrbv}c6k;o~ zO+p46k6^U4*m8twM~jTFD!ja)$&FV_@#*(L@ub!_jUz+6;X^l0E6qD+l7wzOtj?7c z2iec&#N6f|{5=6@D2o17&L?TKd|pi1%AOfZj=6Q+;)-okf_AX|Hu{|35R33{S<)Lz zF)aB;3$*AWfkVGmDc9ZR2xPB)K7vwi1(A!+MmnDTDn2Jd5}S%<6+rS#=R50<@pND& zy_KQIJiEOSaZ$_UP2IdoVUPK}tz5(OAQ>q87_mAN7()z+yUjmYpC+29RPod}Jzl@( ze9r8N$;<66>jzU_uc!68vLA2{zM_XVp;V^b^j_niXQQ;>kf6%o&ooalHk13_+x{7Ege9rFFyux%*__*126pH!#5YHfNsc1B&y z5P@z*p2pp{7Qg%r)tiyJ_G=og(XrjU@Mzm20S~sT%99fABD%J}MJJ}BZh{T^Ht-ea zFXt1{3MsiPB>4_Ypd1+~XT({~7ijVM5~I??nqGeth-&#+DWKLiw?7pa0g(qp54SD( zE(q#k6rqZPig&vsG+@8eARs*PYhme+6BjkKt;(-_f|!1+6A zv~LgVXnlPgDs`?kUo2$aXrXU>1^YzoUrqs^fn~8@y({RMmSRP^-b-vzOg6xT9-6c^ zmmnvY9hW)q6$J zapa#`h94$;u2LF1zaKLR(KjI5u9CB#RzqblbOU0i0PS)_AbYY~S%TfD?y&zjdmjwi~>MikA#@Z7B%i za4HE2Duk8$X)LvI>d8h|wIe~J)-qo$?1QlCEjfH*W1+Tw|0V^2p%M<`s{I$TJM(Lf zuWq_6isgGo6|EXwE}tF?$kj>V#eJ>@vl z0=Xrfk+K#zu^drh~lk?5bYO_kOPvAZx~x#;@|{ojPG5yfDz%a%F|+^!dJU z^aYk}Rsh$R`J0loQmM|GN$-Ej!7O-hrrUt-18E%75Z4ObEeykN9#aSz+wvh;Scno& zjb+w}a9;!-cHEgF08q8x5(a}QWpfyAJP6g@(mM5{KOGWg9^IIYHxg+MCa z6!yqICXXamP#NOdQZL~8x;qzfY>hU?V_Zb*vtEdkwjw1L!^z!LHIq~h|2V;82}y1V zp+Nqble$A{7RSF8w**~~u(lv=OPcCq6Fa)1;;LVD@FkPCXmt?3+1+l}@5-&NK>R zRSB1l8;_G-32o78NV5?PwfZDy3rOi6XR?~$H?x_^tCD|;zEjn%!DbDZUK<~xm&mcpI zor@tBD-A~%XAfT^JqIXVi~^RGsGy(9jrIwKv~w=z6^ET^t^Vpsmc_wJ@+WJo!5udq z1B$>+90KJCeFxA(5_Hz4WB(D|???a_x3ALHO zEAY=9)~Rut>!RpFc)_2+e}rYWA@6;vSM z^STL#|OJ&hFr$<~= zrhIx`hTpze^QlV^ZE^VQwsZz6)eH8Y(&8rwmw7=eZ4xu+`BSN`o}!G-gZ~^k93$f+ zVMi;8pA=|+w}%bFB}1-v+vaLBPeAv67Ya0c0z?l95?lHtuLjH;Bno(MPRuA9Y=!#~IGX~r_d z1$FUq#}Z;!t?XCeyx{P{#DnPb$uz`P>{v-Npw<+(UnjLAl0g z_*BMBP?@}u6sKL)kSGmv{@Wx!fO>ZVo&tQz*>CyF^$16PXjBun*xWcPdT%Oz_(Q^3 zj&9o1oeqhb+d?lLhE)h0Pd^b`H?q_2ooW|63lREKI+b#!yzT!Y`fQC1Wsi7LpE2V6 zb)_$OLM!q7`cv)i2hZGp6Xo5(3GR?^XL=l(?{C6r51kemi;SAwdGWZqqc6SjK3K#i zhzh^D!Pvp0jcG6wIXBaJ-B1&+UamLhWrF6YmNzFRy|Ry|yc65}^BfW0AqIUt>A9J& zjXv%3Fj4b)Hd#KeUunJChsjL5oNa`01_-S=-SfuTmrppy3TfrNYS)={k3Oz5li8_@ z@&2jdaLjY20Z3hz(CPT%WLsx({gEhtlFH@T*$OPKljd#0GeTme`u96-QhhAg9{B!S z%pL;7300peKTn{6@R~u6Tt4N*?!Tjd%xrnFZyx)3>YjVT%eykSH(hM5?`A1Kc`ss) z4N#qZ%>en^D6b-L75#JnAKIeX-RZ-rgo|tE7i1Be0iA#b_amd+sm0RL z*bB~(`8FLqIT?nopCHX?E^_o`igG>5HKUb(E90%hdLl7&_9)*5Esw2wc^lfH0BOSA zSzqaUu{O8d(Eix3Y@{eu zmD8}oHT-nT-LY0+E>dgGhiS*~cy185#jp%Dz`=^T0l+7d&YW5tZvi#Ro#ORycQG1- z+|ck|brsodPJP(~5mcddfoIy4G>xUPrYTtRy4h!^X^@0NTSq}UPM+0V8kd!eJK2w$ zPcD01ZJ5$%By~f=)9}%P{qBIzVWvLw0zhf=@Z&s_DmaQeizT;B)iBzH=!B50nS7ht zrh!so?=S6)ypVUvW_e7*Vk7ACYOnKm)q9LxigZ=D7^|OkqXTK;H+lA{@sW=i_6D09 z%ZT2;IGtOjUTtR&x-b)miciPUA>&KrCs#K5|8Ar^gC75GOx;lRPF4K?&^5aIH!TaH z@D3%n)mhz--~^)7Uv%)f0()*7fhMY?;Z^`ant?c#AsF*ej*7bxUiI%P4wt!<7z_w>gklxUsCf|G3%extg0nco%QweN@|jMA(_z zx(aE~vNitEMhKp2#uG&O=U<7nhmF)=VD_$rbxQZsZ=vyUW6Z?EfaOj){3BeMcTimd zW$v_1s)CB&=7?XItz|ICH*1gG=1h5u)B5C;92bKX!B7XI(Ac6a_q!r zw}oxCvID1gaH6}{-46ufJu66F1$`#z{mSDV_mSb7jrbXr1{p6)xneuZC(mEEJ1q*} zou+aiE%VQ+FD9^FmKaPzZ-5MX?6@k_E?IkazRSqJ`GSSJC)n&~^X1heGXJf8^IRnL zvSdG;?7WO1F2_He^l}zFisA2$+RCzgpQpqtvlGzi-6>aDxrbH6d2JpZTg|BB#GHL- z!MeHbEMDP`4?c^&(-%)j!x<2Qs;W4qfz&ujg9ZL;rjTd!pT9Z({Y?b;TDG|TUfcA1 zgXKnJvR>!D<1#)9Q>0t(w^E<%l2P6>V^TacT*C4y(>nWCAua-Qy{Wj+O#zR<^W5gO znMo~YWxU}5)0zy{YJ7WnLPIOhPPujldU0bESyqUEUw^gY=p5(9i%{iOZK`(NBtC7m6Sh zSvoOF)OZdpN91WtdXiJsSL~@>waJikY+!BiQkdM{m!SRhKQ~I48RKcBE5+gRZJS%< zKZ>)4*Uir~?4QX$G)(gL7=zw;DTOz50F!$Rd2sU-yxKISd*F9BVSv(i8g(Bz`?;{ruz|12&e!i| zZZKemiw>%?#TAyc&rD`LSNQ_7Dz>(3zpf!!RaYN=!HR@Dh6Nn_9^nBVN z1u`>$!S$lXYmvtu*lz@$S?^6MFW(GKKuK~`yA6L}UfQqBD?hGS_KIXqG(dhoeXman zjV(cn)%5@30`AJRBzTQZ#0q611B>Ktg<wnUM6rnE|}4hByz@M7WuRQ4)Um za0hEv>ZbI9XdH(?pCR!Hxf_s$S2$UB*HROmy(O1=4PL{AtT;AtgK_x@JyWn5ly)IM z<|9V7t3q^MKt`qV+>E_ci%shqAw={<^Bw~BeId_OcHmY^Cqrwl%@+A|{-dqL(A_Jv zf1mWOaRNcA?@$$H&ePB|Q!gT<$a;d(s(6W2d@WM{OVudNv!=8T^32bp|6{?ZDfjMC zf-c&%t7@@v!0iA=dp;sF1C?}TcUO7NnyIN7Y?JoIljx@1e~gK%cCT0D-RgnT{Q#wd z<+t}&Hr-K&gO)#4u0uv2&*ZXjpZ@_%BE=A{v7C&}U|8^9N8_x~DLR?te8}|F)GSds z=h{l<-suy{2|e@99Q-_t*-PZkmL5j-$fJC`@prl1?!x;z$oBywEuPlx*z>E8h1tC+ zPy3h3IJq_xh>WY^Tsjz5118s>Pi=M9%PvF3A>nMrVm4I9c4EOSjdx)`s4j=9-k>Lr z_Ns7sh_Bhy=%QmsuVS!o=$El7rN}m}yDNsvmE_OUAge6Fm6J@|aNizW*%ss?%bMUR zEjp^$dY#?K0<^g4=$zjMm=qFt!L%nGs=v@ z1fA0NyIlVAgN<+t@A#K{68pUqQ(I)gc~R8zDC;0`XHS((Q;~y9N)& zX<5}o?ds@bqRON58#!$;U0g|pKnc1F>Vo5SC5w6m(zz|EFyAjBIgK5=b4eJN(E3$~ zIbQWaFKb3Gye{Hs#l0*`tN-hJN7Qj>vXN98hIs?hlawDUp6za`b{vHg3*urqj}!g3 zX&>oXA$qNyYTp*Wr<)F{d-L1!mBcoCyo6ICwZ~L|AXMwNq*CmpE`jra5%@Ub;|4?6 zL~my#?~w#&#sl&S0b==wU$?lzr8^NM=zqP~b>>+DlwYP@YxtVTn7^%zmnK-E#v;js z@GSkWr49@_$dbI9FdP-*84qnM#_FdfxuN0TR1qRG%%+JGoE>|N1!Pg5U+%9zpQ&;d zP2SZ&>Kp8R8$q~F&d`jS1}uB~F7#?EAqi=(99uq8YrF>0hA4mDQTrJbOoADk2X74n zDL?Xf4@tu&P65>N>loLifSi6&ST#qVg3&Yqo<)Ti%F?fy?wPF3en_s!Y!X6qgaX~u zX6R43iV?*k<45?D}7e1%I`G>FHkQM7g#WHcv)# znS+Ut+aAiCDrJzZ&7y=lf$0Da^Tnm1!qJ(ElcF!QC^gfhdzf$eHV?nbZAnk!wr`%d zqU{nbiw>Wwdx8IOqV`4K|3D4wK2v$DrjlU1ywGXiTGvEbbR(0%IBn%;;`jPlxhm2< zB&#>md(3C9qA^t0`Bm?WwC-YinHSaR+WH*wq$o0~b-gE#BUR)ISCF zroMO=!;+{wFL!seQ)thDgiKn`7)?15;c`^(ta`!B(kDAy5+-zWZ?BTQ3aRaYA5*$d zVA}p8ice3uC|`Dsk^*ZB>xk71FJH7>UYGjV_PCF$lcZ1KMhJsEe9(-Ap04Bs%nZd? zn{U29{CBh^kH0@NmY8HD^*NV|B8i)Xjy%yA`XV)pvBJA@7>%G}TqpV(_%b#*`%<6= zV41rF!TLxYOZGB0Qqa4U@y|7NeTyX-95Y7i1mW+lL1YM-TOQa@3`YThD5#nHEK>RM zZRb;E<`UEF(6f+MJKe=3UVG^ZQ?vyOHOERb#`qx|q`-AU6bz zXrMdjWP;xB{g4TumF`PTT&3}QCAth4b>I2qaniyKKCh03Yhl98233F^Xg8tXs z%KtkbRAK!V&6t<7KlBTtKh9i!yxHglmZEGXu#B;2-*^bag9S`zSbr-!L0gzBEj~W$NeEP z6GmHty%UWezxipvRgi(jBe)2CR$lz}HvUeF znP4|10XEtGS0npVQeXwb8}?UGLs7AHA=Si*Nz5gIEK+P;G0;xKP@Ho+6MG5*K_$_u ztwm7T-*vOVdm1I6ZhNLgpW9AX*3pVH7hA7YHd2pdCU}1~&oq!-#lv1H#-=7y zyL@}U=1$<&KiG@7{XuRn&912q%KZg6i-9sOH?Q|A>#jyN;}`2MgME((+0hpaLK;C- zonU+Gsvg#>VP;$BDIs&!?MLcF$AYAZR||VgH}t)_=_}YyjKDW5HAC*|F854HqaMWN z!oE`U4L?$Zu215RuV|Db#mk*vVFm)v+v4jl;|P>5&$m_lGEmz4D?fkDOJ8{Ez$(|a zQ=G$%{k#&HR3`@k`n`Vx#LJ3nmo{V;er-rJy1$+CFak`&IjO$IO@PShwVo}L_GsC^ z>|$OlS?+by3&G98?_Ic(5Uj)DXpYX_p?a3{CeIR5I;Vc2!w6O#UW!@aNi|Ff_y>r^OXuZuKaTkjB=^*} zYirRegtrVMT9{tPq_@0wr}mfdUEZwXyrMlrR@n&qj<`=6MAm|npDg_-v+|l<;W-r> z51ibV`|Mid8eSahlLR`5((b$vqlQrTynkKcUTR9_dAmD$N3r={^9CKnYI);5VBHS*$GNPWA4XH9K)Rr!Jmy(W;B|}peD0W_)s{?l(I_1Ke#Jp>Mnsf_^^KX3EqO&S+e8Sw z*R9HoK$Sms;*^ZvmBmlYyi0ej(w%o$dNYx+o$J9pt{Em=mkq=!EMx^tf*t?`q3%<; z(*$`k!pG|&UBvafT!tp{w{P91Yr>TT*GQB1%?k)dJQ$821t+?BSwGqKQLuWh>LTVx zz}Q|yl$E+XET!SBMdydT0?~Pep1#!gKdH~x5C1Mw*tHpHwf1JM z+zE-jqo|-?)m=s2?S2jFEp=klmwTcbY9s-)k@-abFRw9ei@4tFaZ8>h#56ZqE-meGBQe|j(%1J1=g zOa<@aPK>vrb)PvY4qSmlsA8z2JmVysUEk4W(Sn12ZA#=TrONSHz)kJiMzDDp*Ip3O zA0`RttLmoay0*K#)wMy{8pF_tR_%c(UFog)6VRJN(s4N0dbO&&}w(;%dTw(I6Zt3EfgujA` z2_bH7pHQ**TYsz$-B|oNS81rq-jl>5c~?o&!fTK08~86Bo`Qe@)2v{BO_jHS1EMUs z!hbpQsyJFZp5G#9(;kfTSvG5V#KzBEId5v)tK;~~2o6#hPdS9rPB?gZFdpskGTQ zS?<5y@oN5PdwSppyP+$9YLx~Ifogjl@ekX2_I=aU02U0HysN6?#EOBJtq%>B({(~U z+c_u~BJG=-e3*dht|`DDhak>??heI;4i3Wj0gY?v{VLG{e(q>k)v%!ifHN8^$a9m38g|UW*Il_0+uz%h}Ql`)H`m zZ91MB>Tsry&}{iVzZaIOfJ0ffJ>k1Y7OZ%Cc!|BO-hOji+~$Qf0t}{sQfM%7o61D^ zlv~ApIOTcgv3eB>H-^5Zc_Zq9y8fc7S4s9^K^h0Xeo4@+iJcR?eFhk=gq+)g8vy2j zwZ8B0UIv(dP);y#Bxs146!}H|^mU$ho=}*>D}Aqxn#M>z^g`Dfdxqod3- zWPXDEKc@p29X*5ykL)pP6LBONiQI(Ve1?^@h0ZeS)7=i0Z|X`PG&S`ZeCu}475v&g zklw+8F@0Q2w2QZYtG{Fy4~+- zj!fTRpEB*|=MRs_VcW3tXyN-tx8kReu-?x*-$&k0}AHVWCT_o_ZIiEQK$8{p48O8&C!}rWR z&@tUFWQsPq=vFieC)^ru1YkDP8xQsnBF?Fcxo zN5oD%v1!1%V9YWcmp@})s)Lb5T3QgABsR}xRUfjq?Jvoy#weM9vN%OAn&(jasju0m zVBe-2WR*ZXn}qm7Kease^nywRLw(Ge(4CL*;s;LcWqzTK{J(&NF#X`@gBF1T%<@_t zHO-Qf+ndd68zx3tNp7pZNu3hG_Xh`g2+n%p8uS)^)V&qwJW$|;Vhg_d-Ryed-eUEb zQzoG$z@^D)Z4zd+5x!9e?{gHr(JOaqkf3DM|4`U+=a`m}^i=N@URB}UNe-m_)Abl+Wpx@_A}{Uk|nic-izC&hmDBm|AYN>)~s!lawYz9+x5_etX$ z;Mx(KjKv-(foN_U*T=VU(OVkxsOo5~?KN)7hK~;M20^n(gUJmBFMsPU82yC^Nq06! z^u+rHldsp1pa-U^Nl!n-+HjekrDH%bScx0k)>#`IoV&BN!+$}qT)YoD`JC&1?kno| z@KCUiMtw>Iw`Pf8H z_Nx3U&!qRx$WzOQPZ%EA=a2-F6?iTSCfJ8_@r-EC#ABl}HHr`d(3<-@-2*zNUSl6^ zGU#He&;NCYZlJNfN8{ESB6b$MNLW=sPivgX00Bf~bNmOC#zj@dP)aD(=GWG@4oZ9^ z%6(6(ab-Y^7DgomN>7lj7=u~IQo?h|KevSTa7Qv)xrGq>2=Y5;SGD-KTU&=a^lY){ayIvU6LW$_FxU>F^B(iAk?>wKi+BpRN-Qv?bH}gY z2ccC`uXEl~z}%=>n*h5tPNOFUasx8<$pOn7tkM(-3^zcGY|jR>xuF?>o~1mhyN($X zKpFBI=znWr(xq12V`e85Y=r6nF?+IyYpFI{|4sYGov&s@Mxt9)R{UyDpgjTm<2Jlb zj05@(4eOnolbU#_WxXkP>_ySaMi1Fp@sfDs@m#HEi0`G03wXBEdSX#>ldSvJY5YDE z3Q&W%*d*(AG(^q%!?*8oiSd1TAiq7YnXX;;3HnC!`$zVy)REj{b4FZLiHV^=bj+Si zd0IoGx8C}*im-YghRKpHg+ONctwVEag5i5bEA803k?v)(F}-A0ZWeP;I1yUgp8@3> z9>9XeCW_YQnXUGV{=}9XqpqKl4^GzHmHQAf0dl&`o}OpfF)?VO5kR$KZJu0FxoZX- zNc2`ZQ*#jRY{=ROD(k^T9B0qG$=A$Xt$hamSfSf<4vI(eciOzM-g8j(WzuEExSiSG z1@(JN&!%F;e&7v1KSkP8z;hJK{=nj4cW)FhA+K5WtGr(5*zab&fN(jL#}Ym4<$AtV z)NXM@2;({mpx?(X7_ing`hFLY{mJ(xRX`1a_6QbVP#m*b8}GDpC)D)kix<>PIIuB{ z)Ogi=4HVui`$o2CJk%n5NM2F?k6hI+JR>gT9eN?I?)1?i6{h=XL&M%d-@ngA>&6i))0oU$YUe@YQUz!db*yCV$a_MV5Lf{JUIROSx z#B^M1%&u(icQm4JurIuqidxPploR(XR?K=DP zCS1$)0q0)j*cbzr?$5jTA5m(IJL2$y0WBR@2`31$RjTURK_5H9*ak3t$wtqY%Q;j* zigfY*WYQODgeos;op1I=1sGD|B!t=bkaDLXFM|%}ZwE?F8jN<3;si0YTU!^WeeL?2 zmai%^GCmWXex*pF7s`GSG*KvS=Cmi_*mZ5)cg0xb=;aQXsy+Sm+U9PMLdzbeQva+M zDB3(*7`)f}&!Kpm4{q;VbwVW`y;Oah+9BcuWYG>VITmFBj#f4#siVw8b_UII@X|w4 z_{UR4$*QyF4uW9~!|{C*^`soyjbUMhKWh$Vf7088>&-V+B?R!+qP=@AZ$On0A88X2 zncex_EzQh;lfO?+c$g4$*Ox5Zye52TVK=0N|ImO{ zb85^+x6V=rR|Emnh*;2P?d1-Y#`3F1(%h%05pVvO*h-e9{Jv8MDmL5p9C+{9i`hv9 zif(5|l5b;mu@NLy>}RK-6s2lV??jB!eZ15LE(C;L!+uw)&JPl`jU{gW34H%fO&NS} zER1rEmD+i3>|}G9WP{@8gIlS-`C@@SM|;ja`P^Aq^v*IN)ix5F6rGS8bWIbm0OQcZ zR$wA}8!-AI{+lfIm+Sx3=1*qVRTEWF;&$cTn84f=6%I@y$R2my|CM#G_t@GXS+h~N zNSTvb=I-ZOmjMYm!rX&15LON?*#CsEDXy8IzWzk-J~;MV)BWpH|1^^iyKW=GyhuSb ztaZNZL$=;=x)AUja`qlAf(WTRe>o(b(HA{6VBk)cNu-c|A}92DLUuv=nqaMX>PhLL zF;mn?M-~;ILgZezUG;;`hvh<=tWO4~ONa%N+{9;WCftG8gBCh?7ytarmclSaAd{BI z$89syk{@djm2RhUknvX7IT^$IL?qvu(B&-RPgECanTS&PGH(Xjz<6?oEw&Pvt%zW6 zdUo(P^UgTu0-u!o$Tv#l8vF5`AB@H&zZ=I?L*#q1c_h+XbUv+KStF~Cg3uH%F%kWp zp@eJNMdDnyrtog6W9{xZ+`HIVGf8SNm-(lg@3KxJg^f;v% zL*Mb~e!XinuGYzm9`m2chrXZkT-=AZm0KAAC%Fofiy#E0OiWwAS0dm+gg@ zIBh1c&3a7r*&YFWu_Cy*DLQ6dJSpI`%ge?@{dpLMuD^dFrF}l3}LNUtcKG7Cp_;s?0$cyPYzn<1x|y(G!_2uR{*CxGfN| zuqVh;;~b&QDg0(HgIkB0HrOMIEHX3gp$XM^#bY7|#^Uxv-e~CAv8O zP}my1n>YBGbCKiL2@x(exb2s9hf>aHG_h?O;r7yIi*Khjk&vhwgTC{Llk)Q(9=I)> z{eWf6G-YZcqHp-qrwLitWs(7|8rN8t@*7Hw-`ixP8Nv90L%sT$D*ZLlEXnN=feArD zF0X{oR|{UwDC*^+fql;At#<0yZSAv(MGfkt-Ct5g z*~`QebOipnnCwWF@;mH^T2OHE7Mzq>dTp0q_s8!t?inX1{W_x8#zkVknw|{I7gXP^wE75`8{>GRl?$hPR|MNh=g+3=Y22IFw#rdxh%A))!m}Qn4 zRv!1$@%r@|&J}`Rk&I8;?pRYjqIuqt=M9aaaX4dfN%b(Ft{divj;s>z{79a%Lc-BFEB8W$-@E2P+W`#Hfl2bq{SW!3kTDYH`hd z#6R$H7DYd{=+#W!e*Hfq{%MQHxlP^IfnN8Tz^;o*y#`FWI%POK##?6F(0L}_*Tak| z=$Zv0*h6Sf|G*x3rCRjI1_cV6T|EAvF3OZ3!@jVsJki2_K!AHat`srT_IU3-XY z{HQN1xPHe!XRmXuq%zeYWtcD1;Gr5>U~P#1oGbU3 zjD!J;ZzUw;epz4lR~3=)$MDLhYBV}`jd{qx?m}fzB2T54qC3UqqLR*5tNR-R$3~hNGhH;Aoj=v&cKJ8Vc~FMk+xTrkjlQ*VYmf`{x|n~DzY>#uD$h` zn&oJ~019LIZE3WtdW8EH?5Z)VYbK{tBKJP^`cA1A;vE^x7pp7e^ki{4$v4IGUCl_axF-HLZ$b*r>>!h# zmgeKkd;D3JWk49Lg)vVkb?Q+BE{$phzYgJq8y_5Z+S;Y7Uyyv+v|;<167Iu!QL@Rk z6g{Icr@!B(kMS7%`Mz-V%FP2ed8s=q|6%xmwV*A%JLNcu-a;ndiHvJL!_V7xH*PfF zs~f>^_zzzDA5q|iLY0y(X0FbVnbS~(@Hl3U39YAC7!yBqgHuaxV)S*ZGFMQ!?a}(E z2whM8#3Peslfh>ddCv@pXA-7MAYudQb}0c1oR6o>F&`*i^ECa99wZ|x8dX%o8O$uh zj;gN}m+uIIGp5yyq!}qL?^UpgEyW;}vcqS3(5cqn&s?=gPQ&G-kjQM5^AouABBW*u zVGz9WrlvXDoAi=#QZfarpmOU7ABw>i!G>Nl4x=`hs3ZfZ{C09t5z4YGVd)cgNG z%Fg?p&G&udR;#KgwO4A_s#065YN;w|?X7BySt}}H?~$TtDWUeRz4xZ}s@P)hSd9wr z@ALf=K0o9)$KlB1aoyK_Uf20Lk*i}7%S3bN#pg~RO>u&$`Ugj1gCao+GRVtyQ%Rk?I} z@_fwnM(`}X50G^~HZ?a@`+dDv`X*$BO{SEOqwDudB`!#&S(M_1GK*{~uT@C=cBcD? zS_!UCSo51Q;=rIWDbLqDwIWI{OV3u0l1zr1^1@Fkaqm>-NVsfcf$9FKvz)R_$5>J4 zdi7SShX&UkKxLeZ!SmQ$tJ~8nNJq;pXsQa92$>Rcs&OY|#CKeh80;K(QblA^VfD*O z4EI1(;=_?;BALVcc`N-E6YT&y7e{0aYYi4 zt_l`msroF?+d5I@ZNj$`Y0K3Vn?F)6FE8td9|*f#Ym}5VC|y1F8eDG?MG)Ynn-VfN zMYIeP5$GlL5gYJOn9Qd-R|sFvY;c<6?~52|&&HbFLlyuRj{W1GW}kyPygZ75$4d{`Nn`>J^@gYz~rvT94<agXn1k@r*wFJFHoIB$$pZE-x}n2yf-#TPJaO=kybuTe!5tjbPT$7s9}vrb zu8CV2*x4HG0fKdJ(5evP%u~BGjLz*`^Fr^|b~19IOLi?-+oV@u2oZvUXsS!dLfdr8 zi$x)*=pKeOON%pyLaHBu%VsJBEeRw7vpWbxQbqO!D+lDmf>BxZc8*>;`-5M zJ$NW9kn!fOVB}owH@HgK67<*nO@;`sL&_rP!ZM1(&vWFnYIC-776A7-S)^929JaDf z=^tj|$9qWXMtt`WK5sVbG0JcX(8n=J{JZExv{AYiiMZ=x}McyX=j zYgK3T$nTjoPlx=~{&F)FdTPxNRJ*$Z}at2ymPdbaD9kv>*K@GjK?UX#n)}nJAtz8V7#5g%6zTG9dl*R zN~GA5=ayzRY(Pnx)gx%OE##*3!e{E1a?C5oLc{fOa}*8K;mxzfKYKFe%>Xya0}~L< zoRYy8DZ*7hRdX%s$~<7mSz~V!vbcdlJU2E{ubQrzK12P9XM5C<)*orIPXC=JqxBT6 zLW;81x)kAKdA$v|dcbU0;x#m0HRR1nZ6ieV$n$c+p7Snjh@N!{6DoWC$c@xUJHTyxIxufi7-)^&0X35PxklFE9V?jER0q zd`;%`Xx!Sf_`Q0PV08o506?pm;#|(OqFExK&CMCY?jZF9GOM|Kxw%mvc492~a&29D zjwzj(2X{gpE&G9zH2cN*If}A{^+cWZS)q4Z;sL$$pYMH4jbPhGswlK-(W==~VMuqA zr_TuYx@1r)SLQcRhKGT{H2Q0!Uek};q-zeCz<&f<-zBKfDqWD`SD$npX6qN!QtLT} ze>3n&vncf|`b8foP~jOvfRfpPjF!!B5O+40i=&Q@bGIopS#04}bvuge{W(k>3|Lf3 z(-rUW%+&bQ%W5wysxu1Le8~3|M3sq&gqVZUx(p{cBZnw`8VHeW{-5y<8jD z+;F5lsnLHW6O3i^r9xY^o?pn64kPa`g*oIjMK)#X`0%lnEFZN|;yi`yj9R7!>)bhW z9TGPJ$iQ|ILvV4Na-O5N8=&JSfqfpz8uyayH>lSKV-gwWh{ao{?B^UDeQ9MidpFie zd)|H)&mr*F)S2@%a#}PV5!beMJE_yX1sl{Y!|B?_YjtN_*Bhv<6Z6P<5p9_>eeieV zp7P{sY4%&ZR$>RjL7kSF{MR8~^ZP56w{cHyQn#YjM0@?Po~lNWcTF!YKsrV%EKXMJ z5|iQ`BitW{^hoNxY~=%}d)*bu6ciV62Axg)K?fJ1ngaVh0RTCR{jJA68qWQj#UNx? z!SpSUy>Z!1d07#z(5dc>0iG8%Y=zu57LI3XbC4Wm>2IPA0PR()TmMJU+V1p)>;Wlg zvNh(?11GwgcT&63<5!z-e12#<R@f8krUtIx68s7jSv^1Z?|4lTO~KpCEnOc% zq(`8pB`jv$t03f}_t!~VqeC(JbrDB%wF7N7MdDqhZ2_t`EW8KTF8f^x^%2YJb~d)5 zbxfb}jTLDKKD_jJZH%zRI*D;iUT=I6#n+Va!Y7?Mi)P4oYHzO2`r2!xdMeBO3vOvf z%%A+g=kC$a5zmz=m%$yes(EYuzv^dPR2JV>YiZl^KMxA*Rqq5}i2qgg{%kFaNOl#g z`TIaOGt2JZTsd3}iwf~Pz60F7CmrzxNh_D5-o@z8-a)~}~mzm7rTM8%hyqodmCdY2zd3y-l#u_Xake$F& z^UA8hL9&E!v0Tw~#@}z%HAsAfsL#7DuAC3lGRVkw+P1PPSay@!B83%My{udxvFNJ8 zeF9Oy61!N`Y1U`BGp9*)+6acPze^FHiF{Q1Jo#(xmJ)Z?Y5cSitJaU8oB%7OS=0ZW zMN7w(%#jyU z%W#PEXC*O#KqdfPKL^BkPAae?hKjI!=GG@84Q7Gg3LM@#(SCRk=>FqltLpZpAP(s& zCz)K~5Khw*cQ6!?P<#fH>s_H(lcl@p4BvayFzD3(pa8rToSf@n4yeq*_E2VrA4bYH z+~($2t})bu`ysKh0mhqFI6l%q&zvpR@Vz+|ylRGW)|w3l$4ZJm-}7F@rhG z57L6G=Sp8v079FqnS^a98awp~w)sf5$KwS7x)@#%$G?uEk(f=!Fs(Iws~wbjMEp?o z={r%bn@re&L*4TFW~kX=(Hi^n6DcHV3|ujHVV~LmVDzlD3hn4V^iUu+HY5!5gS{4a zXi))rc+0xu(ECy5HUaEkfyk z{sibUONGLXL_$ASg=lwqV7bjk{2wJ2~ay=qVZx#osbWrEI;6e}ag9_!@&e2cfIkpWi6^GDJ_ zscT^^Jzl=GEOmVQ*XZ4tzfQhlB`imu#N(Wdf(X;bqPhF>q zX=AU=v?Y?Zo;^%hQ0P6o1;zPP-VUIuwU|Jwbzgcyh6m+P_|Ga9l8A}+s(>H`U>@B@ zj&%*XWpePA6<@K5zIfGim^^~9rdtRJ9Fo~hh_)^scj+(KtNV|DSX{!Y5brSFH`_@+ zx9dIs&*WGF<-2YXoTAUCJ6^lwY7sA%)t`q`(H7+ArpR8tqlL#W$vaxG8^X>YShWbD zHs;>7C92ocaE$^7^vIrrTlzrC-jSUDNw!&7>IlV|wHvG=A8`l&0O$7;_X7p&=c8TbAcX&PAqUnf*Qg5meQ8X|#&0T^vUomzBqU*{`p9 zBjS`PwIE(5U}I=^)IhpBTZ7<$OEga@h`?m;iO<-y1YZxE4YS`QY+y1!&+Ueys1%6c z&#RO4ror;r4wV|byDkzG5q^aG{4&x9GUXnxl>&hx~EpKwj?`Zdizjos9WM!oupZk70eoJ_hgJ6Q|&mov${}EWs)bdVN zq#yiM^?@BdcKMj0B>iqrx!)=Q-7>m0W!C(KsVuKS@b8<%Kjom(Hmh_rN*Pvl-N{T6 zJ%#Ir*dWTBrBJ{mAAGham@(brbK*zn>J?M+A{h;EEsu+Vt7)tcZS5h^*aks#rUc^%GQyo6V1 z$C5^S9@1(;*UkKo>fhcowEmOT$LPOKK#DDYp*lU|Mjj~pv1qWwv7Dl`UhEs@(@UpC z;yx{T*uK$?ZB{0y)5Y4giep!w3CWa@$51)GZc_1Kfbs8`^`nOQfI8#5Tp4wH_imu0 zodLY-^Io|fZu48Bm-BSgHBIs%ynI$NF7FFnWp6T(P*&B1Ami~ z{Jd$U?L&&7aTl;Y)g?X=UoN`i@m{^K$|mIEFwOLLx#wtJ?RRaOUlxNbR>6r69f8!+ z>aDBseV^z*eQTcGSIpZM`ai65yw@As>EY^4CkJ2hd%P1@RR=sefXg%*(opfJ06P<( zuwGb}1tbJTU)+hxr|#q$beASMRei+mMx|Kx$snM5E{NS$v~=73dW1s;e^ox!1)_Em zx94e_11qEk+w19rp7C2O3)1TgxVhci9Zxt0q9ST*H>Xpn|3r2-S~9}JNVbXNXKMBa zmBmd>;`{WIPAoc%>5_WHzim8M9XNix`SpU$kp&WhpsVvon?i|LeJhJkaJ!lQBd*Hp zaT5O#V2*}V*(V0ltX0YX6icVgSTPO94PbG|_?*9z@B<6x9aJuN{RgQ)R5CS@2^K9-1$ene;_mbb&jNGvM(Mr2p ze2~e=uCHd3PmOZ7O3?~#Nh;XCF*OaII%}JCwGoC5&GEk69P?&eO7}5Ak)8W1=mOWU z_J{NIpvv!G>PfWjS$Je7A2rp5{j55kI>vk?Tl%63B{g|{e$B*FkNW#f`mvvZuH)#Z z=^^Rxf9wvHC#arbuLsP(FE5{IJW*{-c?Tf1#0bk$aQsChUOrS2E$Rg;$^{Ed$2{?y zK;~utNm3$&z|X)h+eEDdrlHZAFsp780`F`>y>Mia6I`O#KpiaT>o!|Fb$$9g+yXLN z@A2zRnV#@DIJJkJZW=F9rkU+ndDs{g_{8whz`%}UY#JmAa5hvL?w(a^up3Kb7VpR3 z&K$|2x?_$XIr5p#h^M6ZzNpsZ#DEEBt7}og|Jb_IW0oYi{Il*-di36R?3G2cZijfu zX)3NI{|yK0xP5HXs5pn3B>D(El-Wj({;FwpHF70!Fek4%S&n0ztmS{&izc$o_!CTm zl3aXxS9-T!Vov=;rBjndvv}c^N5hBjCR@aRqO%kz@N%{Fl5Qhj_vuNJTRy^MI<{)! zUjG?O+d`C-!K(Wegl6GJ>w^21{+|;^+$jomm0oFolYNt8>V->!=Iu~9( zgz-%3hKIGa=}jW1PAcBu0$P&5uIes9etx>f4S*>Tp9J+dmA`)Ma>q)kW-s(4Oj_uj&4Ed-I z0?&aeb}Z;GT=YelTrDY~$cSU3!mC_7m-EuU+Ca7DbP3t|HTG6ek%G^WZk zU!UG{@DYkxx@R>Yai}2Mibcj|g`ZA!7AXB_mcW!36218y1{soN1?Bk@+MTS=E*qxo z7?O$w9#s)EfW14)(klYd-qiv}@qMqx2n|_pRU>zQ{m7cYqM~k@_t=F_v~heEZJd)b z@5fCB8$(3i{_wm6o|^}j9zqJM2IxgwnRb4E0N+(*Wq(Q_amTha-G1AX@wWRoUdX|X zRS)wE(_Y?r=Xb{`0L+6;P!hxrC!L6H&#Yo~uj_2Qx#N^Sx!AX}Dt^oatA2+KufP<3 zL>+#vjFvG~?udS@&qK^=sU^SvLX)NUR(Q_&LU3>s8foRq{~KYX9Q(l;xchoGN%e^k zqL(csBEmPDC_b4}aY{11xGP5VgEeHf48#mqnFhbhyj`av;euE}H$m<8_L^^hX{}K1o)~Vu76HBwSMZf-*A2 zZ?b{$vSQ>N9sOx94Y#5ip1f+4?0=!}1k>wlaWO?T)%)+4-u|R_J}Mp65|imuub5#0 z{gGSc`C%)U!F&6ckEh&A-2;Uqqbu-OMb1}WzN-m9OX=g3q5jZS!*rv@Iw=~t(UjFj zJsQy${j4q|wqLWR%|g=D`cPFX2NIYvovu0%jRG%Xxcw1aCvT7XyRi5T4Zr86wM+cz zpv%}mKQZG5J9G-}e&TZ}a-tCDYl8(6<`#hTLGLeJE_SoF*xt_9Z_1?*rz;fwPIKf~ zsar~-n=-fqme>GW(2YcE^Z^F+&CvpGv}>5(4I55ICd3?4pU;Cg^4Hs+{|w`%jt?n#V}m+~z=AXrTnm0R z{fXE*b7msML*D!=S+zU#wF7{*gC{EoW2;o8j>hZ>l*s|Ur3-s?M1*2_?cX21WI_{L zZ@2kF0qzp8EhP$8hpxGX1dz9QFdOggwDG3u*Cs9trhjo;v3_hh9v^Q)8Wh&a$9Mc1 zUZvKb(q2^&gLf`mzTa*=&fp+VC=$={v)s+hOl?%?8<89_2p*r2WvQFw=ItdJ^l$F+&sLhQX4zX zl)lETI5cfk6z`zLc2nlGCOh-{KTVPAS|xzKbugeQr5-+yUA3drHmy(wp-^OsfYYO$ z`c`lm&JeM7Ti{T%d+EcV{cv0s{JvSB37b()o6Psao42*uuPsJf>CXT(bvKq_U8IMK22O)3fv#y}kam4`Lg${MTdI~+#OLhw z#VD!6Wxv4q7{Rf)cH3jz6W+?}r?BcS=7>W@yMWc|LZdj>SE(AYrdsTJXwC#3ca|BL z9SA8CKHFgfr@u*8xC`6wdIoFOJo(jp=l63m*VxRr(K6=uDEcV~D0b>VQ{u1B~=h89}rb=BE*>&C;t!bK|5T0gTn0PrDibnFsH@Tp`_ z;SXIx8DPHQbYNg+&&z7dDOl`}vP`3YY0Gx%_DTNL9W|>nA9Ji-q}PZx^q3mg^jF7$ z(pY1mFV*Mf+_AMbzqV|tzrbGB`mfF#cV=ZKr&}|@qq{e83KV90+wYK_`o(mog=cSu zk#5GV!_HI>1rp%0FvVC6o;eok7VL!iXT2HvB?=g3(R2Z={Dt+AIq8vxf-=v zMPp~tssll@@03|TT+j4MWYOkV>ULdym{_XYbW#V#8V^mf*At*JT z@!9CXDb<@x2n}5Q1QiB|q_ZNdi?mA{olM^3drBJy629xmi1vrs)1?Qt^=U`TOR*_` zMZ?l01pYXeirrP-p4Ka@)8)?LS{o6>`1Bl;z+XB z_Bou^U8$Bp#UX^?ubn~W(}^sGk59LdA7h`$F!B|#Vz@6#QIY=<5Z*qvZ>nBgw*RRI zr%PN+vFO1>?UZyo_VQ(yy`ry?)3jLa4>=A1&>48e z8m#mggIcR^>@VUv%_vThx2!+gW#r}D1WzQ}ecE{8$}>VO>QYfH!tVAoVoVYyeiPfO z4V`z~zj$yt_$pH*r zH)%$WF%npY=B2$Ac60WzX9g+ZYDjOVrtFTf)+K{EJ^K_4Ony2BrNQ z5*)~NE(^MlI0fP9!e;x%fVoc8Gtzn2<0OPCg#H+b2gDI}2~D&VFU7S63+Q2s*WILI z`yy8%O(BHP#M1jDHx@6!j~2w`ve$FdlAl9aem-B}_|U!OK*0TPZp*G$Bo;x_JW~N? z^DFN5DM6$A3tth}FNqG76Ubb5ySVQN9v`}PBZ#I~+b6uf1h1|p+o2Uv2pQZfj3OB<6=11u)=uCJ#~qDz|1GYX`!-{u zf>np|JP5BuYg|WV4bt%fH$m-CWR%bNK8OMk#UV_4DSOM-Qtmiyueh%p!Mq7X9^>%E zzqvX5f<;Dbw0S-bT$du3zpy~haqWbQb5(eNH>|=|#GIE2==sZa`uy~6s4;EyPF72; zWoo-UAb@~BwhXV4;vcE4hazYjrV;!w4a2GO9FDSdwYkUNMyQEF%|Y`alz5-Z3Xv(r z)f9{R<6bIq80Q~66S9jrGo*CHBOss{mN@Y;W%3!3*oTDNJGvZ%}k<;7RD2=XPEO&-JSE4aw3pH!a^@U_uzNl z{q#R4V^N@AeF*-{Lwcm`x?ScGvZi?@l+N?P4t zc7h}f?sc_I;DD5HlGBEh?H>6zWNrMgPxpE>h2!GlB2eDKO9K>7Pk&fbH@J{&*h%PI z0+WVdm)q`T+DUF~L_aEi5~sNdm=Ijdw5K5TKGLjeVr{;+be4mq(02t>Zeaq6rX%)n zk9@?a#r?c5>8?@eT-Hxj;-ERE(lUcf)rn(~WwS@?;G`qP)5%e({|Ls7TZwxDP9Vtn ze&cD%vJ=6}L!9t}-1!Z(9;~k|-A8{AgTnpDKh1rSp?p!E^h_A%kc!h%z*{tI@es_B zJyzk!AnSDLz29UIHgEXgKLStWzG}j?JKlc+?&UU{9LWhtD8~Pu)~~F=dZ#`vd56LS^xa!K(7~Y^DKm{=^t6YM4h~{p=j*4qgf~K+UGP zLH}3(vM!EY=5&5@krC7}_tU|Gi2m=OMnDXL>(M}VSgG-;9C0jW6a0m6cL&NBI{Q29 z4li6!>L3{#t8jsnFaF`)w4xJ<#QRBr@L~~t8a85@Cnh~EIR!~Rgj{E=bBnttq8PU% zydhTC55g<&e1<|mwH3qaC;Ey=`yh0y0e*&GwoeQHH5t7Fs5fshGPfyz(;p&KF zI>Pw_zR;PA1Q`!x{G7qFtuOc&u-fl)+^`z#v_^EZS&S%H^dhN67Y37b5~{C4Oe8^6 zEw3vN0R6q7>|svqQa$8)t6=YZ?)^1A!p0QOJ1+F2-^&tn?>l5<3+7~XMw7OIR|g1K z^$3Bfn)wT7?WLzA@uy}xG&bIco%gBa-RD{nRf8vemse&I7E!W26GM_swS!!2{Y#~q zCYPU2G-pekOHKEiLY9nsuqMC9f(tiXKt62~kUgy5vrEz~wMYdroc6*SzXeF_Ka&<4 zZ<8g5di{frU*=`(q{a!rG9SM=N#i6!823i+i_P1#bT!oVuHwIoe;SyT`Kh&~?H~yU z2@3Oz9%Iic{NzKzS3;C8;@4|R+ies>ge{$_JMCuPbssZUs9+=j-!?B7-HajK(xRULxZhHbPuF<}hbW1?oc*{Ef>~>$2>z`f; zXdbhw7jt{O7N7b>b>-YGAOoarc`!CIsA${Hu=eV>M}$lSB)RlPUoo-E!vJ&hL)^YB zMFSagXHDBLbf5}dV zBVF|aj@ps8+|;qDoPHJWlF z1?e_MuzG&c%M%uB9$sV6UNnT4JmHHusv&=$1+(p3uYVP;rl>G?pNw=<8ho)k;+5Kd z@0Q2$v(;{z)0dj6qLH$e2S%`s@*W{~oWYPHD?oS6ZU^1+_j+aR2QW@DK2AW-X^uN( zRU^6S7KiW0;&bC6h-6GA2=^bswK7bqr%v%9UJfJwVJzP)ueYYkkz#W|cNT)s4rbG*FwBox(w+|-%B9Rx9FefV-a zI$rYuKWVzRap(OY_YqP1+ozr*1YE7ZJw{G{Fm1B>0i1V{$fle2s1}J52L-;9l!9Ef zdx>(+lJKj)&9Bi{aYF~T=3>eheFB)U(E59QrFC&*k$B}3XpijZcUoDC5Fw$VA;yt{ z#)cK-+Tz`N70T5$Scb3~3FtKy*-oZe`4v}Nm3^Kr@v+zj`+UV?>^XBmxCm!^%63o6 zuRb<#a$8drQ$2NZw^fBqMe3~}-UPTon9tQ5TJ)x6Y!&8l0{i~od7l(N|GN}L%vUfs zTdVsqC3ZKCx#FPuTyae*u*C>#ezZ5dR^Nvrlb=5GuhM|BXj|Jn5mRzXd?vd(=NVu< z7MFU7vTMQptNg6y@bf9d0w3VzJMF)8yvYU_nkdF|k!W;4lv7#3q?dTwX2Cb4?BW-m z(BcQlHUs^wh$S5RUqc}B?|g;cL8{9{7y^kt8vXE$C;BC2tn`jvP?1~Q!7Im4p`brr0>86L;cuK2fveZ4setOX;tAfQ>X#Y+Ur?SEcwFTDB@kmvX|Fkt1rqBgW> z5_o+xEeJfnk!ahCy}2t^?O0E$u=s4fwVa~})bJyI{fFnm?o*OU)@`P;qCRkzudZTc zMJEdnx$CMt?dk(2=e#esa;UWBNyHr(=p~D1#e;8F#H9I8<`BnDg^uuP;;ol6CBe@dqXalYj z13qbmbrk0T>1g|jj$$;h@6Fc@3h_==5W%hF@7_xMnsLsZY9VLO5O2yXv2)ue*CbZ! z>*lbBw`ngh^-^WkQ>lJqfJ-1^KMN0zyA^7_(kxKuKO%%Dtg+<5#uSwyf;$a%%68ZhyFZVb71{#8>KgH zV+zEw%YcI{WN`hrWKvk$ zm?hu!UXc+<{&uPj{L3|-`7#Euf2NoVPKu9w^kV_h+sE!Zl&G<=Rp(=V(4pNt;(KBr z?FO7^6kuH=66&a@R6@?G)|yChbwO3Nfzviz|P=m4BQn zgEttxpc_zn78)`tJ1dw`61uvI2yE)R(lx(#UT9qz1yK}PGxAQ$EdRE`^s$wY&GB@_ z?Ctf2S>vJcE2+k>*2^2@j)rT>_!6#u6p@RfJ&0`2;x0HW8LVT+`(4OZGd<<~ueg=& zPVi-Up)V?Cmz~WlM39s%*jh#eP5PJ82G~W2aAgH7^P@1wliaK2DfB+Ya$Ws zG)b!=IB0i(-BeCy-=0PpJ(DY?Sq!o0+ar=MESb`!{&Kfunhf3YYF#T#ha`3VkjMr5 zdRhM;_I#qJZ=+jZOUp$bK#x|UjDbd|MGcdF<8!Sb2~Dr_1u^mcpqip9!^RkEP=zC? zPqOOfY0wfI)(_k{q=`=owG(4qr}OLwaNC_ILJ1ZN^j#48QI8aZ!7^uriodWIdFcID zZGC!5q@bQx{?6C$_v+ZWs!rf(4$+1=CpF4l$aOH?y$A$A?!Wd#+jsfGP4}PUPwdUm{2bK z*PVAUnQuo6x=oL@h!sDMN;@iUV*n6KZPitEyo^f7zX}eD&!2%#r)TRF}l>OG!SzmylU-EnmaDvANqq1oz#T=Inw#&DEfExzwt&Yt~ul6 zkK3!ymtJV>LSFp}93IP8qdh(xW7#v^U8YKW!uG4$;w_i-e*|t1W-l^gWu3^O`3t$C zoNHWBM8!xY(l;hWcK5)uz&T#q_h;{}5inl_IqX=ieU3#e&6#n2Ic-&N&ujopL51G|c z+cam1oA%TD@bs(rVT~uIUdrrp`J*zyWeihZq5l%??x~eWv2f zc|p9_gmqXH)04?hx|nv-d^OJCO~$YsK?I-8bt+Mjc>|U#{7!OSr?>ho zy0|{$Ovum)WDY$=w`=jH`3?Ra^?4NgV{S{{!|&C*^JgIF=D#r7_sTo}^Lp3+uY?6y z=$lJdn{m!Mh)`>wRdHfLol0su(5pMZL{k;#g+*$Pi_g^J_DilR9Zm#?dE$ybcJVw| z>rvW__x)SO!EQaqB~~z|pMILU1L$m6&Mr?Iji6YJ&$qjdx8E@%&xo}0sHJy!nCPyG zu+hht8z;Xjm+)e^F}j1-fv^A7e&rbdOW32?iK$?<<7^0+@5i9}+Ub!X*ve%wZhoCY zV5;kL;M50a7R@Txl_vo*B>AMn@X9Y)fvQ?$z4qBI1(_#JE{Jj{iWx4ydLxE0owZZ6 zse3my5KlR-MYz9jP6*)PjOT<~G_Dn3YNiv(vr=&aKiIi-#lg$(x&2#8lEi`9oD8&vL2A0eHvia{+OB{Wu|5nNdRwqzfg zHs|Gcr)E7?t3+iTuFaiGbI~_`xG}fW-C5(d@3u&{S#u{}w?LQIOA+q~h~2j*+fkrE z#p?E6kp-?E*|Bgq1CRms&+IazK=^Q^KNhU&{4tq43>~{xpD_Gvr#Lt9?(=_1Cu6tw z6|uyOKh@%LO5q@QoG8{9 z)o%A@*o3*|`KLGA<+lUqf?%-lwLdJqi+Qf&_}&hJcN));jSGQHd#3wlLg%@^b<(On zXc2tkz&2c{P2`a%rl^8=gxAHjR_wELOaj|fpZ_CxSvM(R<(%uNV;$RidW7;)MH7c=^yl; zZ0j*{Si7ZvqiTU3ALDpk@vI!zQn&M&G}Ae_t74elnqrivCy>Ty@eo$G%tGGmOGYkS zGxc>*#qtg4n_a7(Y#wl8wP=R1LLe+2>7LIMx4 zuYwm4g9uQ}`(NWVBDBy{`YK;XBsB!(4UVt3IZu3g)%DnY=eeK&c#K(y&>l zc+}q{5-I-Omg?so`c5voSmUvC9wu#4hO2|4PsNK-z8ArZH$5q32hDihnL&uc47z7E zi_BP{8CE?h&whU}+8Dmc*rZ7$5K!$t6BOa5*3(qY4lXiM?;R+*_D75Za3{PwHnkV% z3OkO03QG-V@+!)!F{hgl0_#XrXUKZ8+f)sNdC@E-Hz!J{b z985v)p^62vTde2OI3OAhRmc+*`4($M-TdoxKKSTu?BRx+;Cb`v+(GlI2-@n>`2-P^ z1$A>wHK)zAsKy0vjlS~x_LR|#Am8v^F#`7toyFGAUQm^OOBPYkL|lXmr+?9rY*@ah>X> zbxA%JA+LbNh4JsmwRFqoIU0c0$KLJ{&e*#WjPEet0SJFx_<$Aj-uzoB*1Ad=1n7jKg^kMT;()ltsMg59&u+Q~<`=ScTYRffP;*tI3vU#sd zfS<(t#8o*n#-&uKN1jAq2rSu=qLcL-F0J!&VVB>3Fot_ zxj4(tKUMxxMCfu>|3sN2C@W#xH1x7! zmkO68nT+)PhW!!m6)Htb#gJvf85aGB&VS&fN~R2_U)$^#lA`dq%nA0Wd^4lM7=x&4 z#yf{c$zOkXgJ()W#12RovT4BfqiAm)@TQ``Aw|}?%J|RD>^}1Y0y4%M$7#PQxew$h z6{8{Y58Kd>J?wX;Ob^0ueqgd20XXYYeK(ut*82iSP2y+LiVoVcerZJx%{~$ZR?Ic& z5D%kkTJ}kmsWsQg)w>=T87nshCjmhEE-x8b9kEa3!{+@CbW^T{V9V@R@2gU&XoI!- z<>GWLhkCZ=NA}wYro38-_LXLzKII8MB@Nzu)%|qm51nP_5m`x-Ys4e1UlEY0O?O(+ zQunJwdJf$W)|rqujfEQog!2COb;0_Nqgc|kGXA9ry`1fBmKR%|yyGyg&JRx1lAW@y zOfh)6pq9nzu3uJj#Vp#iHYgu23aIS1kc>8Og+To;rs1CoH;#Un#Bpr&S@+}br_-m* zZhPam<7=yL(%oXE-Y5z{jgqDNpn8SEZ!7J8yD4S}?B=q+^D5(VQj>FNW-<;+wwf|| zOt;tJbs=5x8-#lj(1Rp_D`D?87sDWZ^l3GpU|oIV!#0iZ`tWsWb4dfjdj6=Oepc^M z(mmnDEy{;q{9hpi0y@nCY&7N8Dh~TadMtvZs*NjRoPksy)ImQick)6lp=F)b${tRp zL~=S3tMA42J8nlUU8i*-z`-?yo#>{nMdYOa5`_x}ax3(F*LKS#Zd~S6qhh|HNx-xYHsD`F z2G@hA5YPS7yPKZotjo*#Q(7lFt7(~7(N?*i@m{WeU_I+BSF{vy7#S(Bnu_QB$^m7! zW6y?9p0UBx$NZ(*l_m-1slqgj2hreKB>ZLa>0O*=ClPhq7T`5gWRbgvQ;pmyJ zMM3JBsKLiBOxzc{X6m`6Z!1OJ72gD`#xB!fcYt%s8%KH8?{3mHSGi>Bpng9L^bs0y z`Uk0VCN&XQQOMFA{Lm<$gt9?m)uO5ZSOtHGhSQJ3W!6R*AXA>Lk|WM#PKRZ`eiZ|Z zYWH}5`TfZatZVePCAW|0#^;`ZzItRA?1F92^lIhyK5#d@BZq@rQ^EZ7aSZFOB+%jY zF(#ORAMy^YAM!QE|LNMYA-JC~$cjY(_}Z<|GnI9!!;x!c99Iv5J)*~=&O5`$rs#LQ zaqDQ1`%Rv#34``(K3Tj9(_YH!0nBn?5^H%tz&rGxQ zC+~-qCG>P^T>6)<<)NQ^8jDqHSov+;GQ=q&*Sj+O2uwq>(|&Io@>S#ldg}In4or~ zH#aR365?w9n(E_e8ES68bZ9{Y0sb)h)y2b?apd~W%9}QsB)`(smZd)+wCDew?VFci zEap{=A#A(<=DN)oAd^J%^bh>#7=0eYz_m07DjE^waYvp2Pc^T65|R)56Z>o_{I$ z!+Z_|y19H9*V}U}=5yA7z9}%k4oQsT>uD-LU$BXE)k*%Hk|q4EPq&ywNuYCzw4u9F z$;a6lV7GhrsaT-yqv+ba#@8aWVl>%bL!CZQC#?KSyLpAPEX9>ycmDI*%Jbm+aam}3 z_c&<8nJ#Zkky>BR%P!BtK~l6&<#kBBhfzJVH;Qp-s~f2<+gZj0?a|@)gZCzd6Agli07pi{<-+e%+wYe#T&WXFG;~;c?FJ@7Y?*+kT z@dLWa=Mu@U{a(M39}d0Z@d(DQbdPBCDmbTqMZy&hjD>nN_*!TTMQREKr=AMN1fpiI4)=!nt>yQchtvlS(b4Xg?!Vr+yfrFYr4}{(>b|S{{C=Ig_R^wU zk%7Ep;B{YV@L*G{SAKp4?V}JD_|PW`{U0umx3h{5A{l?2r4fw#8;qonkp9@1{SDEN7VGTdx2h@6bO<{BQ z<)&Wb_ygiWNy95{KJ!IA9&6U_rS(^fca+_|7+-i_Ptkl@l-||7h_a67;*1RxbBGY7 zC8tfQ3FaYH2(C$)Wm0l|g3$Z@$I(YbW_}#>X1=;10W(aUmZ{6y7wf&x*a4)C8G(zY)aB1bk(St6EEyeN@|$FG z-JDM5nU#}S*SS| z>*-p4Vmqv~y-)nWJ0Bp9DSwY!aHIavy2qV9 zJ7PVgxuhd4Heqy-MI5m;q#31kU!afJ7+hn=w7Hd`SCpCGz>&4IrbwNDP*a5P4_AkK z+Jb?_Yj@f1#rMee!D0agvJd(h81?&%2U@>Wt%gvv*5;;T<(Dm#9g2cF0O5CJQb$;Q zJQ8H=T-PV3q!oO0VFq#T*1aSASLw<7kHYj#*qgU=EW zpD#yOtd8V>3x2({EIxGzIO*0{x5cJ!6GCC7X8#-PGC6PJI#bxcWqpKB-5!$Gj51m> zMl;ql4O8~4HyTfjv&R*rzY<=iWAvZmL*}5q0^}4NLf{Z0h}MTe!_TbC4nsIP=QT=q zNW|~G1qH0mALW0J0j1(`(I?VN4uh38rGTTnC z*GXU<8jHEm1T1m;O}+WhL*U2YFFm%pZF~_DF)hoY_jOQg{>6W7)fs|n}{)k+U`DCVAbz$Cq^ zz9&i!WjF(b)mrYI{*EAqI@^_`9|?bN$_VQXD?Id-rr11^j`~)UK1HHhn%qihPvt)7 zVue5c{l^nL?tI)|(-8iIZZT`=+_LiHIb;M3+7D$hMW>(X6OaslO<%KaOUjGGdZ2bG zOpbGp+iQ(4@7Ij!6-^xyL{d!6+JAL3UQuKUaVml7V2dU(ot{Oc1lo$7mwyYQlxu+z z$mk1{z_c8{uCycnDl_gQw{CSwNKF+!A;rov%FUdFRkHlQtj0pQqW|$0pPV^hU~lgnu1-;sW1YzL)p~ve+RUQT-_M=B4E%J( zepTl8WkC1FN3`)8_AMS3@2d~65bPHk4POoVIgxvu*;;+P;sZsQytS0CmH7T%+$o~3 z2YcCb{Q`#r;#8@Q8)Rr*BJ5O4JAAPG{S63}0{q)4=%@kK=Csj4!BF$Y{lQ?6S(J{kO1C^eY~Cul zmhSf#3jCkE)izu|QfP5mGV4J1$=yOgk(*Cci)I-;md?+YnN%BG$~fZ;0{!VDCZJ3^ zluZmk*?}xh9*r7FPZj;_UZVIjwa1KJA4-=xSwft|^p`Va=Wb30DnS9NY^BX$wuLOR zmo;9-*tTk`HI>MGW0^CY-iDV!n+2H{HjbU&r(ddWBj}uk8&k}b(nk(NyN;MKA@QQR zLFIO|FC;%yXROCA?D zIvyC%+=nc4@+Pb1kAOU)NjK+f$EQpi#Rn9^-Z`t-WK5VMuyUueWY}KJBX^T_&Kduc zJ7?70Fan^$>XV%Ky5gRWiWMq0$M=3}C!ODuc5=*w4U)&5iZM0F6O~)#wj)Nen;LkP zWt^R~Pn@bxDDmUK+un`NFdu=N{c@_{^tI^+9sB9BHQ}=K5iyo8{Bs34|6$eW2ng1w zPPXJ$YZgK;YsPcl(f7l}h<$QYH*Rdg=*&Dde1@i?I?s7^8oIz&o}k|UDNtN)^vW5X zGbE3jui9|v+Spj`)Um#-tf^z)tmJ@8&=Q~Zv62(RGhmQ7_9dU5ED>_Vmh zA#k@XtS8{`O}P$oGHQ*%m+Mi9wiIXZQ~kwFuigb1s8wPVx)Ox~_aaWdC{(!n{)Z^DuW?)bTKX80TL_o^?L8{X0`ccC@Vkm$_NazCWpY2`@6~0LESTX6AfgdQu4s~r-`U`4n{-A*OT}~=G3QK~HTNNH;uPd<5XqfO$QY20NbYFP{6HTRjDUXc=7t@q zx_I|kDb3G%HK@RaLD|22mHOph8{nLnXM$VmFw8B8x`EX+XykubR^ZS!Gu{`3+|d|Q zA17yt%gyweZ|S;c7ozXxKDieChSOcibaNNfG8p0VQh7c7w)L%q`?bdMhg!z67C4KplWR54rofvRq zr8XC&UF}FgRQGK$xjxZj=;gpzcwk<;%+f#5$cBR^1sXJvtp<{Bf z+FOG_#Z$NB>NN=9sx}i_g&Cx~^QtA!QMWmJzobECuF*54n$AT0eO38l%+6jZDh(?) zQ0v(IG$bv5Nh0(wDRx=Q!eLzcnUSI)UB+Lb>Mv>cypOY=%}BEvy(^edkK6b~@LVM` z@kqy3^wjX~J)j-OX0#d$_NNio(nWvybwFH4MwvmaD6xa^V7 zxBcmlxRBMyiLyP1j5&qHerD=Q^6T!ig{U{wriT!v_y#*j>HekH zp43aH4_loj#A#i`a2Ete^#XR4Zc8V5%XE4U>N&}?K^%ILd*y;)v+7ZOE$q~E@{ zDuenwk4*Vsg~zd20pPSplIzbjhlgLSIsS4(zN3XqPQ7?!*E>ePn*0L#bN=v7i5ht+ zmgrp>OEdIOzIyBwWAE+NWZzlSDId|nnaG*HK8>g8{;S{d{I`Z?T|jY#YGB1@L$e#U zE6Kga+5MpyA&V;tZ`^ zf1vT$0110Muiw{5?Rq||To0bf+D&npuH~DD^RO64H@2KX8VX|k<=p?U{DAv}g7}=| z_O39FZyDq5xHI`JegqWnKIrVu*HO1Z9kgY?58L&X^^%izsUtuAlNZy2_xZ$OHgFE# zGpsUvjq{knzWjBqKg;LVqwMg;^SbwG_+%3<8@#BmT9d^H^LC+`-m8x6FhI8H2NCn| zNIJ_GECfyh7{}CfuYO8ghBJVnD3E=OWls{X2g{%D0Mg8o68@q^mf_&d13t65VG9yG z63;Hed=~CpcP^Rox;_l_$iuO>y{ozP&)6&aQ%$32Z$=6N%JN=yEDs|PAi(rT&Pu!HX%}&VbyjKjEM>EYlWr9b!wnm5e*yOL6_L zn;6|~LN^6|-991Yr+qIm+GtPv@4-KUqexbm`P8JxP5{d{oRgscI}-5Y|8pduJeYM` zA|mLSzkQj#o+5?vClNu$?>L-^0S}gZw?pVKiZV#?`peJE@JT|U`JJ|(s~x+0U}{jo zKShgeLHvXE98JW1?gwRl=FV{N`}|<>b=B^7*jF`Zg@wq@Yk1vK#fc>HeGE8Y=a{;kg2zZMqV&B&n6Rnz%<#dxjT zo0pWT;^=|pN>4rw0Lz z(^2Ls=vg_!rixb+2EyMwcqT#c`1F^+M4mJ`RbU`Ws!qd|(aaA5yK33%u(sROt8uGg z(i>-x{%#3+^+x2(%)e&ifO0DFr=JJWD+&K^8ygY(bg)b~-N}(@{;-ly$C2VeWxCVg zIxW@}=5WvuDwZQ`oGYmHSpD-q+b1T(KJ2Z|E|(R?Rk{fhU0QttLLZC z63}+a*3&C8tdIp3W_8xVa{cc48W*SH*>}C>tG)xn`u=pEdT7(P1DB4rzRGbMKq<$N z%CIa%akxxLJ5n~TAH8cM)hGr1C@Xt}1i@TSyd4pqgXM!PL}>k@fkvczC4s=>%h-(% z<7|?0U&;SHmN2>hi4lRXltpPbAxYC@CJcdmz%j0VZq6Se_?Rm5s+shCepL;v8P;h$ z03uwKKm{ZI{xoz1CX3a1)lzfZ1Aob1#3lC|GA8gX17brz&*9EDi{0EiM6z0wp&*C) zc8byeu!05N)cy4wy4E&)>?~oJa>`$9J?N@;`}v%&<31H=eE!2q1T{d0UV~VI#E_G> z3a+mtjAWLG7u)RfKf$@_IK-gZWa=RI%x;;rj(Zt0vaC6;HZ0p;@EW~T6$7S08u5r} z{ZVkeCWe+9<$K?X0hb4{b|dsEw;_~=uqoUDhZ z$>0r!ZvV2@e}_lgCyCY4WGx&U3$T6-x)wuh#elcljUlwIhY{s*7@TO-$-; z%1KiZpk~o;C@lhBny~%vEq6d!h>Y*vJNT{k-6E}s4mWqK?eoF<(v&&kBcNpD8chH> z7kpPkYNO=t%P@F5l(uDDCA~~Yn)d0IDkXdis#fItSEp)E54#I`5**ip@Q|;!HHZI) z%WL+jnSamLtMc4=l0xuO^yo(}-MbG{swQ08sU80=qI8+eQ8(AVX&Vu z*hyt%Jzgj^sP=@2)pM~)`^PW)h9jkXQ%!ysUsT)dn(+ii8mWnS3eXu#w$|j?n}*AniG%BvuAz zxqHBi4EX~_ysP{EAJ!xAb`~ojm9X4m!~{=!6;NSx7dGMMNYYqGu6ddyr*O{J*a;z- zk`foXypD@ZY;#@*R)n2g^F$@y$(=oOu5%U(DC*c6UlzN&ACwkc4o_Up7=56Jpxu9A zG|)wLN8+0VNcF`!YwH>_d3SfWw_%RNDT56D(d6sLvo5wF(kwFi4}<_u^>_nOfT2uR zXYJ!2SOVCJZ#51s=1Of4HNO+*SZDogC4IJ5MnYPdF9jxcJGNR9*-c%qFXCtz3Cx5B z^iXa3JvFw=7eGG*pmX)$2I#jFr6@o)K8{3nC;j2H00!s?`pcvM<3FqW@`L~{Xt~j4 zPv8T74Zv_`H6hk}S?A?Q&__eQW}4|4tH3epqHx(4WZcQ-`qOH)vu=eJHJ6Iozt8s~ zTcsShl^y;XfbsBObsXE1t)BTaBTa+#1pCMK_80QL10!?F2TqI}TDw?%M>7^o2QXt@ zcF_Xf@g8(vFi%@A=DqM@W)_-cRNwx}=vIK4uco2^xqZ0s!&rcC{~49zlC);TX^V0C z%;km+%30%7DdUMw!gmOae_&27$9fc9X=ij2V|GA`^vcJh z*V|7%h=5X~p8?NP0}Y4Ot;M2>kk1>oS!oAr{EYj|=wk*4FV-~lcB1Qw<$_@(I718m-5v()nAbyc(>KGcM}iwfQBy zCyENH%4%8*Qmp9xY0+pmvYhHrFe;;`{qNfcmhfuRptiS4cww`pY716vL*vmMr0Fr^rQbGO(wglyxemn~&IQRu{Zx=WeGPgrU-=5-VHd#(8z`XU+Pqh4V* zhq%2%@qq!AQ^)-+LSO|!SrO{4_>+Ki71egf6r|9S{$jAIr!_6$J!_|$?DDG0VNZO3 z>mUd%8H;*^j=E2F-6>cB!eNwAX_y(49!M1Xyw>8@gMr2ef{wQEqExJ+b>VFuZ{C^M z1%|mIp67SW&hx2sP)?S#B%}i;1yhpj(aZxYxc>uWI}Vr`CmYHEMTF3yt9}md#A|99 z6ERb2PYYg-m37*z)+b8SE&01V+LwaU?{p-tIikMb$3bk&qm66_Hr}iIDld5RuqU2? ztn9sxz(O&_Y8>LbkHc_7-(GPrEtKswE19&~O3?QPMe^Uwe{b7;I-EG$^6ul4Erw#8 z-_}xi|LiA_KhrHjWe=6Clm1A6O5X_Z%*s2ZU<6w?cnz-+88 zFRvdN6Wu~dQjZiTm6=Q&m2}ra^2G0 z>6#V_RcI}0M+^zSN`LN@KT>6{CD!@5^)$q!#Zlf}q}GIbvD3@y!+0E%|`ny{isJd)sZWMXiZKHyDsYqi@kM6OPYH#sRO~|>L@!p_-t&w zpkRzwrJO2u9LtbRj(APc22W&`srzO1U7qj;-157$cdhb}ucKA3F+PMPlyZc7UuAImI#8Gk|tM-QTTiOK86gY z1WZ4cWrXb&mwS3v6=VPVmKRvGF|b1WesqJxRUx1;6suxC^v|B=Y^W5vTJWbETIu!? z-%U>4!SR}A`^krd^`#2}llJ_mqR=~Y!TA?IWB$rw{fv3>|9sUQaqK)&WnRqlQPSz8 zx^Uq$*3_t zm;BghaDwRvUH>juJh!Bj80^wjxnb5-F6ndGukR?WQl}Ya8T4)kHkFKCU^e8?wq-er3V0KSDa%o0{)Lg(oI)U#yT9$p{3(OTFcr zkL4dvpvHU#7WzLHpXQ>VR~1F``)Z;3GAz7tbny)YFY!!bvbeDOIdU(C&1E9TD9x^i z=J=Ci-r?qdMOB9`t&SP{vHAK+Dn_f?$c2(#xfiPC=vop;-BexS0Rs~|iFkemDEs;b z1OWUt-@pDeQ@aY)NnxZ?6)1(JXrUjE#nlGmU)LJWr_7I&>o040w2t<%HYyJSnM`wV zpS*1n#u5EqW&F7oJSRv-r z7jfGt939J6`gaVkNZ14UDh1$Sy4eP`3TV!?r{2by<4X6J@c zB7XWO4PUcmg>B~b~QIDX)~nnD+$bC4rM9p zV9CjK^*Bytf408i5N%1o)pfh*ydTs2!nI`1X33dk=-G$XBe&9NmaLB+A|`-&K(DYL z>)SB%HzEz0qee2F}G_1qiTQd_8Xp z#l~fHC2N#v|C|P|c!F`cS^e&GjT4_Pzb!4dF)dDU4+AU+ynt>=r!Fpv+-{YmBf8Aj zU+}N6dUNVIricnlD1pQyU;MtYS0w1eqOH2%@a<-7IbG6^#x8>|o{5>XiF+fSeQcIZ z57Whui@NqWk7zecf_8RRx#&G9|M0`Pd-E4|O`;xm3W;t@f zSD5oy4&Bpng_E1Z`cbtT>Lo}qNPCBs%5P*P!vGDH&5a+IFCAcy#+T}Q z7D4`il&a%FLw3w*4)VEYWfZmr69Oh03=P*6D-TkQO1rhYGEqV=CX8Jc*^t)_;RJP= zB|!1`4TG~JCZ4EvU)oIvOZ>Cc2>mj8*jPS}&fb-i3R#ghE&s-y+7Ef!EmEQJ8$2u8 zOP`&5^7xrm6-VHm3poBX`z|(MWPGCiN06VWC^Lc$L37L^yuISmxa_(;bfSPAQM}r$c)+0=tdVU?NyS zd;yJ|sKaeuTkM0lU(A_7qpsiPp55_2c|DFGZ6qk6n}GNh5(_ic){NcH zzM}ntyc`$aClxt}LDYEeu!ce7ERY|Jb}L`f3{V@Z*j?g1?oFM5E`rrthBYH4ajSFLJ?SWvZJP`0~ka(_G}codenR3if@-K@9t`o z|3yRT`lAXPyv`^{kXY#K3y$64V+)Olm?p+Lx_`;%&UF|{4%OKZCKI%F|EA1BH>gT1 zZmirdVfH?9^2c$xQ)PXT7U}B;@0(9|st+3wgkb^tIb<}pF5FD&zOLJ@&B%-0nWyfm zq0-pY@V91$v_EXV>N7F{pY5FQ`p94r-Ws1THb#wZ0D3oWzwvkIDx_z>Ia!d@_V1F# zOA_YYd9jW1$ydKmwU!bp2yFL@tP-xeKNr3jUsZpepbZnmFfjwC)dG?2zaeeE(U=1DTH9m!qqL3WUtH3g|nYdD%NFisT>q9XT4r$ zC1>;F!&!6z!do9h6{VNHsBR0Ofy8C}1VTiz&tctlCMO-Rp7@|JBo3T*$QAuUbJ(2m ze?onRYPJQjqY93E@0Rw2O+Gt#tYwKRhpnA16A$O-t4V*_;b5yBa{%O^G4Wd)X5h3u zhednU&!ue2l_0)joh?=e$s&}8vYLc77ym-2TJH-0wf&m1HrjmK*y?4G*NM3CHwv|9zH7VANslx+A#_-zjz@`6 z0E54TAuk^y?o1qZU4@Q>fEER7{%|dQcij)i%?l$En2-K~MM28&R&u{5#P1*YNejW3 zrw&Pfn24$0Nx>75bvlT;elpsvmwKxjX`Vc8xb{?B%ZWdCV|uMEt?AkT7HCDg&&V9` zelhH&_G=o_TiPT9>@>>{d%0WM?AhC!4NY+?NJ&TkG4&Hfw(GrSEQ45$$pn zAb#BTbo=KEtQU0uu&~HJ^C6mG+{Z0Qj=^VhBMc1x8ca{@PFrlqPxrYAuAx@55DSP6 z^ogI(==Nf?+wI?lq4=_)cZ>h1jsMbd_^7~{yB22CHp`!L$$gnQ^6<-05_qbjDnm*p z7O1f#BSbes@gxe-fW%bigL6iGbH+_Sq%&}j-js5LS&SCYIjb=@*M zD5&cE@z^M%9Zq{xfA$w&;`*cM_0t2s@EDL>nh#l&^i>~!`MQD0XSe!8Aqw!Ll{(3& zVc%uJ5c{&Ri776t+SL*2j=r_L(u|w z7%C!^8`|Oy+pieqh)^D7C36Hn#W?QB%0cy}yQM0*c2|J_0m=4u$}!S^@Rx`Z8(~<& zX%rq6*ugwV=ml(l79m12=Fxner3Bh`$25AYnc@xYbCx%Fi4M2isJFmPtlF0N0gaU z7d#ycE^%PsWMNIe-TQlrj2@pb~4$Y;Ep*$Vg(m^xdfeeo} z*&D_MV=+KYxJo;sf#o(!CcrVuqT_xqVro9Zy6QOm@UrV20@b+s#yBm-rZv*AME<(? zbr`G*KCS;wCq>2~?dN_G5LVZC%zxGo9>lB(1+alNWsrL(; z5KjqC_oq<%W_i4WzkH+o%mCrxcnJ9(pb=4gl(K?0*ULVHV*gC>#txMUb?=8WAusFj z@7usmBp{R*ntz8i!RUThWYeCe*Cofo8$iOOGKURjN907Ek1?F4XZ)QRAo zeh>)xA66XL4)6^bt&z*CTkS7hHyNP$Xq}+S^+x%L=#Yi7#j%67;)sa5hwZwnClknT zANlLtk(@{7@+5nzxdmzdy+22(^_$&ATy!${lATYvzksaU7|u#L3j6Imgkv@C>n}p~ ze3gpcKd%$8ijYE;wS0d4wiziH=lvZc3yUWVyc>fo7_TXJtZf~f`cWT{hl~_7f0?O< zAij=BV7aaSz)I|cP*3>*qH%Qu80DG|#>YsY--wL^>D=7W0xb>BTsO?7R_9DVZ43G5 za4*avVP|N5<-QXI6-snYpV3rmfEu4XZi6XXKP)0V3$Koip>nReHM*B3SBP|d(N?75 z;kS7+b&QK^RO5KT&2=|G5~eOm)dW37x53U&sxcCaMJiJ)R^=+%pffD_hnBMdKqWYc z0xh_tOdoZw8=7?26#n@WQOP~N?j{?CaV$auFO$bK_gTI44`bK=VYQqV!2QGuNEA4X z4ia5b-mONW;0&uHoQj|S_T%x55S$o>+`N{|;H8>#*XmLpF&bVE5NVd+)zXy|lI({T zF<0f!3yMvC_|X>krX1b0+WQ*a1$=-0eT|$%5YTmY1Kwa@_3)MSedTG|!SqQ-{&bDM z{@*Dxm>%`_O}RY|)IT1-b9;b7n!%w?-fDu;n=CUjroL72JQ$LS!%FJQHb!|0lR4~BaLf@oz}~*{42DA-yH5CMX|?UDuyu=SvHj|1ugQ27t7-4DfVm(_YYN# zIQZ~lk22|AydzRJ4BD00SI^K9W~ySk{uLNi^R7+6;7MY_WyenwtKf0CR-Ouxm+5lx{!ykn!2Q@{HDSfE5BT@2#!bU<)k30rL;2$DTgP8SNdr_ z2>jEKdFogR)Xn=Nt%dYWmqF>ZlSv;9^bOR)R3Oor zq3i;So5`A|jDM1uR!4P5F9Q_s#o#H=?zUCqajt=y5?^!EWc#d_mQYcVL$Q&WKk)0H zkFBP|bR{;ax&Z}ggxHjVuP@IHe+d>#m%5#?$-1=D%{N*3LZzR(xukqIzI6wGpJy@h zbF(a92K5EFi~fC;LuQyTe)ZqAz=KEWZq|sDqzF8iO4Mbee@< zT2=fHO!}||FTc1aT-h%c*ps2B1t(5Cj(ZQ*!6gff!>p(%&D)jh%2lQ0!7tNw2V)jt)!3pccI!%F> zrH~q0_x>CbNdx7)&D;IZ-qJ$xTVz>6-fS50_QJJ)BVck4WRDP=z}j|iK0BK`wL;dh zp+)RPucarjW2z2Ht;f!i6aSiet$E63x@eX;q$m5O>=}lBK7WdR0Fa$epS8O_U3U;s zszPNDQ;4nN{lUX>lh#rwiEjBG50}YlEDn#hb;J zqfhzyDCF_6x$$P}a|MfpV{)A)AWvDiLWHVBXgF%FQ^V=!BVTojk)DcT8t*ci_-Uf?xst1m8K$yp3=yxPTILv~?7wgsrQ~E2H zH|=LTU;4Ut82fDqMRWLXGLJS^UR4fT_!q8j0ECsE-ui9EjxC_)S-l0X20qZJphG(q zYf6NT4+CUq?Cm*JLmNlg*&_xE4?Q5_B8Io6TQNcI6_eh81*DRVl26XZcAs_kyux#j zKp&{P;q@kW%U$sN(&{~`tA_qdV3(}itg7iAXZrZbTJC=Kp$tD_98McAnkk48LEO|V zp3vH&HfD#Atfo~dgHo5j>mr91M)dO`whFXLKbN=n5icp25O|-7?`-2e}i4n~{a;NJjdA^(w@I~lWTZd0Ia8`iMU(ItQNQCv9*xGJX zf54NDoemtQi_qY#EpHp_#Ztz@7wkXhdZp9BfbT;i8mZwPewjC`OO#n1V@ zojOLn286csNS!Afi?i|Wj46eenl14M)`ojQ5V~b4uJ){qBycC*fr=w@l`0GTYVbzC6F?_`x^_Ej zt6BNjdB+$^H4fufFhp1n5M>5wmm8^Z_0(nVznVf%I8`r?e|}{V?rBlpA)mNx0_y*u@RI8i*a2LQOBc&ax*xyZ`WTB%$Cxf z*R>xSbnCt-rGFhzAQSWgsUKE@c>`*d0XgsJ_`^U}y%a__k>;K}yvDpo=S-is5%PPG zcMp=_eqfT&q7MH78UQ)o+6FIQ=pvuQ`WCikl>mlfon@J=*{|usIcHQ!qVuxlhD*k& z$JkN^&jlYSPR!r`P-oas0P1{3CF}>?oJzk2K)QY!G@825U;sa#sADRYGDG_6Ifp0% ziQ^Zot34bKgn|f({w;iOC;>XQ&y2P}Wll!EOygN=XF5%ar>kJPi%MinMG)N8 zJhjZj(SL_R?e{s?q?GBE4B@r5h&cN8Zb8+>Ch6Q0t?RdF75gifH3vN0RMe5Oe2_=H?wPggeKDsZ*tC%@iJF#Yjp zm%QI2Jn)wqFa30xgr`sBF;?n zof)rco}@w7?(%G8wf1(r`YyO^`mUvZWe9{nH-#rd#R>?6lc*?(L$NG2E4Cc6bL578 zSV?Z{*d_1%5!f{om@k~}1_kdB{aA1HnH18-7%RD(N13-a1BY3NNXT^O7T~M>4>8h4 zi5vdf4nf1Eiz9g!Ds{F9aliy*f2-L(QC9sMKUu||XcB`q9|AR+$H=(WtqVp5@dXBR z{ONlse$wLqz|G_Ikk@fr|7&$=z&vtQ91NpDD3}V1 zQ#hOCN^~gRc%Dpp<^}B!u~48{cc3(fLd$-dgG&Lqe+M$F3+-QN*5XkghOpkJwg8;M zV4ypa&v2&u^-JK_cA+HHDx``-O)7A53@m( z_N4~L1}BB&N}*u`2);ci&cXF-t05*AR&nVIvkMrfpEJ8XUFsJ1YFk;hjV@PdLcZEq z5f=9cJ*Cphn-o#!DTmzzpC_E&X9gLz*CmUX<2{s9{IOM9+fDfQ<||bRzQjMjpcQo1 zE4kYGx{MDu#jCGSP7C(7EsQxV3m2}#1xye9=><={w@88lfm5nP0d_R`_Qn9st4=$a z_%_)C%JTQ((b>ytHFl8NFy91qM_ zzDH^-$t9yrB`_5F!!+WHGyv(}c6?NGB*b$kUU3^)6TdMrm1)n+`uXM16J8|(DD%;@ z3&{GO2-N~GU>FWabHND?@Yl{)JqeFVSO{EKrUif(RO5eGZBLrEkLrlfRiiZ7Jqr_p1dC@ipxNTMvI(BIzwi$k zT|87dXXEMKI;eU1&JO8+qw#u~oz~-Z9DKBMhJLv;QWtHG_!OuamXF=u5CLt5I<>3idDvSw+g}xq8x2 z%{Y^7TOsZPH2@L<=&&^~TgHB$e{~jaa85l&K;tgC4`TLujsfXs%soFZB=(}q{8L@EX7^C4a3@D+=-GBctFa&B z2YJBHLoE;biJ-z-J2H9hH;YT0J{?SWNSxP+FM+lJT<_XL0)FglQ@0rHKny`7wLP zrd>gxbm|9A1IH5&WHXrj@K!GZH>KiXCPLRRs3My2yAES4T#|`6q2<6Fq0fru(j0-V z2BN&t+IO!X{+PX*ZU*e8UiS!Z9t7O)CXITxim8X1RVZ|xAZ}S4- zsR^FwtoH2nrp7Nl&@NTO8%Ac*-#sI&)l|Yo-u(6B+qoW936iZg4w+_=nJr6U)r2>JbaW-229U1v{dcs)*(JK>|RhVxC=enHD+mHXZ) z$YR?SE#V7v7(FND@&92tktKF!#JW~zIQW74XL5*?_g}N<@$-=m#kU;Faop#EELgGD z?Vv!d+%>=;mkQ&v4Sb%cVJ^p|q#6em8t)DrsOgE8VR273LSh0Dz9X^>f^-;4qz=PF zYz1wgx*3pB99;W*nUgdwj%>DD0yTjyfI*_R9$$TL0n@LHRUOW*+3WdyY~7hPfifwo z5r_J8c@KMyt+e{_y!RHf{=e&$x?AYZ-FWMNqzefqo=AP+YJAPFIo@plo}B}Cgn#$N zKbS&Tg0Ql~TnFMwQ<-^7^^Vk|xM<7ZKU?pSXDbPIiGw=X@b@uOhF5_HW~-v673zZt z>tIq3S;vKwFP{}SYh~T`Iyg^HT^6!RZDIVDr=OVfvqVe0&*77D7yT?8aY}HF$)yKSUD=q~_k25l{@4D`oH6Fm9dq(MQPaY(xf$1!#yvSJOb970NmTlJrr@*w15 zrD^JsI=G43S??JtHt{>P-ftPJh>WcGKj>gbKl`S*s>DmyRON=h*DBC0=5IF|P{~sD z+@Tsp`)YJAIB(>2@-UXIiM_KYZc-GEN0JK5!mwXP|IYN8bQrG&)+%3P=fh&!_ZZ5s z>4dAWD*KG3MyGZUp*2yjXH_ir6=)BtF4yNyzVv21w@OJe19jY-aJo8$dc=L4?O4~c zf4@zYgb{b7Q@>k-2FSR*n7;jEFZTDUz6&)PVHe(u~qO-3i1 zPb_#^1~4y^wVdC-jd@Y4{r@?-KT~`8Ai|Cy0n>`z*P1UUz6>+gI`qqeAbEoR!+INE zA{05Y+W1-fw~=#8@BD9WWF_J-bBub91j>w2bo?GujuV3c9zsMMhUQ!Awx5Ayzo6ge33>a(VxIbwuQY`4%4&&MuwK2!)7z$~%SJTb+ zvS>FeV=O_QHIsUc4a@PbD_RmX2n8L_z#XBSjcel3?zvc0_nj}Au5KXg4i3GB98Mr) z@{Kk^;X`CMeU%Yk0e?47fVS-DkL`z+T?n3@>eao`;{0FI?7cU5Z|FYnBSCoqiO2AY zv6l>yfTVClly7-P^{`A_@&TOZX5LsrBm93jJBz3`1GU}aR{(OZMHpZM zSBI6{|Cq6OseDBr-;IC>sEFgSz9FD6K88%we7N_Cjo_L($PhB-_`vNVvfD}LWNYib z&~7vG>d`b$sy!yeuUEw_WWb(+-Z3Pxw7AuzexC3o9l!H$(?oV^2@G87^& zoN}(;A6RkHUUD<@k@Pi>$09gd*PPxm%xgIW7KTI0pJS8bjApnRcrI8#rY5n!Yt&xi z?zU*)OuGVRL|w$E>g2Hk?^gpc7MV4iz9c9)i!nHNv!#hLDllV6{tc+t>=-}&VJs- zN1G9wp59IXbi+L6J{}`G_WImWJ_9!;@DP9T3b)&yc{h987((h&zo~3x0mpe%6$s>( z(pnYdIBq0`6abxjnc_bi>p({(zjoD=&TLDFLKS479hxs02v3m(azVJZbmGxnRs4CT z_!rKm_pbAHlfYA{_l;3Pkxbz7#qe@?kAx~|`3G|>^ho7Xo!yiW$f1-wqB}_o2nq_5 zuG5b>ob^x<-$3*wCj4qm3+H;fYZK{Bmx;pYCc2-62q;mykzTRk!+Z4S;V?-5o_^mT zDqwEk4R11Z5^Yxc?U!{z(ljQH2qdT+s1i}1X?Ahg=SaYeb8#*`u?CAXU5_XTuP^8is9~Fp z62|o`i-mg3OdO&~Z>F%2-2c5MZy5b)_mFagcAuYdWknbYL>c77g~Wn%k6(%4*d@w4 zo{}FTRb!VaUJy5f^HnjwFD?>bJvhT`l86)2d+E@vdgsBbIB(dAG~P3Vc1r>`2dobt|7y^WR}d+OBtW2XK$t zdtOl0-m-!FtCwEY{y>-nQtbsrb@{8vfKe~ypoX9wnjqNLMXc7UcLm+zrd@<`A%HI8+G8f1e^4Zx)PsXlA<8eCYd>DwHD zpvU}Yg*doMPILX*4D*=_;z{{E)y6YUjS}h1baZDr08^Sz-G2{R^~;a3!fELl^z?c#{O}hE`&e9`2grwDCO2^w zCG=?QyY^xh>6oOa7qE7c*!@jJw>SkAN3f5Dk#1bOM)pRuw=RLd%D%jx?Q)d;43UkQ) z7{JRiLjM)tzH3~d81x-(Bm?vAcaB+Aj~9s3oqJMU-03t*$;4|>qy+nA#U3pQ-aT9} zK6yPWKxS_dpo&!zvZ6JVf1k;EPIxYfa3!bve&ohKWzOmy*}@RaB&?_-;=&AEp)`GjjmS+I}XC@Vmi&C z`}-GiRdZNd$L+vr-Rd2^&WqmB$cCLXI>f)($<$+pWi2%OrX2&(U-`C%an5OB{YU(GZ-?xJz!5OipCRv#U3`3ueeGfa2`XGEKt9%9W zV^7jP2G^>N80Qvx2u;{4;pnBun zR6}ymTfZA>Oz_<|7%1d|`i`}ILB^#6{#-qyFre&a(m*V6X|73vYlbugQ5dJeV zOybuU)|{)a{ zFJThiB2Cb=XOf%GO;*O7QXl@d&2_`hmYK|+eU@%0i$NPfO~OC6fx7Uu$__WeNxJ;n z^&|SbML;D1{5}1JXgM)m$?hcImG|b8LL}#!_tJwgB!;jppUfb2_)eu1vX zYzM8j_tJ^{8n6VaItqOM!>Ka~SNIJ7-r#0X9@i zmf*@hG0txA%d(w;Z88Z5;mGiIH4Ez^ed+ABG_K;ztaDAua$j5R%7NQGiJtH(I6D^^(vI{49gd_@ew>O5IhD!2e`3220NWy} zNxvgpOyRU9tf%venIWeAAaCk4{PW)ml-C>TM1X(py)z{ ztNREXz-++HcB@h{tfnl#{odVO08Dw|9nh)n8jr@HzsRKhNNd_1sn*@@ZHH&SnYCGm)|d`|G6Y9sIq3RH`~9-h^Zj zp~QX|G`CfTXpMCHS20GJQ)BIGQ72I#CCnpgwZCTcRY0=27BVJIOw3MI(uLW#x+5bO zx?z`;^hN0Rv8ls*>e(R@+T+AmdWY$rRqFO@8D71|?3K-R#!Ke1?m2pxf5eE!gEFLHZ}=Jje1hI*4a zO4TIS#6g+g_+aW;-0VkZb-Ci?nvuwHAJ-s$eeIf2tYx40fLK#;>1I4V-W#9N=s=A z1M5#du3OiFWF>on!0{WN$&_fK1i{5quw;b08P}OKO@R0Amyf->f`7v^--*+w$UKX^ zHjdga`Q6vBZm0~B>!(ZPrw+O-On&!gkg8sIWq?~xK5v-q#^NH6Mo*?Ot%*vHwW_+` zN5R>Oj3t(&S2GYi5QH6${tv}}g;j@Z%B^4_LVNC#wgw0L4@?UVQS{Eu=Kf096r`it z^rD@V+{Tsni0B4TJ#u#KcL3Xy*k{Rs*nrZ(@^xkPYMewMjILXU+GOGOi1?45r>I$d z$%Ita(m|kOSXRlTcVPTyp3F4C|M6+I+=l+Ie40(;thUxB}m6q;rK;&cJ0>vQ< zZ8_Y|u=#(l5xO0UNO~8K^MZC<7mhi*y9T>agbj(xJGz)7 z`b)8+*6Qm0k>-a$mscGQesyt&tPw?Hunfh`7MxqY1T((dV(TqDSE0UD#l);{)wF5@dkbU09=}H;A6C}M95|<(qQqrnwt+I`bhP}asL6) zPO1U7nuM~;HjZCeTFuT!Nx8o_hj;e?GPO=0#U&G#PB*p-i`hr zB)e|nWAcooN_`MPl4esIu_-pTCZWNfUtfEJHS&TLMTY?=?vA#xog?&kJ_PqZ@I9E< zfddGE?^qOMVu#J9XTS&Ou!)ho%@J`qr&sO74#;*+ zcJQ+k8haCgtQyDN)(%hqe;;uLE9lbBdX82xvr!Av-$uQ=<;;y%t|hy(GZRpE9{hB# z|3MhU2Rj#YAUigZ4?|^)@{i{o7nW6^I5V7bQ_;@x83xMH|3-bq;w^<2+G6jS6?>^a zdqitg&Uzf^8RZ%v`g9ruJU-{Y!Sa}A-KD$S=-2mDW+BhC&LodjjZIaw*_TxuB9omR ziA*7NjLhIQwHZQ-BQ!*kq!&@fZU62@MPS-e=Rr)M339)N9I}qZ;@Yleh*QT>vjx-3 z?;-W6&+Axa?W6UAb_+dt#H?&ybwVNBQ6|%Qp1&4N-zGO>( zn_d~;VcCiRy|Wkc?&5~!#Q#|_G6KH7Uj!f&f15aC?FR?HFf+uox#1{6+XOJTJsNN(8{|4D`N23>i4q|e_sFT#uy0A$D;)vMuv@<^6|~q5 zfu0$p>rx4dqT-kBG6Cq4kOMqfoe>Vn5!PncHsFWA+3gnf1HEFn39E z*js3_dHTJ+{w$I9EKZjV4b&H@Ui%D@;MuAAP>Fbw8D>0MR=W4DG#iD}?7QZaewDn; zaD3QcTI$g(0XYALf9{j6a~|xJpHQ)aUY@=&*(vB+F#jlDj!EG?q!5%$b;|UTCPf4n z)@km5m%&UQbTfRu*4vp9)!tB{<`5O;ej7a!IRW2YZIK}IBBb!4Wufkxb>rW;2X?v4 z1TrV4LC!nW|B89=+DG_xd>ft01;FCU5D&y}C6qoC0XS$F_x?(<5TJ_G*(y&zI7LWv z)6;WX)lF=VSkMR9@g@y-eazKKbiYB@q_Jp1VZcEeF7h^|fcv_;4XI@FLOVhg04JOQ zw8emp!e$}tUn~7MuIp15*^%eD&|J0I?~V!pOJ60~+8Q||e95+@`Bk5W#>Nq!MSt`m zV4oD3Iw#S`X0;Luy2VX7??7Sdb>b@k*Ti}iQw`*<)V#rqjZsDtIOQB*bYHO>e6bG& z0`4VcjlAMMOUVo2-}Txn-#`Aj`Q~8-(v4srQR)PbObfm=y`$M}y)f&S_p&HLzW$)2{AbMPSFhiB2{geA2RV`DWE18BnfBoN}f{L z&MeM5N-PJD(0Es{4t_*3&e_)y3vg46j$Yn_G;!VDUWX(M*&(OhQ}jHQKnoM6v7efl z&Wu!S(1JX|bUo2^5XVvMd$q}sVgcbAAoox}7L?yaFU^~JjXAw{&Ddl=&*U384$|;v zae$W{^8)vkuV!XTB<~<}zUrop09qO`48bxBCnnX31&_Qp!c8mlv}rY|K`8;V z2&QlI{n1ah)^{v=%*|zjcZBhtf50+}F2M0;?;W6>b5VSV^C?O7=pX?-c*0pYQ1NsqA1&|jYjR1y@j{uP#NBvJAe4n*?~RwxPPAD(>SXsm^P z{V2l=W)p$r{|mFbV78` z?8O(ymTGr!W1UWeKgu^Eqy8QKjP}}n`o^?Ka~OI5SvJooUz9wq%EGHI^ePI3S~a*3 z`6T-KJw8kS_$c<7gSGM7jwSnXi7hQbqpx)pG?Y5UxoP`a5t%odZs@Pu5B1Qypp{io zE1lPIz2S{@O!{o?$a{MQt7JQ(p(ogb%&YDLC0w1dm8j6zhLWksP#O(!=hvmcfL`g$ z=x<0*dYW5%p5awSp3~%w{EKfK$;p=ioU?IO3RO5?EIiH_?3~E(U^>J>O8Yu0 zs0kGd_>27mH|}NK9gv!f(>3Z!qj@qZ&L3P})*5w-0=72JR&??$36>)0wJRQ|vIY;l zY=1;Ygr$1aSK0?mg%-$`zBVa3np1Wy6r0q3DyYUjTPvw)^b6`YTQTqNqryeRkFOBH zpXiJIV_=B4cdP{xwA^<(s3h=;B0w>S#j3R9?{Z>Cz5rYRro^5_l?VKuzayx#B={ zX*W_Q9#@bNI<+qryx}@&+Gu6y#=g{t`eSIrW$#^?DG-%KX5{v^!mkqc)0a)8`m=rq z(3egY4zM#>R$Xqd^2rewp@@yeR}vhse-&y>)jFTzJ<)k~tZr!*XXbok5oY`&siA<= zXBq(Ety>t=TDZtxyuFb9_+>hk0bRm6+xI1=5J4ug1E%dlHjE<8`3AgDyMXC!FtZGS6QnT8ue9&x_Hp@FR8Do)H z2ZmPjJN_euvj5g0zsODX!%6ya%Czb}TCla=K68w9s3Nk7XCIikcCr7&O&K!&t`0I@ zdQ%FY*X#I}VSq#OYfT+7oll%MfN_n|`I;kQlh9gKel( znh2TalgHFQ0+H_qi@wj`?%h^Zyq6Fy{*$=(RdL_yU)m%m_TAAlx^8<{D4*#xgH5cq z>6E&RP~ljH$!2O=^lIaRiz8Bl8yO{iLe04Hi^vjJfJ*u48+Q^6MRgnA@4gZpOj!H(h*6hl58+F^O!$mA~ z;Tt<8(5*1Ux@W+^vi^xPZIcmFoO_}9yH8vN=cCqs=!!`gr_b$bn)cN2?0sECrrE8u zEr@F!GzsFJV}hr_-VSXIl9|%9q;4*(wr?0I@P9NU%$H7{FeFv_rZ6IN?7FjwNZf^X zy-o#TO6anM2dL)DY;R#LuPJ_qIA2vJSb8E=ezd!vYv_5ah*n;L*~Ibh1^(v=1e%wA z+pzqM*yp@?yC*wyA<{S_!TTBpM4J9ixvmxz6=iW|>h4)_+Vvr0UU!M7s3le0jNOo% zrhcCvNr{a)AuOX^R1#n0+a9)fZY_Ny!846MR9GKTzx118!O{jCwT6u9W@~;hHqH*r zpe+B`P^X^w6R}?RVc6U?40?3&-%~Ruc>j|p+*uWh-wAzCoN1tCG~~<&d$)EZd^I(- z&ia85-~anb=~PV(WZpLC;UCAT>T3NN+e<+ROUq}Q?#EGcr-j+(Xx>I43L(PlL;Qp?GuSN$Gf-oPy^Pefu$0C4`Fsa@^MQ9oQwRrN+v6w>R8qZ|D@{SD)`lL!R7%dPP8Z zpuR3?Xl@vYaKi_21+Tc|p>*jaNKb4c!!Nn7oou_%kER?fui5lVojLTA$cqL%;mPos z5pGpz0yO1=1%?-Xl%1OP^r=k>=?hjtsmoZt1b8JszHFq0>Qo|cE9vsGuV(d3;^4Wq+_ z7a~F>9yaoTq;H1!0xxh-E!|^-l$!x-e5V>&Tf9&7RYAQ9JONI4&F2SD ziy=C(UwrS>5y?qoCHp#l!V2bII3?MjTsq$YTM@6 zfgMX?NX~yD*_#X&)1QW|!qWyb+7ULz?#}MEtjmnU%bkOS=`w5P+<^t1%B-(tJ1pe> z^g#I1Zu2v-&5q~6xmZbz6yvkw!rfUIcTL6mICo6Rdi{IjzpBmn0fzd`ri0x;l$1i?pj=J#G+Ud{{)8l@B&b~XuNDEKoZ1X-7Cp(26wJNrw0*v?!D zn&vpMFP|RuZ3^MUN=*$0hq0ol-O9bXHVN^YMCV8m5=)A7@tx)3K+ARK$$ z#XB)CC+i=6475gW@h&cv$^qnh`|K5exM4SOkbZjZbEoj(tbEm^T3?45mDYp)8O;}ZQvZYLb4xfsDF zgbrLthe`0*l(fdaPn5sOR{N;PDd`^Vt-$+dM?Jz+7-mv%>eZ&y)Es{`33^o={u@9H z$LTDC8|~Ema9rIR=#qT$>=7XolMoMf_BD#{!P&ifw%eU_T)E?N+f}`2oh@W^Kkr1h zF*UA?LD-i)%aV-qEPSSi{J>e(&R8pem6l`y{koOHB_cvMEE_abxPGqBBmbU>?6@JM z!+Dp>{^bGzbAwpx#WADpn4{(+pFP@;F8k#3F_;r<3XXk&UAn9vMGv0ak?mGTL%In( z*y1M`BWAOl${$u)vI`wa6hC5W0WD2`?_SS3+;1%EC1@A@#0`qosaa z@CrAu?K4GIdHvf@fTS-_i?tM-%rr^GGm|h|+@&ugx!hNP<#~@7TMJ|hTH89tW;QP? zy9{Qp1l-=$Qs5?KON(bqJv+{|4!Ci(sI$Cu%;O>>`W~{W^N*b3E`JnDiWU%q6>&#X zY__~)L%UIz$I|o6kvPKwURgz$9DSe$YA{mr?7a1t&|r9lcue#?+I$(_tZu5D~!Ucz;C<|84*FEsjhHin+7y%}4%eSL6HUy(=>KPm)DX z8%qhSf`23gU%5G0kF=8exDL~!c{a56LvGRLC@}{JNDR(G#RG-=^;QErXykuY8^9K` zu7_F`WqiXdLLiNTW}EU8SO-y+XXdqUO~Tn~^WmzcbnkoI*3{VNPGRrD`ScjOJY4P@KuQmBFDsbQ(i0(cb|-Trf>Yu zS9@!&LW$a$(~rvQ248cQ*&!VZLtLlnniH=N?60fDT@WI5ubx+)2z2kr0T}Jk(ok_7 z(iBe)-VLOOLRJk6*-%8@aSu!N=vL&0`jrEM`aZ+(U%80YeID`^g*TLjao%CFtCyYV z1&G3=5M_s-chZh3&Qu?4p=zk4KHw5-A7$mu(%)CzNMB#?(sjwhKQ1?u98QT!S+y2t zNh--L&9vNN<3nV*1O=^4aNloCc70)`rUNx1y(4Q2JoC>S;D!D6#TsgjMJKBqeRGq; zU$y&3-7+Ququ5$iRPI-XX)|kz?QbQ7{HX?y$2upR>kae9`?}+-fJ&%;4HnP`?N15M z(UndN^<7n%!f`Rs$*s#88u+Vj=Mt}sJx}yhGcm4m?VDLM-K~iVSG`NWH&q%LQGTMv zQ%xXtWS9pJ;fy9K80#$-l}~gF(}#a9Io`8f7kz|e=~)vsssRe!!k{7a zuUoSG*)7PYyU6dqyd)!yrK<0UZRX{Fkp6lYJMm2kO}^iw)(Hy%yUDTbzh_>R*y`y< zy1Sw?l`Hm<@2$2@2tGpA@k`3Wxyy7UMkr;6|5Oa)(y_v_#?(&89fW8@dXE(>Mvoe8 z;r+WFbZ?+PUXkG(Sbu|q>+P@K^N)fnBjIieW(eI_JZTQ(_4=ixGyNb{euJ}4$Z+|N z`9W|JUFc4%Hj2X_cK{((CXc)OTn>-a_D^3cKHL#yL-L}@V3;e4MN(vr&9!%FG*ZIl zY;lED8xH9b{9X~P)K)tp91%$M#FRKnh)z2P8GK;&CAHr|vb3SQ z5hNz%h>8rRl|t=TH0Yv_)Z;UwJ88La>uTp3OsXL>Y;K>DeoXIAk#49&1mOtbhbq75%8s+-QSJQ zmCQ@1>4}2%GsFo1995FV0?wS#^UP5UMB=kyU)1@Q0tuK z$6J1}XPGjcII$<;8~N@pW`xPMg)i^-UTQp{t^QR+s#y_*@pz>=4J(7czyu^-WMEa# zy??_%gA7O&lN>yKy<8_jt+KKMNEH;zqa_W&{vw4KHHl>(1h0_x%3VZHDokJtRIzF6 z3ylFtrU?%A38uPPD(=9}6sNH1dtim(fa9D=fg?ywza(vI^B<_BDDCBclx=+=#^STU>!)>zw095o)3rXGDGova5aAyB}se6Gp%-&ASzst z%q|Cl@v>q9=NN3J((AMeLR-~o8u-@>dzYpqs!=}76&AeMX082@GF{-wv%<7n(s#A` zuiN}8-cKl-ZH-aIOGqr=)QB>JK=P|v9^oHF>gZS+5QQ03Red?;-VZ+c#_TFg}oLVcY!WrSf4tZl9J--k6r z8t8F-*uJ!Fl=;+YO}dK>^GS?{B>n_bGlj*Xc$;@1wAQR?W>i5yf>nb1fe_}pIVX$u z&>=%U%TPyk9hH^^i?F6m47}+vTED}_O+As;Bd>P4BN*Z$?!Sa1H291_&zODf}G>CLihGez$xMwj*f#W#ZB4=|MPe*!q_=AXH29EqaQ zW;qA6#K5Q$bxw}Um+k)g;!lX6-6=>M;&8>1aa(w~=~2LT*nb4wc+{V6^A6>9tSK_` zUqM`Z@Ms#e#qryFFp88(PQ?$?zwKfS__Dz5i8z@KP~+SDT50+A>-EURG=@C${_Qj^ zaI`TOQz@vl<9<%*UF~-2XpK_X&dV?A7_0bA77iOFsAmQtdbuTjyC1}@95Spcrm12v zn6^XK?IST_ZeD_j0)B^b-{l$d&_qb;JNlaxC-BuaM=6KQqcm^^aFllT*hIP=p3QL;x-uNGfv_=8OrxdfLDR2P3BxhZO0K)|&1MKp6FI`~aTD=Cd4Zv#M(1oSfVnEg!t53DSK=sveWX`LH828xiT2 zqD17YAvq-JChZ=9+#$?qg5j2?9cmOH{HzO$o50^i_0DVjh#@uE$qfkoakX*s&eAbCV`>@Tj>f&=@C(6=GK`ni2 z47-;0tdqe@RhEBBh&qd+lw0ugLhW;Ta+0zo8b0<>hJUih*OoUD7vOw-NTW&J zexP}tev*sTmn~zpHJEH{f$z&mc<{cz#+__eDtl3A(A&Ajs=R|_*VjoARW{MP+tO-g zOXDou#|1(2lXDwmgOUuxAY}(lzFW)_?a_B+(jq5k8vo|N7+4pROtPX6Lx-RI@Hswz zf<{IKXv~fRot@DuYPJ0XeQ5~G9&99DFw_NQ9mZNjMkRK$Mi1F5q-5ihiRVI;8o--< z)7#`ByEo7JHCsOM8gUVv0^z(yq5QwDiEeQBE+45tRZlW!&3b0bxdgW=>Ubw(_{-;M ze9h{ejFf`CDmFANTT_z9gB_^0Ntm5z?xw7%1?48E&i7Ta_euxfZ$>%D*kFP>=ff1` z_2ZQBDBq_$txdNiyVPE#8Y@_-Gv?NZDG$OmIywxo-9w^}t_0IpMq+uN?VHzXSVr7j z{Hf%qgdYplzS=Q}Fw@{nC(45~>!ahxEvBSWxUyL4JAyIoaSrVaG9X)%##fVo=D0s1 zl!GcIMhX<022?F*4n9b;e<7t6^jyEh{j`TDT(w5RoW}~J`u@lgDS^Tu73ooOtlXG+ zg?->WZRU;!IhJY?LjKt3>Gs6~Ob@P3 zaIX!dWOiST5{!B$I}per^rW45&O7Z4z-VSjeN{p>7kj8Yds-=QsBrU-POuqWzBpT0 z1RmHKAsC2@KbkpfT)jC9kX}^3j2vnX`=vWlW}(q6mT`UjY>^?Kja{`1Ou;?-g~7hj z*wvpvahP9k^9k8ha?nWOYy5AJ2a#k{RT9^@dDS~YQTrOF%Ioie9J17utUb7xkZN%v zQZId<<(kbi?GrlkMG1w{;Ue2rk2GPe{~%RF3yw;j&47rXkznzI{<%C#bwK|w-`Eza z$%*9VUmrz|P})sYcGdgig8>1Xr10++FMq15wH)maH-uvMX$akiB`jdYwzsnsoA_|& z?f4K#>ZTODL29FPJCpV;110GY)~5UD9$j$806YfPYywZJcoUQMadn6nukfpE-lINk zH4u>d)46b=(SNul$A*hJktR_c5Dh_#KU_ygM*9bjpElf<7VQP9 za5zMBvQ#Fd)Ax2-kSH#FHY!c*YqWphMK{gkTu(db!9pu4|JNlN!B9LGWtTkN^I}#( z7#|{7DE7f9NXzH8EKS`3a}!HYuq(485rg+aRVd^%ijzuWCzAP5cfR2o(;m!$O65%3 zwh-<`P$XXGs{zL%nB=>B+(cj9*V8MgFMt=G{0tx7 zxUIH7(=puQUXj|UAiL7&{=L86L;y|F2&_Mck$YppDk2W~lC0xi>k|5U_)1YLsP;TJ zET;_Lehr(H+071gq5ur-(JJ9R>U|lTEKwKDVoRfRQsW=gRZb|Pvz|DD{zgzII=r2C zvPsF+r5yJ!b(1JoySnZUc~8ZrYJ?8|;$Lk|ym=lpZ6_$Rrw1-Hemp4r=i(lFOX?!u z6#i?QVgxy4`}WF=9y~ZsY}ge+U>=tm=4$1BpP4Nr@A~kITVXES?ebw%fXeb$c~-L3 zkUgYi?@5w%v>^47NEkZI*{eiXAZd@srq{Z}O){3pRIQuz=e8Q_(hBWT*+#|r4YkN7CKJq#3Ehw??+sBoS9aiA1a;p(bd^_Q4U^Qvb~_pn^=8E+MmD_{1BkSmdpn zlP~*o+!r*5Wjpm86#0!U^qbtR&+a6(dI~*lVr7tZW3*g?}*~&1Qq?+$P4K*2~KwM0T3Rdij=<9dqYB%}p@O@)w{#4%0je)f7Q7MnG23|3G z#u-cyT2dMz?5BQbhw`yGyRQpB=e;(LutOk!8>dM=7n&+rSsIV!o{_1^W-Kl=1`1EB zv}Rr+HdgdFSY1v;`9d`UkV|L9g;uyfaheebzZn(Nk@IQFP>K`6}GT4vxW2yW# z^6qq%pT}!dcn zX+H}>b=?WF@fzC{5=K~6fW?%jag;+?HKQ4izyZ^D@WChfXU#778O(cN>G8g`YW<}^ zbI}u4%>JF$Alw`Rz&EgNXIc1aXDLUPb8mmt7@k0(NGFc&O=x(mFZ)|)>fuqw4%;v)I` zcbYLdY(4B0UySPhi6{J?ju}-AvM^39FI(miu)JF^*G1rCJ{T%j%$Z3a&nt}kaHex8 zQf+Myzqv<@YD0q&2`ZU)bFb*nO7J`PQrjDK+_!d5jvnpg)M;-welx|Y=>&VLbnLs1 z*33BnFsrxeLm*zm?t}h9&H53c6D4oIxy(st?WV5pv@dIAdVzm_F6TLz>1wD0;QsP( zPYX9M1sfXWtmj&AV8!w?`d;_jV-Q_TKQs3C5aqrpwSBWs?lVDv5`EchicUQGXj6g2 zC7lIMwz*21oPVg)D-5i1+QT$^*KH$yfuL_%L={-Pkhoh*|Qby;5^yOEnHmbBW3 z+Q%;63oHEy%%RfXMc=x>{W=JAx>kw(xhp#X3U&h?$2o5gp9ew340hn@ur~FdRCPyF zGXYr2Yae=dY7D({;IGAYL{|=E%SZasOGclbQ(?@l6V& zs~?Z#5%0teF9%y%JDDxR4o4ppM~^vv!l&e&? zq@Uy^v$jac%8_OV6_EG^Ojxe4QlR_L@HMwERf%l?UVSb!ERW*Wb%)FN0&2y0BE=*) zusdy`z3q=n#m5=c8}cj$5xmAF{qzLQDWU=KqOyO6yolEI8+_FJu2t;NK$@J2#&owA zUT!)$f3~YIWISTcDUJ1;;jAAl<`Z1Qk#P2J>CyXvep&*nLb$Ou80{|@Bn=Hj=z=TM z20gRaVC18llEw@Ng7ukB%(-+%hO8V(cB58yZU`m&Kb;|wi^o}4KJ+u4{qAfjJ%>jv ze8aaUO0|A_o29Bgz9#EAS@YbMHg2Ci1+`>_b2GDU^F%GxniJnoQ%rtlnMe{t@fvRL0NGdmcu*AJlJ8Q6>YcDUIY|NY3KQm<)sQ32&EKWoS- zxxdp%??Ixfw^bn=$a=9)wWPtRH?Qn>&6`+lN@xmalkl#%kJfQF)Ju9#6WvZ%gr*X_ zCk;SaZRV}~LW=eTQL6|bGSt|uSU*FhZwLA7IXqY&boq+XmR0qXxLJBxPq_h6wY8Re zs@8h=T-*&F47ftYb$^c;7dx*0bG__2F`%lt`JQi#YV??Xy~CUY2Bx-LA9*pndRCej zR9Lg(ZA4?*v1FEw3ikMH4N-v$ykFAu+lTF2wN@z2KjNz|39k7}Yt5fmsy5913_)wP zh>f?uk?Uw&+|Qwwl;IKz{c?SCy;H~g;tvwMZY`G1>3-+;j%LowN{RUM93y$#P%+c@ zDeS%I!wz+rw&FrnVdG5EuYYbthktrpL*`+V)<8eGp>_&YBduQpMpvRV@oMPSn?3+6 zt9aF!T1Im$uIsQfNJry)A-Vh^L-y0zQBVKxo&w@a8;!IyQ_G z@S4sIv3Mn0xZ)sh(}~vbK-F?fPlVstcsT5ByxtZ^OS!(E^iL1az3PB|&cNy5GmYrw90jm%I68-EP3K&=_Cq3RzClzW zQTb=Wbh6mdVNZizJ>_EYQ8m(yREMjxSegx<&nF%)2CK|VX%48QW3jWCmO$Dc4N!2d zmB1ex-Je1zwI{|8vA4E&hKbZFMay|{dm>e|7W%4s$j&4O?%8YV#)}+^Qj-phXurgW zO^C|eRn`v#Rk0g96u*uO?PP_`l?FyAPXA7Tty7&g(u%314@B#u1^H(buDYh0G4i(f zExLcf{XHui3d7wi0$DDd%1uY!iE~(R9#91R?HBy#Y+7wFfAs&%VoUyav)D(J*SBC= zG3MGjqA%|>{tsv8xE@&pZreENjymetcE?u7wr$&1$F^YNvwy5h zsCw3#@0?>4pn)N%pFa5w`_O(R^0WE;z5S|f0O^BzD5ct)G?i5V^BY4k0k_(zAKQU9 z=d#ktqlMiEKIis@bM`dJ9cz;w25=-THQl@oGjPn&<9jBI6_0i9U9Z9)bf4^PmfzGq z2JI_P7VAkLu!Ha3@~P(!lbWiYr#DCf#4Bfgt-E30I35&3gZfSSS6%z^KX(Tp$zP(o z1(9khwyrN0s%Xe7_y#P+OKHiKZiFscMFswW&O3}i@H=byHozyw?WeZoUq<#z?bW)& z`j!YVs0K@ZyMKh8UaR)DpeT*_6-n*#P<-sI+rDBr=EQ;!8OXco^hQX#ZEitYs@i!< zn$NFzm>1#4|2ndN7B_5cBF**hW{MixozcIbwo9g|xzlH|ve>nfqxG)(2G3Vm zWxNeNy8LO|Tx?nGdGK1>azW}Q=5|El%vT5|O}SSou-GO|C!S}SL^MlMl8K{S&LO5v>~W~O$C@|yXc0foiM#-=AkiKNbGaZ<#MKEgMF)^Mv#`b76G*4sp7QA36lM#r2tz*$Ym)Ri;* zYb&rfw5Vg{XAl^M^3_$%7{T(sjR`o`Je0j__i_5N@@%)yXjz(EDuF)U<4M)lX6vHh z`Az^$bE)`7Xptp`M-}k(nY#!ULiZv z569Ro2P3>h|G`Fkmj|C6V{`Ws%_Xz;CFA>0@k2q)ta=TKT;3?B-FREdePJI z8aZw>XhM&JMm*ii3*eHFzLn@XM-jFH??4FUS~=&~GfP+l2Kv`c9OrzjT+|QRf_zg+ z#Kz6`bJf$>;upl?vj9&_KgseWLt7;&i(KQj(-Jc6Iw5^3E0o5Z>_&DL{9QwzES}0m zQKKzZcC4(Rb$#(gPk#acG(T&WK@iE_gQ!dDBd z37e6FdXdgv2$B7uEaC2NHU+{>z|wfc_P`05W6k535 z!5P%I4q^&@0o(E3kpbQ7fmlS@Nl7zc7FL}#*Dd}G6%~52j*dKbnU-13JYGqvnHWhS zI$xslc#gnvz24@MKTbgbwAB<0SO`lDEXxEdrU?;Sm+vckk1dJJ>os>d;Ntl*2Yw=nYykC&%Eom3DVe!z_UqX*fNWonmhnGhFX?1<3ps=8--= znvtHSavtYbwd1}ZHf?*Pk-C=b7+VHMD&@c+@yE*fjdCS8$lOP8S(Fr}SSwOobIOMr z_7*S)XlDYp)w)OX*j+gh1Sfr080SohmU3x2GOUYgXSumF8?+k@$Wff-TK*LT6YymO z<*d=v`HCdPAE*#82d}4h`4e)dg4byL*5*&u-s@xO8VEmYcW9eB$6JgxC1KZM3oG?5 zlz3$(!#EErNfMN`S29REcB8YAOPmOZq}w06B8->$CwHW=PQK5_w0df+!kaiYwutea zJnHCQgAW9NvbHr(@TU@(;fq{wP+%e7__GC`&*N;U^+gZ{{CWDboqgy6A+1fb5+WhWjJ z>xOK0iN^jNq1PLSC7%SE_8mba#9Fe#9^!Ogzh~*WmQ0;jn|$5dFypoHeWxGq>0@Q1 z2e+=(IYUwGzUaVK)bacKYQd}WVA~FQJ@Z_C&GKoyNt7E5Czw$sJ#lFQ;XhtzYwt>m zhMIyT!^zR&SYP>9_0CtyvEE;|ywc^bQA5i5+9Yp|+W(MKi2~##`thANF%AK}%y;yy z`T7dC2V+*1n%(Vl8Lwt7b-WgAUnE?tsU`s(q%%>lq@-kit~nYsomdA{Lum4eT8#A5 z$k?x4!gm}|*H00TeNDI(8=|ekDQ!@<88?A}I^P|2yln#OUUbZpq|rRxLaot9#(c<9 zWtBCXR*7$o5L&{sV28IASFTi#KTK2l?b*P%_)`kY#;aARys4;a67WaU_;MpNQggi78>Hw-FG}_M$bV^Ec4kUej5<=#7ZPZ+gpJl69rvx&vlLSazv4MImWv`SX zt9HL99|XNmTqlc(>?k_$od@`F>Q_zkWQEZkCk6lU3!au*!Cb{(`ofAWKboZiu!p*Q z%G@0Fh)d&qUZ|X|G$rZ z9nR^NBhkz=%9txB-!5Lyr@iF$Vc= zRQgwvt1!2wg#77ahZ%zo#&?!`IaSNxAL4@Rg(HZN#Ttwbv}?TC07n?YuBpM4Z180R zcr;P-ef&IGVG%d&NXXyOI!DDeS<3G~#HCDeC@vo#1(l)PO2tdRs=FKNafNJq?$j|Q z{~n1j^Nr{=%`;$O6U#{q8KqpC)7ly0ru_3%rY4lK+O1B612)RbsO@y@eMHm{X#1x$ z1h79=;^>DIH>67v@pLB2T4IxhVUJh{n^MpI&OlI4T* z5!f%Uy(w+UPBF&k+MRr~ z6EeZ(ior^qeTwfzFuFox)>fK_c~!Q-@&+rO<)SPb`(K@ln4UxwshL4BcrPj0J96<@ zX|*iut=N8UdZe;CFB12^s|)YtAyH%y{Tg0u8s`Xu^>lbapO|KwO=B$U<-CU7pr8;MU1#i zvGHkte+=`4j>|zS=00UOY1|9+$iTO4gcS1F`edHA;6?>g|Lj(&O=Qh_!9!cjejZg| z8SBVLP;cqU<2l;kL-q>3auPX;wRZAm<~qEsY}DRM6a`bT_Drk!xi~5WTh?L$S9GS% z8ni+8wE*IrJUdk+?{Bm@!xB4 z16Zx&Cwp9qY*fZ3-b5atNK~rv71%`W$NuR6VZ;vCBE=m{F5p2mY|Z~EZo5c>C9sqmqm4(te9nxC{=G| zO1cWrvoz=OS^aytlaUIZa~9N1Q`SsmIj%Z|Y!Udd=uB}Fh%uCOs^_|&y;@Q`J|fHI z4-Lf4+dyd`7MwUpnlo4*<6lWL$DN|G$%dd+gWjdW9zzE=qb75Hpx4w$vSa^PcAKnp zYmv}_5X7efm#P3t7%OjNBZ*n6!XpG&fTO(_Lq3)Lh;$Mxnz9KDep5~am>U$5jPzav zrc%y>PY6ii)XC8u@xGsi00zKgRMW#aF5; zzR3pYv#dGn@BCU?BG0^Gst6<(Ps4G=VbWZi*V#AG_bQISKVDw`-`}%tKMc!6nAmGc ze@@E@-7m-X)^44a(o#$7f?fJ3Qx5E|O-}9%4FDRf`58S_W?Y>vW^jLTz<_<98N`E~ z0=gj&Fo)}~d=ysohY6Sg#U070L?M0}HLD-x9sLA7v$D?jR_a^lUh?SFF^||MbU|zo(}MB>1eXU4F%X`Txx3j1T=u{lGBTBy21R zu@^YPr&$E`{-JyrbDUrlBhB&)L)^)F=ljR^ggb{VVfZ)cSSxB3c~2x^`pa7nkE8e> z0>|5_J@puVia@^DT-zFX?Wv>|0i@Gg3}7z===9?IYIU;iiv0Wa;MzeBfnBW%%YHb~ zy87;BBrjCpM>jt}t+QI+D!?XKUIIHkp4-3ywu7Xba9F=(cQi*w+P=gi`P{AcXR%xB z8Mc^zueyW4U#b&9?~<`Aj$389f0Zr!Nw5~3op_n2jQ@d|G5+(ztZ!do`wt9hjMbsQ zAXTfK8PC5dVWZb|`BV8o07d7kZJ3{;cbVeqr7ez{V91g4{ikVcc3SNsoH1iwPd%jQ zJVDLAe2@SluO#`*_99nnqS|k3s1cLRT$Xl!A-OyEt2DzR6o1po9b8G4?*GsMZt%$rp8bV$H3AQsaq;g1$mgd@H}vj zyLxqll|uXDhcS3Pd@1-T#>guOPW~bGWd>u*fKzdXv@oV|d3o!E=wD%@&4IB-syuZ8iyyIBmPrk!{vc(^4I z@4iK>IciK};f?9ezMdlRtooMv-Uw-s>O@e!;6>^0)PGZvaV;}s{pkV zyf?xpSh!kS`MtlY7}*||>1{vRY9%d6ik*0=!cc3U5g(A!HslD@f^ggL#|+MLa$w`EDF6H4$$q>q8(pX4b2Z{ zn5Dz7StScUJFK>P+?yrJ49-0o9^93hL zdMt;uqy(`Tn3yH+wKC3XMiA=bl zW=K%rc5cG{e_;3?Wq%vv6qfK!&7vXO?>TEB4u`e2*PSc25T}nbj0KC5a)V3U^e|r) zD=%(Kwt9)#e@%A~cJT=y-&P~~?^8zDxRN5qh39vkIvcI5NIY(B-vJ|0*%e8Cr-(R58x?1W`rS9zkQ(p}Io$I4ce-^drJzcr=H82h$2S!-? ze;9vy1`FpJEQ%Mr$_;%;-Ty5j;d@<+mSaf>yxggi{(VvG(HB^QQe%=)lPEJN;=~<_ z7u%wTh^Dn{e-t!%Aq~RbU?!;G57jb7s|z3OqIj?<-YFx8aN8A_7lDdU^-(JKGgHxd znL>n0}d@AYgn_)oU&~VH;~fpjl@-na$jpf1CLDG_Lf-87DbX)nGP<}rE^Vw+XC7qu9Z~3@Ar#y;ylAy8cbh$A;Tb1xz9aU)j6C~g z)rW%~cC5*oe#W?DTi)-KVzdsJrM~HQxoeVI|Pa4m>1XEBW z1r!demb7uQzL{(E8f_hx()?ad5TAyI9;Ln(TwuPn!ak8$h3+Uk)D9$rpvu&#S7?Y% zrL4!lT=c{78}~=)CI9Oq1k&={?xY{OXH`(%xIK}H#|!=k<`D@!RePGSZ3WHn8!q-7 z_nL|~^HBiFZxU4Y;nge_J&;F{#0+yW6HNkgoW3MdAE6K`z+Dfkm+5-UJsW-H)Ce?! zR_$i1!+J!q0(2K?9@(R>14dWuvED>=RIhP&Nn`rxsG$aoh zib<_11_axpO7TowV0&u5NA%bX%8-24T;kf1)27L}!f?w09djiX#un&VQn6ovsSjUZ~ zYZM87V6GP|Jc@UkyWQv5SWHJXAO3Dd8`56*r1-MJ>;u}gPW+tO^+}wvxQIIB^2_n z{cV!L9;I(To_%{CeE!k8phA0m zJ{@|G`vW+10{ht>P9yz@tatbTCwH)sPh7P(lty}*+W8axkcF{cKV@|_km?S1$MP_I z>{r@$M(G|e-AEP(DGu!<5x#5Y=GC)XD%6gg)$}Yf;M7kqCDCAc+>y8+G@Swws1)1& zR6!gtZ^AfBACG#~SB9C`NKmqgir%MwFI`*s3XTRaIBV9hc8wn)EH_MH6Lt%v=hvD# zeRAA0;7Rnyrt@9)-1-Bl@A3xTtu@a1IWme=X(C)vWt$0xreQHo%>H_cy(=GdT7=DR zTcCO2Zp=l03LWU`*;?!MT1RCZF_Oh?edD>6%Wft0YB*+=*p14dvZxnEV@06<(rn}D z^ipd{Ibxp=p@fRE!Jq&V2FY^^&`N#$!TN?2ZHs_=+4A;-NvsiaP#*0j*R zgMMHl8|QDCk?j@dBHbv?Q%*ffNs9MU5fd3F50eMfP7m6hN3l?a8`q!of|NnseZRg} zy!ex&PNQ_0f87S>^qTz3em52Mjd3IyBhZMmSsgCDdhL7O1t1P=87&*icHg6tLHT)B z7z(@j=IxgQa3u;NAPO0lA@d%6~(T7Z_QDBBXX|&Qyz--ch*Opfz|4Jq!>u*=P zzo1Ku-r0^R;Ea@}s2-@+T%$$LuqZ+H7f87^F^edV@tL$w8f}hkxXZfo9yoWQ=i6-$ zktoLfv%(?(lrL)XIw$CoKmNXF^2CDRK2qa#?8_pGWLC+h#^~0a$H+uqCjM=MA<=&c z$n}Bt$rp2_3O!5_1{5cbDJ*5!*Va7e8_1DCCFEJHFWb@E*B#^-@hFNzmb1wzDbANn zCj`6hMYY?)W2D$dXCNd@=?i$gi-vZ>Y&EdEP&i=|eeUYb?gaN5 z!5@fJnAwh+3Fn{^~bY_WbR%z!5;aTt#ifcN{lHb z7ann^Ze6vcX@x@Pu*pg zydNHZ-b<`$1SEa2E0eA6ylRKNV1vJMJZgBR=GHLx@YIqtJV1B;gSPNP@Dk~Ko5%6= z*b+&ebk}|;6W2PHyPIMC@Lg;+iWPpM*V-4gjJU~{#WXmsef7dvc`$IDY(KnZ`r4Fh zx{QL|AO#onw-6w%d7a15b0>(ph%4rcIpprPgL3=nXcHxVTmE~Y+Q1iJ3Z8ygN6Mda zl*WzSXDX4e{`LH(`;mLfH)Ek``5v0$#6XCwX+Y(NyiK%T5(E=MXLqg|ocGD_q=eVbFo}Hx}9&tE3`1 zCuK&OT4|6Dh;{9#h2jwkfH%tt*t-S4)Rb;LpsU}DY%?$JzlaUV%IlQJ=r&%Sm^|#; zr|4Xf{I!V==Ac$<31~x_B5Qm&*XA}0HYbBFZiOm8#8a6vMC`t}CsKfwQ45wk7O6*# znGQg?Q5H3c?q+ZVstLH1Z_4@7@L1>6G{^H@m@r%XqJnS3dsot*jO=cQE=KKmoUz>XDB8z3NkYooZ}Mdf*SYd03A3Kjkf7fm!+UfrTB#k1B zcEz#&PASRGNyO)KhD(4BMgkw#yVGHTEo(i>4s9V~lctDuJweiKVL}8s zQMDlu(k*cR!U{sS}mqB$KBK%_5N;gtZaXTHuoWFR{Yxs6=j2XAg9x|1FE z;(Skn==QK4KA&P=#ZMA?_pA@}&GH;CiuE5|uWxJbNVIc)T;G5ls@E8+T9xV`*u!$Y+;2Rbovus ze2AQ13TJx^(gVrq*Tt-d4lyAdG0hkA z*zXm(Re3Ak3UKu?8gbH%c+3n^RfK6SU?ddPp~HxB(Ai{um!GQ>CPF$ssB59dsu&p8 zKX0fGT&xo^i7vS34=t5uJ^hKi7(gvVN`W5Bqz<%Gi3u6wFO6$t{Cq%%7c6to0_(Dv z>bgPdZL#+9_W)gqe;>o<2BiUcJl*@>=b_JQjidJvK7v&k8P^&%`#~shw-SFhC;1wM z-VSiM?OCq;4C&<12PF|D@XHHpihI%acnp|S%Z>fX+|dLTIy0H*!yda1VfC>husL?RGF% zie9a+EcI_xftb#h5#(PfnJ%f;Nvsx%1m?+sG3~JMn@f1=OZ>E5^{>9Sb9w;Eo(M`D z`l$*^GEU)U<4b*Jzp009O%KETR1S{YslHDWTNeDF-|B z1h1!Mp_Ozw+XpFyPXi%&T!~Yg{;y5V6$a#RwjaDrT#0|kX5CS})YQZ6O>9XdY^yhv zoEv4^2L!YZ(e^Qib(MAFlzioOcI6YC!{XDRkg^273p=UDMEcKLEStT*L{FQR_yL-Y z`32*IA!Z&~qu<2y3nn03k0XK;^x9c4xwo^ff577=GW;~%wTKmgITG|B|0*`}mdVO$&!DdSSK`MqZ3P)l1f ze0>VK3R91=a|w@IY8>4c*rE6|!bt%L5#t@{u^-GNO6B2jPp1>?RkxTc7&y$FSgag;SuMC95xOK9kn z3wVF5V$&ja$ziaE*WqtLoL)MXrgN?z^)`lR!5q$P3om#e5dXPgn@B*ia7*AKGB22>Wdv!z8~YvYQ!i((9@Skw;!Kp7&~rFeFx0vsFcN z?EiRO!F%yPxq`4h>GMa>hTAo_Aq7rE{i!g%yfQ!&^@qA6njY>y(e}n&FqtQBAPAl| zKB)BYzoJx5w;7Z-;kMVge4d9pn*sm9@=rfj+6($v11Kb@$N#i~0PNn)> z?fi&81z#&lEWJ)+eH6iP`;mj0WyIIS=6eHEkF*v62S0E*5M`XZfM$26@yBkl~23#s#2k={QWxepdin`BLjQ%hnW#UM3V|C1LWx zdUZS@ZgcMkv@PJRzUW;-S4eA1gKgcY!oSoRcW)qblC0)xSyj8Yy`7Zbfi00Qvnpiv z8JOU2Mo)?H4VfS^zAe9|AMc0r|CtH+#x_PMB71_&jJ(lm79rO`r7>ZOPe37_9hi@Rpdl?Dmm_KJmB6iOfcJ;oHh?i;&dc@Ar4kQ^uh zk+3-SRfj?h-o`MnbL_Os$&}3~&GjC!H8sRK+NGn5a>}BON*;2O@g8<6MJt_H@j&|YTqanYpSb(6AXOf zq&Mf4{NtzPH(pEYYuJaB&WLSU2s0u^8GO63K(AfDyMhof6L`hT@geX%tcR`t%Svg( zDwinUMpiU{1#|PoSk8@_@AZ5&Sf94kZ_c-R#=Llp6sy`Gx!iH-bl@b@ z9mk!I=WrER0NtDAe0#H3nnI9MHk@a!J$?vggXaeX0RiUpx>slJceeFqUexX8$iiG2 znaDbx*syc-!&tLA##u)NaND0M7I(2WhVal-f7m#TJyh&vR~n|z|Bi4$tA~`>mv{?N z|B&NmDxhS3q{!TorA3t>U2~wR8g8Ukd|$p=!!{oIBZXnEpvKSeynLr|Pq|GeXj*p8?8EQpqT4wU#g?ih{dsBX&; zpio+_lOgI_9YHNqiAXN3d>R^83ywg-;D2^UM%?oO6a-di*bj_)%o>^9*SQ`YBtNx|p5iKd1C1OMw{m zzGdEonC*(r@WgHBE-1k7x{5&T=?v1HY}H2=8taW{YX->+Yi4|D$)$tT=Vu>Q$F%z? zVcvl^)c>r*QcN3Txn2 zu~f%q5E$9%=3>RC$0BUVH!82B+tG}>z0D!tcGFxP+}LgHTz@#LKeXlZooNaY>rpj$@YsbZ_B|G$p0yfh?ary}fvd!M!W?%1VjaF&FzCd=Dz8ovHUK?cQaOl%8~+HOAOt?1ElmRfqDh%pprx zWe@7S4Nzzb7Vp<(l^YWsFpp#*%AagQ+WMQGy$abVUx$~v;=voB!G4_d60s$D9!+`K zje{(MB-qQc&Bh+vaG*vTq`Oxal-s>r75=zRc3`GkUhx?{LcH~F3UO43Xsl4ISut;Q zv0TX8?o1u6-ZZE?NlKAa-&3wpZncC39ObnF`@KF?-9V2}6s!Iw)sd zVX#zUhhD4Xtzz??&h$_G16@`6W?IgS`YZ*EkHMa$J&r5=16jMBO~pI!}tgr z#mYW_MOaO|C$j84q#l;1x?&&r+d0qx8kt_SHmz*b1QJzloP*HjU0syyZoB~710M{Z zwhJ*ZQ!8tscp1rmpbvo;dJkUNeqR7#L+gesQ6${n`FdN{Amx0q zxMCfrod;>V?PLUz8J$aSc{GJ7$a_V)YRY4+X%gaLr!Db9hXMii<+5hAW8w+&l4fPnS7tCo(j-9w* zqILy1k8oj){h)I2txV=f7>9X*k3A{*(9wodhuy*%K5hN?ywt3Wxjlt|(*x6h03QKI zpLuliDP`34`*!aGeAY@Dyz1g1{#SqS4d$sp3LC6<{KCT4YvB%B^NN3)?j>0i1XH%@ zYdP`!-xP+Ci3^E?)@EO3DzT9$ya!biQfgM*1x~UUMdjiF+;`=Rjo_f<+QnuDp@v&IWWhD&h-6z zE(9%gUkx_9Oy8~(Bd((yc;*E))>QDKCkY9$T$S39V%42F|N5yWu+MX?Hkz3Q*%6MM zHNc~lsZ(JTH~B6$J%VtJ8lj?!g9u9bCpj+BVATPSk$l;xOge5UzvlP&G!1N|E-ax4`(`?awn}aVKTr{SwhdKx53@0fz?YK#8Cw47)G?0o(857xAJmcsy|HJb)&nH!qCr1VvPHB ze34ibpclBJ4Yj%OE!AwVI0#ZS6(uHoym6Sz*Z<0b=^}R<&WdrC|B&4>%C{ARJ0#C& zgFGLl$<}Hfnc~?q4-~|#HD&r7lu^}W-1al3f;?BPbCu_`HKJv<)f7hOJP112o?7LO zNSHuYEl!%@a+^`Y%y0E5#qHMsk-ibRCT_5RLpQZoYU{K3C{J8rz-ksoOLyZ!b- z{*Awr2#1lw-bCN76nzNu+^8X3m&V7(aM(G z%3!ya(>uDuhuBd6fjN3Topj1?a6C8Pjt$Ub`4D{N0_kcHJJIdy^Y05d;V1C56P-Ny zW(oJz?0#O@OB%OdN_zwY;c=!-5FE4@1E1&RVz0Z1CmHkfNI2KgOFp74 zNa64j`Q+IG5`ipkZ%K_rCrN0-Zn8<}W0Mh;LFU608g`XoKNc9da-oA;&$^wK@R=q- zo&e7kkvpk<=HV2?<&v)luX0Q{k1PD_aCcdEgbLj0F}bshP#1r zQuAWu;^<)UTFkW&dpJ3^n|56M>lH*Uib2jm<*(v@8x6=cVCtdjQ*T`Ea!iMp2=J3Dw*3il~OfHV969R6r5sP*$gatrl4=1vC$jkv-f`s(iC|JFY1>_ZskUi?Vp$>Zn-qJMyI0R3yTK18pfs^ z$T+AC6??z=0y*(sNTRi4=-4=YX1N!nevA2}?cg@vK8DKD2vy>qlO?`x2lc8UEvo=0 zW}S0kt@h|Bvs3}Z4FUURIV#zYPyzCnTC0lXfq*@yv3TpOL`#?Rq5e$`7q%pBjsyD1sg`%A| zJhMWWtir{}uHZp>RyQ|cS3L6%2kv7j}Q^(T~Ma9o|&S;=4JGZ)3u zYsWk|e{+B2SL`Isl|t#M`TP+wkou|;%84nF8OigxPQ9%&a)&KeAQ`;>vAjFEAMZ}i z1Hgub-?dsLl}tK+7LDpv=xGuwiriHrB9(NX8B!wPj8A=w+JDknM2;pK79=h#7qiCh zyiu5`+9phv(T`p0KH`twjk_;Pp{uS2IEds7oBr|EbRJpj5!g~;<+wrJ|LLrU{2~0k z^e#ShDe1z8gKg(ps$>+-cs=jmy4{;&J<0#)d(-`!`g<{IAi~?QOe+u}t@cAE>%JWf zFB)XLcq<#u<$lexOXW~vb?>t^(`VLXUO2>e@;+T{F;;7o8c!ofb3UjWlSh4B(qpm0 z`P#|*V`CF23^^v0u-Nyz>M2jJ?+!7x_C4l!rf56LCAvUiO${mrahtv*rpv;;84Ph)j2!7NeB+V zHopH{kEQ6(@Cyl`NDlSLwnkV3Iuq8~FYXW34~MdV_BkyZ#qi$yrHE6KpdV5O=4@o@ ze)6|@gH;etTqT|;NLcgG5iLJV6#^2jt#)$n5+W#7$&Bgz2b&fUqKkNOdZ2T%4S36- zkZ+V@_cYr~J-h2a37!@$fcDT8EV|UV5zukxI=Z9fsk^L9EFAVy^t*}xWuG(>a@cF6 zCu>K(*fQ0--mEey(zcjlqR(Bbf$G%Oyx}x{*8$UL$;3#eu@dINQOXS@9 z4YAn@irl)t+NtwKOF~bb@{-DWRA>hI#%lO^@*`r(GQm1dAQyuvU>x69#JUjI7Drq- z44a}Api{D(>^I*RJ=YKI^}V9E#KczSjwNcDIr%IgwCvMvBnmS1SY}-MkiOA8K)3$7 z2-4fKfNnO&a(xL%tOW@bnE>6a!a6=#FlS5LDWXVLx@iZ9=p?bGtiw> zKYmfR^+D!Y9oDf$RefYI*4df1x2HrTdKS~o%sMAJE8vEYk>O>6%?APf_OS`Il1RzQ z``J?45-R3Msz)kB)WOgMF%>yZ|4(Oc5!U7#ck2degIjSgP~6?MNT5h@ha!a#+}(;4 zcXxLw4n>Our$r0FgA{j{|IR+=I)gLVgZ&MYE3+r>^ZsP5d*z2Fur2gI+o9cP6PMGl zzh%mha5?z&WSC$2`%Oa&S`=1K*Ivoh`z!GQ=0_c{6MafJQ#m%bN=Sbp0^PC}g{{o= z(X?}~c_%B1)i9JGCR&HZ; z95%y?C<9;{rpS8x))=Fc9|VWyMkZl*`+@%f8i?$qsQ#_f#I;C>qpquG>Zi1%%p9sB znu7#?-OIx{1NLMQt-KxoiUh-}G6BQtAK}VN*-BSEDnmk#86#_YhPhFK`opNPCA(|E zO7+o4+j+a?v5(lT!;>z`W4A5Q76budsW>HP=7=17qA}Zd!)}#FdIelFRk@abEuUFI zi=fr-X#0y@F4Z`tmYh-eCUw|i4frqhQv7|BiYR3k6CMIXf4|ab+D#e?jLKdLnTC;v zI^b%grVwo6lxA;f&-zjhY07k|mNtCaA&(Z*SfcoeqLs%ed{Ugxw&WL)lx~YzI{3NpayD62njtWG zTShs${xy~~)z56Z&yJ&D!Q;3!%t4zW(Nx2L>bOgrWMKeSe(PCZlhbi~)je#ut*bAJ z9~z_5oVEhWVcTyc#ppQX^?CHFHv7@uPi4976hqgsbiJ#}I|jTB%M>4*|5zG?e|BOP z=xy_>OFfeR-}MyZFJbyvhmUd2gg6V!vN5jRNq^L09855`g0O7YDdsHZ_;W~4w!Z@^ zL)*d*0T?|JhomP&K1{iD<9K{Yrl}l6R`F*xq%}paL5NrxT$gU7X41P#U2UhIQ=)CU zIG;gdQ<6Z~wAj4b0r{CHz;B7`f^9o6;r!`WyX5=sOd^Dzt$#uZT3ks564%1fEPy7& zQ)At;Z8g_>w>{Hlut3nH_-p;R>O~8b?;Ex^PLQge75GdK-Q=9gfol*fl`E`G*THng zDu4I;1$a<&FI)Q4h^Qt^zo`k_mjBhijM4@*U!4pQ_=Itx8Z@{;ct&pEKDM&HoWmW3 zoJ#u7#n?N$DIzLMwKC^%DXN93g>gB)c>e_&$Bt(SwR&BB4+b z=!7V}nodvM*{})3s2~GP0*|0BGd!{mAbps8zv*-C&4~`vMZkI)iVShbuuh++1hA@s z3#OgE&%Os+U7o+@;4>pQd{2N`!BoH(8X(dzYWJd@4QXo!GcJ?{6t>~8UDo#)SGCUs zam^p~^FQ?dKgN=y{O|v_rjq~td%e?{5cfgcP<|bykdXw)7|N@6S>QXpv&e9=nedio z_sL7aEJth4!>QeR(A{*<^oO^8UwOxoV%1QMC=Pv=9uZM!rGTKw=x%o%t?$8v*K_MUKd9Vv#uKsI zNn?>ksa;vu8ph?Q-+Xk)!U2rlmPTBFc#wIq0rv6%XsX{*qOG)qQ}Lj68WCnW`}7wz z_{JkRa@Q4}A%_khUao4v3|ZR7v=R}Z*YdPh1;rJmvD$$urME&@p4-Kc9D6cs=p<7A zu%;IYt04LPxa%ag0_Sp8KAw;CGkgX&QZ^}-6K;dYbGHDsUhJnoOA`{r$oJ?%}MW(q0>^31D**5XJo zGqk1f&oS^Mdg1Xx6rq8@3%%fO8L4n_ozkAP9gH{zHSJvPRT0#015|7{{8kP_w>8L~ z%y?Mv!b0|uL3<06{;T{n(L~@B&A~@@mn$Uowb#+-N>;I?lP@bpwizxWXPRSt??;8H zTk+G-$C7;R3X9o7D?6rSOSu8QTBplKr-^|PC6V7!q%oh3{AN!Qu@a?NKjFU@e$*+& zq;rXV(s=VR!@k6;!LY3oic>L%ve^ENbRIJzMdwEiXY z`ELT!&gEXw9}w-@7Im(8(8ZPJkA(&fK$?49(Fw;WmDLOZwXY?m*A&3p=6LRj$a^1- zb^FS6q1v4-6#-h~c=_d!yotLRuFgg4@@zibYC~<7SY9t&P^;^^rK=y7~e1|g*V;*3HJ~C$5h{!481Ze znCV|o|8VhgVOmeuV>+k)_E!T~Zs*z?SJ2-H=Fu&Z23Tx_+pJVtken9y_Mmx) zf#8Hl7USTLFp!wrgKo4cnMru3Y#M2$uB&|=g6S?X?)5{@`P-CYuVAE zNEXUqSMakajMoLam`lX5w}Tlz3RAECRum)so9LjmkzIctyqkD;@EIyzjU$6{@G1FL zIJG4~)ltRE!emX}F>=zexMPOEJKo4A?2BUhaER+)Si(h})H_Hb2n7>_(scvazp9sp zR^Ml6M-JXdDHq!~lq( z6xNf&h7b|VeF^eSbNlHAYcYddZ#nr=4qZY*%%rlmJK^J96wH<76S}Gr^%soXT|<~NSMHpMB%8&MgmZTkE@HX|9}CJU8i*``db-pxr0$zYeWqu(3y z#f(vm&6P)OPHs%;w`^4XV&?-Uf=P)-i2=b9zOifxSaS78yhesbwbPrO@qg2WQBt7o zjJ>`d^b)aUk~USNaz*#PN)1kB7vU3XIi@4%{D_dd`w8DD>HBeb*EoYmiU%xCkk<#?&YUCM`g)5fROd?{7rJsqP7S2mCL z#AW?MAeq#v4E}_)8`6$A}RMlWl|ZOIDxF{(a9jp-R{n zO9(eflY{W**b`DJHJO$38d>3Fo)MBEKj-`*_0CX!f{CD5d*r+MVJ+K{!IV zg#Ikvg%f?OvoYD}%59Z+WBDS%R)MXUuVpLE9W6jvM6p|g{DE@x^V_#3Y_4N`X{kfxb&ZgZK!)V0^ z@_x17Wofas-hNIqk)h?Cd2B!)9`t&$!5#S{aOt}SJ*DOD#Mev$GU7{t=xCBlv3U=7&5H2 zw8GF9qR8{p(iHo-H+3`Dah6`A(MUlebh&m>YDBgCw1bRTcZt4&R1Q%^UZhx8RAogl zQsqr5Yr-@{0YLS#Pfc=OPn}v7zV*6qJ@UdZsVxHPViR##cMJ0wS6_g>_UWGoIqwIC z(QPVMPi;e(ad2>0Tt_h{+{nc1glQ8UQK)kllxlb5Zk1eas=EJLpt6Uxi8>5x_Gz$p z^OPFr2Vm=@&#t`hl_*LOCPJ}mV*Wb_@EYbn^n~v*F~q+61XP)$y{^=KDcLNSm-iDv z$oO|9ZxqBT{38Ni{-JI^G1J74oxdl?XfA6)|wXQF`Nw ze#$bDCUz+$iXuB_oViCvX_3o?Bn;E$Y=C=cW2ji|qf{tIp0G+B#Jal!d=te{Pv^PvB0ET0M5H7Iy@dD!&t)-#$o>6(HZBOH ziygPP2!06*7IqBsR`8*0kT_zy{qfSPUgYgdy~U0XNl|4IZ?@bUTO0hG;Y3 z4-h?7+o9Dp0ZaP6A&JhjfcYgji0Fbkk>n!NO8P z;_s9io3Pk6{m21In;DTPWk%tM32J?%R?XJ}e2fQvq%w4QxOn~oqsvU$XK>P6gC9Dl zTsv{ilv$*On0gsF>dI9?{X!RiOB#I9@<&3Fq@UKR`NY9@Q3A>;G1jZ?TD-imm6!vi zJ`Cw7?D{Ju>~1UH==^##*{oM3*pe@}q8LEvpj%qhHt;z^s`Dl0-7I@{qy>K!ei zurbz_)Ck25nXTuU-5n8{cc*@zcSA4kCN|v1Ssi%e7a7t*#kYxI!6XcwSdixE^~xLR zGm;68uE|_GR7kF|#l92-QXG&IwFD7&8yeI)L_yFh%n88S@h&6M&^ZZ+;)o>oIW%6J z!mG*zwpzC%WY-|lfs8~d;!rc6iy!Yte$gyGrWMJ6ncAsvxIrY&!dSe{u++`rQF+K^ z`5Gzw5!3!*#8u5@Ddfobv_LXMD9Rl|!C|_-;f#P> z1c2vAadGZfKH<5zVOg}@$dzjEJb!oH_)xVW-mz>K$^dcxfN(d*{#p$33Tx`i)+q*MVd)t!HPj*=N35s+TfQd3YJ>-y=CEle=&g*^DJ>86gQOw#t$+Bl#97`JU=6MRGT6~k z8``frgoNKmRmyRe6nVQ)uybW=N+8z*4}+Aioqr^>tBoXvYJU1N@2@2k&K{RnpUFu& zltsEvq^`E8rRy+ed%;a+zMy>JRMz#i%e0aR*Rd7D?zg_#hZ1C~q|jKbE49{Ym8?2N z0Z&I229W3bjufynH>jpfw<(JcHP9TGoEtroqS80tP!fS@GeNE2fc$d?HL2A0gVpy_ z9Q5}-!!{EXd{SON(m3ji{M^XC`Fp=odNe5BL(U=E7nd-YioSRw5`8Fqdq zDbsn4uW3}N9q3(5Iyi?cmdg$C&^J^ES#gEeV9#gYmX-U+k}9=;=?2)9cVeI3J^WG5 zHIAzs7WsQav%J4W9CO~>zv!!4pN3&dn!08j_Eu5C*{Eu#V5CQu!W<8;xO$nj29+w@ ztU)(co4#lbf~~Kddr~;Go>>-H5XalLXWmXAz>+)rNB(o6u^Gs|14UprsD%kicn%Cb zD?q6Cs=FPi5+)LxXtqVJk4(R9pJ+-jsbt@Rl2AYMH7ng~02q=X+gx!{gf~(&-c8%U zIkb3m&$KXN&9~C#>lMk0JuC}5amOE9#3zPGdf9sx2EUhf#UJV>A9`g_pzn*{>|{?| zD8}f?&Kd?N(2Ev9)8lznP3K!lzb0KjJ%O=|?))cZNQrh$B^rM&?j^Ngw#)tugD{i; zZcj|*!A}OpTUC;w_chx@>)6^3aU$YGqOh8v(gwc5et=B$(HA$U3CDel%#u^Nh@SDeLT zPV4#Sl3On+Z<@}V>OHI6(}dz9-F#Nj)ad5-oBmm5P=SXav)bQ>b#F6MC_I2-3W~-! ztq**rz1pzmNf5yRnLd-6L@D8Fj9f-10!+swJ>zutNPz54}ZS8|F?Z|=0Pp&Jh zV=r;wF17tT7U-6i*1i3H!+D;@yv>5u7xpmH7UES30+Flx z`8(~Z8&m>37PMo|6l7P(wf^aZHt*HgMMK2}BSBETaIAXivB>+bqyH$o#3PVXTE`Tz z6I%9)XFn?_5pz-Roi8}B6oz#S-sbTyr*kJ%XouLb6{|{hm%!#Qs3Ft@7 zf5UE=S`U*eD6HM<$e?^}`Nw4afGDy7^PJLm0x~lTvw~Ns?9Ql3f*%>tXcc zUV?}PsYAWr+#j`F%X#vDy;S~O7c;{gfv`bI)boYK5+8S%rHXe9(y6*UN)==8$vp}p zF!2O&KXJ)_+ZKYN(=U14<0)r}u#X@owvng=MXi`~?y?Tjmn6^I5-ZZvugtH;kc zY?}no4EBtYVmk#Hn<)8{O|iMEu~L z7utQk{HYLb2d+4dsz2Pri=H?cM3$A=jNs1Ym)BrIUBde{gvrWV!tX7lL{*oK=YOJB z4(?6|*r}eqz#kTjbT_g8GL=b!^3;ayv-90ipEjPLS0xB9qxY+a_Kfpe6%5~1#D^>0 z+WxktN+kW?K4?fTpHXJO$61GAIW0ZswJ&%KQ3*lI%&38k&{;&e?9x|-Rk6=I*XU1K~7bL z{CKV=@+3N85?;)x03uUIXku8miH;YR@OiejrYW}yx+RUvJ`h3r>hT5CzjIxEPd25B zNxWI`D=*k{iKCmRs%S0LcrOnx7(h9HKJ2&;u(>EiD@tC&#EfuB6Z2&Bc}@MhhZMrF zU6&(|x*M2g3UR1Q>8AoCq24j%8zs0Qtcj)ccHC5z^YvI(yw|lpr@LRrrQ~LV*{63n zw^v{6nDgy}PqG_aymJDlg9b(RoC$$s)Wm#Q~I!Xu(? zGD(I~JUJM+#=jZsV+cy!6!(;O+B<6gLA!m zo#`by@6FrVh{*W!Z{@k2I9q-X1NeFI%xk5v;vD)F80!~Hp`OnE0Iex*} z<(I5U&AcP#(J?Fv+T5EO!}6Z3I<27I%h-q>J*_JJ|TfRk~Tni6XSt3CAZ8|C0S;>MwM}W33ML#4gTUc z{)aZ%$H8g*fsNx=NqU?!MqUS&+gR-j-$<`+;yRTIEV7Ns4OTaBxvrKoZbJqoJBn_; zU>pVKSZ8muly~S{m2HgC0)U%5`np}A-keYB7er~h!*x4)(YG0%e8v7bPJoZRgBc7Kjr>PW*v6yf%*f22uR2HAz)tSVjt<-5UaXA2wd#cB+nC2d%hXxt zT3f5HViykeQN^or3^lA06UC=2)Xqi^uL5@oVg6F!BJgdOPV`CiA|Q*_dK85LK7VD( z^F;DY+kT!A8X4P)EdihR(4cUy32k)NQFO^yhnv3Gzn4eNrPM1@5Y3yn=xkw#P5ckQ zMWftAH9C#B;oMrNMuW)H1y}PR)ime}%*FB+>XRE;6#!h{sK-G5u@6a>Vn!9Mybc5d zI+W=z;N%%pB{QZ3-dVFwQE7(RzVcDpUp^s zoXSP}P@S2^Jc20poBdLGh7oBwDJ11kR4?|vDJb%ltw)ABemtpn_ggSJ6)w??sfM!` zcSDn~8J@p22{oPHf&J;5?#2B(bec7LOR?_=)k=LQTLC#3Z}b;9n{M@aAN6Ue_`X<` z_r$zq&Ow)j-X0m@YR{gzU^P_27nkMWDhqR=H)2w^yYwmAbLmvHO#R*cVap8Ph)UOp zKkKc&h-3HC=Pjp5-8;vaEeU=K#1=;>QXH{dsdM0rsgy?eD;(*P&T4Z11bLz z90*0<`i9uT6(%nFSG+4oJI4&N$~;|HzSh)uJ81`SX@y&Mgen+(!|if0Bnjk!#7R0x zoYH41bL&xt99-8suN$t~&BfC2O*u^BxQ$i&*5~c3-~MEaA_0?Oj;Lz=`J45u%L#c@ z=(Hx};OOOu;z*+e$OmfZ9ijTB?JP#HWi3bWM2KwnF&!4=q0n?9m9-wA{{`GyG;LdH;fEHb)Wvg_FScvaTaWUd9+og&t# z7P)=Q45zvoMLgfrzA<}2B@bxsg{K!{+nxzNFOwa7Ru^ZmhMI2bV5YMXYj5sVx6Gmm zIf)EYH1d-U(&cwllcy#iCp7aW8zly?rmPt|^{2vTOTY98@r>00JQjW#H>Bdq{MONB z6dt#!gc2^}OilKF|ICdpg6Gj|r7g*xkry@+ANtM>-Bq#}LM{qyR?#xy^d zpq_DEeQ{S+8_W^PjI1r6hMNgfzbe%rdezFde^w9KkQ$E(>JDr{5|lm!kL>X+H0uZe ztuc^}wEdy47lqh*eW-*hJh12n;cPg@H@d2ah9fF#vcUbuELx3@shwnSW87TiQnwK>5`@a_^yurI9fm&R~3p$Cv{o4O_pXyei4 zCpqY|&BUYN@p%>Ct)?VjJmDI}%0sSuM@dG_@aNU+}@ZhPR#G)%Mby?;W>Z z|49<~%WaoX2^DkQ=1_&>mAR$nvIFZC#(#(fgJhd@>LOfj9LvE^qXg_ZxlODt|~ z=vyHIiJHTWgkJt7@pqdO6MZ=2iJ1;Lfq~LwbHoBv~R&C2R8O8uXB|3Si0x$?FB5{=48)ubA+=$?(lN_gD2TWyN!e|s{h8wY zYGhrqM}_9Cx5bfGRt^$Js-={sG||7HAL;{V$j>H-rK1Y`VrA+spXX2%Z{=8OO+YP5JJ*)!aNRA4g(HMx0tN_7Z6em)W`eLb)p!<&H~lY zt<|@4E1Ovw)H~s@$0Y%{8G_0Yh?I=!x5mOKM32cX#4PQku)q5(9}syVHf*?ZwBneV zVQtZ=VU58JT2+8Z-Aei7Fr1x3^(hlBn_d=C>QW-Y+R{KarM1W*Ef3I^JRI2EuV|DF*D(? zTrbIr^{ya1TR~!yWJ8%gJ3ge&&dnvhAXK|D*}FnC$@xtWtwR^}kQHYY%lORdWM&O% zs%j%%MY)w=c3Rdz3pS@;zWEuYhi%yrKeqn1su=mDCBxOTJ);~os5QEFDkXSY|mB|wD z24{&}S3~9lz(=o*0n8m7G14fD6)QiOt9 z3g52TwNoHGL-`;?C)rw*wg*J@ysLDo|L}3WZkkPyBFm~vb84P)F&JE0bSnN!^adW? zw!}j4RS0oMrf1=GbzJUP0Dn||NgB`1&tpbjS`iaq zKliS>mmyuh#Y}=hEYt1b_uIgBIGBU~VR=*WD-9yq_XU#noB#Hrt&Tdc^x@J@hy)`M z<^c4Oj1;%5VrpfI&4hjW#Wx~Kju;)8sWtwVq(Dqg!t-*SYF1JlAp8>@vJu=++hfp( zdSi9Y=h7Y95+aHm!`reg+~uEJ?)en6{vT7i(JfK0aJqq{<{S_pW{7n`DAfQ_J1rRZKLMn0pkr(b{*jmI$Mob0~Og~l%@ z1+Na_4@~**@s?E8@PmY@^U5HiOu@$ln00E{ng>HM*cac!c|tXXC?Z^?Ig*j;UFWu~ zG9Kfy7EY~Rr$j5`FUGCHu&)xuo(s3zo>iQ{Ro+eGzaFPW-p7v`)hY`AjeqjHL4XlpkG3W>>z^8BrDLlK z+%B;mC}nQh?p*Xm4_(sGpKBj_UdR`%e0M3iPA zjD)Kh0^MM$6I~j?|JD3)F@`{4$Qc0(ID7XmU6kljwLDVxD4n9C7MEak3If@ey|+o( zlkC>heotW!lq>O9PEq;Uzlf#I!m5*icp;CpO5C>5lPLWm`jAB-{^Dlp<=}+9SDN94 z-t}>MaYp(0%=jN87y@c!EZ!a&C5 z1H-s)Q%+#o&d$jo*04dqhE_=Y&6Xr)N1Bx`N4^NKEHLbKz?5dzT|MIVF)uC~Gfwkh z=Vw+Tu|)~MhO8f@46Me(nQQ4+pa}l0Xzf6W*I!*(q$9ftcq>d5ZV04jELQK3Ors0< zWAYnBHGeWyB+k&47^IxN@znaJPfpF#N>=-}Jip>&%m*(QB@5Dh;mWO~He^-ycx61h z$8+>!7y2L-qzBCE(Pog$X%GL5Gp5n}}JqBUD1x>jNEuODJcRvM( zN()Rt$Rs|k2@Q&Bfg_w+LY(0&)az&`Q;2O9?kj=!jOM*xop-^<4ohqEcTe)qP5!O+ zmGm$MWJs=U^3tHtJJ}9*8a6Ld`e#Vby&JrN7)*mMfQzjUNhymcaxcDI3e?mPpGLc$ z#$8Y>v)1e}P06xm=p&0k_VVHTRo;zf0X z61wH9mhZFOuwt&PN7+U|^}ZaYPoI0ij%BFLZXwZslo7b_nry>1cdmLE|K5slCoo^6 uVZ8c9xF_x8Cd-sQ6!0qB$8)qc*0;MqaU)^;6a4=Y2v`4)6)(zv%l`|~70prr literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.txt b/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.txt new file mode 100644 index 00000000..8714ee02 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.txt @@ -0,0 +1 @@ +car,truck diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.generate.sh new file mode 100644 index 00000000..e877c8a7 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.generate.sh @@ -0,0 +1,2 @@ +nim_workspace=/tmp/nim/generator/cv_nim +nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.profile.yaml new file mode 100644 index 00000000..a493addc --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.profile.yaml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema_version: '1.0' +model: "eevaigoeixww/dev/tao_cv" +release: 'rc1' +simple: + profiles: + - model_version: mgdino.engine_b1_fp16_A6000_trt10.9 + tags: + gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.yaml new file mode 100644 index 00000000..e07aa2f8 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.yaml @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +schema_version: '2.0' +profile_selection_criteria: auto +model: eevaigoeixww/dev/tao_cv +release: rc1 +profiles: +- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd + tags: + gpu: a6000 + workspace: + files: + model_epoch_049.onnx_b1_gpu0_fp16.engine: + uri: ngc://eevaigoeixww/dev/tao_cv:mgdino.engine_b1_fp16_A6000_trt10.9?file=model_epoch_049.onnx_b1_gpu0_fp16.engine + checksum: blake3:947483a55c860eddea37cf1d930c6d92ab4a21d33d7d1dbc4c75e2aaa53e188c + nvdsinfer_config.yaml: + uri: ngc://eevaigoeixww/dev/tao_cv:mgdino.engine_b1_fp16_A6000_trt10.9?file=nvdsinfer_config.yaml + checksum: blake3:f957d513dff19d30f911d6c83416e61588cb1f652984fc9cd164a4eb72eedad3 + nvdspreprocess_config.yaml: + uri: ngc://eevaigoeixww/dev/tao_cv:mgdino.engine_b1_fp16_A6000_trt10.9?file=nvdspreprocess_config.yaml + checksum: blake3:a261def4031c9a7f068ecf144c4285d26b0767b9e143b83f48ea92b75e383041 diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdsinfer_config.yaml new file mode 100644 index 00000000..aa6c12b4 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdsinfer_config.yaml @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +class-attrs-all: + topk: 300 + pre-cluster-threshold: 0.4 +property: + gie-unique-id: 1 + net-scale-factor: 0.0078431372549 + model-engine-file: ./model_epoch_049.onnx_b1_gpu0_fp16.engine + onnx-file: ./model_epoch_049.onnx + # 0=FP32, 1=INT8, 2=FP16 mode + network-mode: 2 + # 0 detection; 1 cls; 2 seg; 3 instance seg; 100 no pp + network-type: 100 + offsets: 127.5;127.5;127.5 + output-tensor-meta: 1 + input-tensor-from-meta: 1 + infer-dims: 3;544;960 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so + segmentation-threshold: 0.5 + # process-mode: 1 + # num-detected-classes: 256 + # batch-size: 1 + diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdspreprocess_config.yaml b/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdspreprocess_config.yaml new file mode 100644 index 00000000..195f72ef --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdspreprocess_config.yaml @@ -0,0 +1,63 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# The values in the config file are overridden by values set through GObject properties. + +property: + tensor-name: inputs + processing-width: 960 + processing-height: 544 + network-input-shape: 1;3;544;960 + # Color format (0=RGB, 1=BGR, 2=GRAY) + network-color-format: 0 + # Network input order (0=NCHW, 1=NHWC, 2=CUSTOM) + network-input-order: 0 + # Tensor data type (0=FP32, 1=UINT8, 2=INT8, 3=UINT32, 4=INT32, 5=FP16) + tensor-data-type: 0 + # Maintain aspect ratio while scaling + maintain-aspect-ratio: 1 + # Pad symmetrically with maintain-aspect-ratio enabled + symmetric-padding: 1 + # Memory type (0=NVBUF_MEM_DEFAULT, 1=NVBUF_MEM_CUDA_PINNED, 2=NVBUF_MEM_CUDA_DEVICE, 3=NVBUF_MEM_CUDA_UNIFIED) + scaling-pool-memory-type: 0 + # Compute hardware (0=Default, 1=GPU, 2=VIC) + scaling-pool-compute-hw: 0 + # Scaling interpolation method + # 0=Nearest, 1=Bilinear, 2=Algo1, 3=Algo2, 4=Algo3, 5=Algo4, 6=Default + scaling-filter: 0 + scaling-buf-pool-size: 6 + tensor-buf-pool-size: 6 + # List of component gie-id for which tensor is prepared + target-unique-ids: 1 + # Process type (0=process on objects, 1=process on frames) + process-on-frame: 1 + # Uniquely identify the metadata generated by this element + unique-id: 5 + # Custom library configuration + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so + custom-tensor-preparation-function: CustomTensorPreparation + # Enable the component + enable: 1 +user-configs: + # Network scaling factor + pixel-normalization-factor: 0.007843137 + # Channel offsets + offsets: 127.5;127.5;127.5 +group: + - src-ids: -1 + custom-input-transformation-function: CustomAsyncTransformation + process-on-roi: 0 + diff --git a/tools/inference_builder/builder/samples/tao/validation/pcbclassification/IMG_0002_C75.png b/tools/inference_builder/builder/samples/tao/validation/pcbclassification/IMG_0002_C75.png new file mode 100644 index 0000000000000000000000000000000000000000..db3e9010d507609c449ff4d112fac55dc9b51a9f GIT binary patch literal 23923 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

A}*nR#8gHAC`=A8hs+0Xb0w(D?+evgCE|u0CV4 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

r48&ZKsTkW*#uZ%(_{5Am(&ohT?3hJ2ASt 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.0.1 +requests>=2.31.0 +urllib3>=2.0.7 +jinja2==3.1.4 +pydantic>=2.0.0 # Required by OpenAPI client +unittest2>=1.1.0 # If needed for extended unittest functionality +python-dateutil>=2.8.2 # Often required by generated OpenAPI clients \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/expected.iva_0010_02_1280_0_181016_007207.json b/tools/inference_builder/builder/samples/tao/validation/rtdetr/expected.iva_0010_02_1280_0_181016_007207.json new file mode 100644 index 00000000..51f88eeb --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/rtdetr/expected.iva_0010_02_1280_0_181016_007207.json @@ -0,0 +1 @@ +{"data": [{"index": 0, "shape": [544, 960], "bboxes": [[572, 145, 579, 154], [774, 148, 786, 152], [808, 151, 816, 160], [776, 151, 792, 160], [809, 151, 825, 162], [144, 168, 155, 172], [815, 178, 828, 190], [770, 168, 778, 173], [664, 182, 680, 191], [591, 164, 606, 169], [802, 190, 814, 198], [691, 179, 705, 189], [781, 192, 796, 204], [197, 198, 227, 216], [637, 179, 660, 195], [578, 188, 605, 205], [244, 202, 287, 218], [466, 198, 504, 220], [407, 200, 449, 223], [119, 182, 211, 234], [405, 231, 473, 270], [597, 263, 658, 304], [119, 229, 263, 366], [303, 256, 382, 295], [520, 250, 587, 293]], "probs": [0.6682310700416565, 0.7375364303588867, 0.7767922878265381, 0.8113772869110107, 0.8286616802215576, 0.5089941024780273, 0.6119039058685303, 0.6735138893127441, 0.8091251850128174, 0.8171371221542358, 0.8241790533065796, 0.8285229802131653, 0.8854334950447083, 0.8866168856620789, 0.9132132530212402, 0.9219218492507935, 0.9313377141952515, 0.9372107982635498, 0.9400235414505005, 0.9541373252868652, 0.9582261443138123, 0.9608783721923828, 0.9614614844322205, 0.9626731276512146, 0.9630919098854065], "labels": [["road_sign"], ["road_sign"], ["road_sign"], ["road_sign"], ["road_sign"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"]], "masks": [], "objects": []}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/iva_0010_02_1280_0_181016_007207.jpg b/tools/inference_builder/builder/samples/tao/validation/rtdetr/iva_0010_02_1280_0_181016_007207.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ba3d1539f543dde6b313b565a738af71ffde2b3 GIT binary patch literal 114044 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 literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/labels.txt b/tools/inference_builder/builder/samples/tao/validation/rtdetr/labels.txt new file mode 100644 index 00000000..fa9b7005 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/rtdetr/labels.txt @@ -0,0 +1,81 @@ + +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +27 +28 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +67 +70 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +84 +85 +86 +87 +88 +89 +90 diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.generate.sh new file mode 100644 index 00000000..3484ffb0 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.generate.sh @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +nim_workspace=/tmp/nim/generator/cv_nim +nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.profile.yaml new file mode 100644 index 00000000..90cf3907 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.profile.yaml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema_version: '1.0' +model: "eevaigoeixww/dev/tao_cv" +release: 'rc1' +simple: + profiles: + - model_version: rtdetr.engine-b1_fp16_A6000_trt10.9 + tags: + gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.yaml new file mode 100644 index 00000000..4d65502d --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.yaml @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +schema_version: '2.0' +profile_selection_criteria: auto +model: eevaigoeixww/dev/tao_cv +release: rc1 +profiles: +- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd + tags: + gpu: a6000 + workspace: + files: + labels.txt: + uri: ngc://eevaigoeixww/dev/tao_cv:rtdetr.engine-b1_fp16_A6000_trt10.9?file=labels.txt + checksum: blake3:e50ee4f9ef6d7a17e8446eccc46748be8602629b9a4f729e3f959c80c7d6939a + model.onnx_b1_gpu0_fp16.engine: + uri: ngc://eevaigoeixww/dev/tao_cv:rtdetr.engine-b1_fp16_A6000_trt10.9?file=model.onnx_b1_gpu0_fp16.engine + checksum: blake3:a800796eaf366aa3eccb5c4151258c754ea27ddd2dfeb30844b0072bd9a641e1 + nvdsinfer_config.yaml: + uri: ngc://eevaigoeixww/dev/tao_cv:rtdetr.engine-b1_fp16_A6000_trt10.9?file=nvdsinfer_config.yaml + checksum: blake3:126064d8b7353208c0dfaf24ab9cea823bc80f772da44f6add8730840095a6f3 diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/rtdetr/nvdsinfer_config.yaml new file mode 100644 index 00000000..7b42b5b9 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/rtdetr/nvdsinfer_config.yaml @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +class-attrs-all: + pre-cluster-threshold: 0.5 +property: + gie-unique-id: 1 + cluster-mode: 4 + data-format: channels_first + infer-dims: 3;640;640 + maintain-aspect-ratio: 1 + model-color-format: 0 # RGB + net-scale-factor: 0.00392156863 # 1 / (255 x 1) + network-mode: 2 # 0 FP32, 2 FP16 + network-type: 0 + num-detected-classes: 80 + onnx-file: model.onnx + model-engine-file: ./model.onnx_b1_gpu0_fp16.engine + labelfile-path: ./labels.txt + parse-bbox-func-name: NvDsInferParseCustomDDETRTAO + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so + workspace-size: 1048576 + # scaling-filter: 2 # 2 cubic diff --git a/tools/inference_builder/builder/samples/tao/validation/run_validation.sh b/tools/inference_builder/builder/samples/tao/validation/run_validation.sh new file mode 100644 index 00000000..27267dc2 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/run_validation.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e # Exit on any error +# Validate NIM_MODEL_NAME +valid_models=("rtdetr" "cls" "seg" "gdino" "mgdino") +if [[ ! " ${valid_models[@]} " =~ " ${NIM_MODEL_NAME} " ]]; then + echo "Error: NIM_MODEL_NAME must be one of: ${valid_models[*]}" + exit 1 +fi + +# Change to the appropriate test directory +cd "/app/validation/${NIM_MODEL_NAME}/.tmp" || exit 1 +echo $(pwd) +# Run the test +python test_runner.py diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/expected.image_0.json b/tools/inference_builder/builder/samples/tao/validation/seg/expected.image_0.json new file mode 100644 index 00000000..878c383b --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/seg/expected.image_0.json @@ -0,0 +1 @@ +{"data": [{"index": 0, "shape": [224, 224], "bboxes": [], "probs": [], "labels": [], "masks": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1]], "objects": [], "timestamp": 30549489621}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/image_0.png b/tools/inference_builder/builder/samples/tao/validation/seg/image_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d716f4b53fd4a4a1a8f9167e406392271f25f814 GIT binary patch literal 224897 zcmV(*K;FNJP)&joAW*Q}AAlqnWe0q% zknp7l0>-iWMtaiFFB`Pd5BwMBg?dCLa2USs#*_`Gc!8c~syNl1r&4~8hrw{-KTC}J z7Gy&QN12qX31OEhrfRop+?UwblVttDg4>c^j?w)DuU@)FTeRS{>GUq;0AGE!x$=DY zCm&omcWLh*wB381znOU5RbC&gJfy8dA1DbE*?_5VI9*<5Lk)K8kzh~kcEq%GELwT)I|FN_1K+X3QAp?2S2s+ylr32MBlc0*SI!p@SFD5Ix}oTghz;;Im+2y+ zrR5e!>7~$U|C@Fi&(05)lQNqLEGgv&co2B`oO6m|Hq)Wq7eaXu;CPbgj*_G+B=lK~ zB1vp9zX5n?A*4-<0gcS=Wg`3dJ`f`M)I`KPpfYqrQ$l5Xsi0YLk3`xkx)MW&FA7|Lf@hG3 z;OwcJV!cFOJ{b^L2H@t+%?u>cW`&<7=WTFixJ;Nz1Wg%!r)K}Xh9**XS z;_S`_Il4szVX$~Rsyg`Z32)5x<>~M2%?j(Gl*z2PB}(00S!hIFf&q3 zJ-;%JJOE~(v7imatnYha5{z+e0zgpgVWma4m`q~tc)s~@0!9nTIXS=NA-_L7P-trD zeZIF+H5CH0TB!|xVveoMNT)92NAuI>y{8Ch_(Tf!q7>QGAs5YM^trNNG4=3FOHc^` ztuIf{$HP=(pTl{E_6462Wh zX`p>`8ElihwvPpdrNMLxM?EM^6wdvU)9#WKKZm0hx{=A%LYp#$)&6S>7uMBLS#1gS zn-Nt9&h^~~$Hq-!lhPH9WbJ4<4|i=?^aU)AB-{+ES6_2$i*Nk;bevxnUc>LD=N-qk zrY34-Q7n-bVy+|na5lqjn~u+bC-|5U`^N^2LVJCNtKOeqTZPigvtrhFzH{rV%?U$7 zLUGima37$ek&}WfDanngx-%@*#r}8pM8=<=x*F(mJ9w|wGanMT}j|e4I|j7Q;5vuSSYgQj2QXVw#od1SbTJ$nODF4NiqhdEV4_Bo~9)?}9WnovOgYGU)k3%DcXK zkUDE)H1K=#>yES%d3?{Ztz^VHmb);kJE~FPw7!^Ibzdrw)jzXRA_Su~S{YjqBGudC zM}_7fg~WW|tATX_rB689TdgbhVvs9A*5k7S@GY$=1-A`TNzR&yYi1XAi?ILQV)Cz5 zehJg_nLGL!k`v^B?juX#BoEB6Ky_w_K?tC7Gvs%TDMs?%YF0k(b3_$Y^^n3Gu(qr0 z3(=KNl-9{)LKTGZB+VI%rqWXu*IxejYDQ+M3*y4e)LKMFqNU?$W5vJih6Duz4w}sc zuz+4Tk`t;l%e#FC%ftY4`YxJ|T@AT=M?`e)d@dvcqd#2xo;wcVByOC)%3k*0yAQA@ z`_Sa$e{2qt{2>598XZ80KIRxBmtvTzWdR2k+(NOop@t6ZDj9ZOSeIu6sDX*%ViGc9 zVrKZ^TNkcwWR*BTXxy1vTf9*rgTWY)tSL%P_3Qa#8z{L6E_fZ!uMqLh8gY2Z?{tM6 zK4h``Gjn`3#_-tmoRYeB|CT}-Bm;rvb25`aU3tOfA|u^a88Sb<%FLz-SW^t3yfo{1o>68|L++R& zF0rYlWAu?1OO61v#CiUv%c_3r1RY;tJoC_sdleLhzVUjz4( ziD47UVN+Jpq=iOr66eDeY_xb!CP4-AZV(Ck_vf1~&>zILCrr#Rvp!s%Oh@6)eRnV` zCFja7^kf)qr<~R+N@6IKY`K zoVB(2z(!3!U`0?F&iY$FsG$A6rrE0*l}l|RW2+1U0Z;kZ!a+`7b`S@DmgyDBNgN>b zfqctnr?(dO5vEKYi{mkxzyTW27XZQm0@FFTmkm!il$$`AsOhhtf9`Kz$*5zO9>!#1 z3Qd&i$nvpgOxUsV&cWB?985MINZxSxscPqcZ^Me!gbE+f%ky{s2l4iFk6mjJ-_2;m zG=iG$C$3H%N1_0!;4k=s*KEQLRhSWBT8B%pGq{93?ui)N0u~z-VX0LT_my$?-Nq0o zrfHJyarVeX{ao$xRa6|AQEDCU%=8pX`D+NP=p!^fcFNgLowfL+@Nk@!&fKD;d5TPm z+*?S>_q9YKlia&X*bv9XC2|~QXgz5TN8Jc#k?h@)-u|LrD-Q;Xtx{*08y~apm6?v? zhpL^&Mn%>n>85KKWvQtml`1>PM;EWbT(;|E(HQLmX;WNOH*ZE>bvMt?IvLdezrP}A zoDxih&ZIZpMFcPGy*UcLNM^3s^4vnp7wTi{HegjYyy+2D>vFoXf8+@w&eTSH!W#gr zfCQoD7VXFlIiK#ksyA+^y9FBcWgmD~3Xo`wD(Y0GB#xpeECNrBS--S9r zeq71fqm^lr*G}bpZLsjov4W99v$mp1HgCx-ddZ2#HUh@}!b~J^_n6xSe5~8JKR8c|BM{v??F%Mb zDK|rhUk_v?wL~M$Xjuh*{tZ&>1sgM5^z51oMlkyJa!!JOe_x#IHr^P?lC!G9fua=U z&MnMfdM9zPh@mKz&Z~B^ICU9Vu)S`Ha6={<59;ou%h7!eQqASeO++9|uzKi10y5}r z72cnW{QRva~dtGFgPs?7B3UlC2{WwbAGv;(u}lN0Y>KxxhZ8U}kEL@pN^Rn7YZ%9=%pgd;>Htfa`mZof{k?m|iD4hutyuMw#MgLRkPDl3TP`V00I8kJ_k3h>g&^a8a%v zEi{U@OukB}iIQ^`^zF(9;YTZpPZ$1p4zr!XA8wESL918Mdrn6Y_7K)30Y0J)GM?fL z{tb}x#Yh1b^h0xuvS!Xh&J=X*5q2s!(jM5!mn0NGMRE_h{N{DJ$E`==7w`|1{aTha zkDFu!ewA`~NcQgbZUn@~c_kkadn12jK1y6&Uc(Uw@-fO{6lY@q$cy^TgK!Lravusn zYa|fm%Hg2yQMeX{6R!MjXi{-ANavCntUJgu zASCgn*}ycSEn@Z^xIx2Nc9=yih;mE=^DvZ@h z+dKl;FUN7gHiLC;ExK(#ACgq3a(BA9N=8?~zozK+&Yh1(fBm!XfB&!J^b$>IXeubt zQ8xrQ2sek?m}nU$xifSaI5&&PC?*2?TD<2?JYi0#PE~IykW{X3@PB*w^p8mS1$geg zFZ7jLS>&U@y|d_oLo$<+-STnYW;U|NsnVD2rLiYsS?bipNsOa|>0E}0S~Z%r63fmx zlaXBon5lx!X!%K z3FZUX%KN7Z+#VQYrN{@gcTt-i!^IhxFdzUhf;+Y25tFeAxhB_gZ}dW`DR(q`<$xM_YYdtN*cHf@D})+dIE1+Xa*WDAO>7`$*AR6S4aA@@)U~q z7HEM2s4Ou;q&OQdAkr=P27=CfYBsLToa`VD#p~?Z_))%f&0t3ll6kK49wY~}{^IF! z?QC+0PiVk4qKstqZ&c3fKqBuJ@p-^xL@4E69cdR~xv-poMQH#8 z&flAKclp6n=w#nR_aC!zwFq8EDTydd6wXG<*!8|=U-SCnLw`>5^bN`2Ll?pgxN0gE zmJ!DqpsB+ZtKKTu{cI2$8cc=OtmwqrRWOQF8%7}9AIW@iYi*#X1F(ycC6r~YUT4=sHv+C!6!B9985a_0o^7U zvTcAxtN--bSnp0H(7X)XMD%v{acu~8Pt!|J)N%UiD{HqZ<)S2hgT8pRy9%l}uA=yu zE7>>ZT6{}c$_g*6ys*6wb`?~ZkMmNI^7KQad3gE2xkm7LB4Y=dzb%A>u2OyQ2*`)A zWf~$GV`58=Cy97GGpC1J8H?>*Ei#Cx)d06e=gee9>26{;;DZpLfsR^~eQby?6%T?_ zWrGOuSrFvIjH73xXpXbp&8*W`Mm>zN*sJ4*)p)9eQ~GH-bIg+`BPO|1C4N1{q1~~{ zVFfOsEqJkmGdSHVc%gxG_9VEk)(tANgc@~h;q$>59|d@PI=v>b#0MnqrczoHcuQnf z4OAK*x1d{pB~cTTMbiMi;D0H37mqf!5Mp%IYSuUNZ!qyZD@KIqPBW^+qs@0+JQA#^ z2!;*;O!-(EhOiaL+46NqN;Wj3KeZD%cwHRmR5$Zb9H!Lyd0I<&ubV|Y6{C00u8<15 z&pEJ?X9Bz$omjckFw;k@Y=t>yXTUmGvgAP%`*Hq!C?Q=!N>7qiMSaJt+vlfHwUG#d zj5A=#iW++G(8B|ly}_^|+rNe7$zM?p+Xb9x1LkBr^M3L9k?r1dweSTJ5r{ptb`;6R{?YXt2q;;c5($P8F;4tq<5+Ai4%7qMB8QByV z>UFdd8%>^CW4<*(agatcbK%Ndg8C?xlVy6A60gM`uScc%c+87yFfoq&4~v}lE^#*( z-p&}a(X^DeFH$A=TQP=rBa?)4y_~n2X*xDZgwB=?7lIN zC}d);(KmRVU6Eb>o!a9_V~yhuyn z#68P!E_9U39P^i|ywBH&q zknB+EW5mdV_)I`q9TaLOe={|P8uG!Pdtd1yTDbixZj`dQH>}>j^034}c>1j9K=f>I z`Nagx|9+5B3X2|t9w93^V>C!Y?QnmnH-PnmgNd~oRnuZ|(~ z4she;A4^&0)1Mz~6=fhbzws1)3p*!ry){n3ufJ5c=1(U5;&TE!pN+fybxpZt6L>&j13wRdTWB-AhEI^_49XW`#VKMtQW zNNjX1M(^{5YC=cdnhPlH6l17F>*$+IDs-!zpDpqJMk4X4 zCXAPftGkk)S$0u~$Uz`-6`LA-X9DK_ZeOFT_9(UfkvG$h7pIMvIF({#<>z-dpke3% znXEJw0zKddv-i?x(=0PcQ5TaeI}afYxUUIRdgRJld2N5e?Dj+5o2q%R&0KSduGU)okZ%9_e@*<^eKinh2x5CKLc}LM zlsvXK8%?TwiMq=aGB;6+6}lnqfK6is;?r4&2LE$EB&)$UhyA(?0>-2{WgW!G3tZD^P+0ap*wHa_)smGfg_#Y$JC!qhzV8;w(O z)b6!-vax=U2P0~Rrllc&d<4#K1St zckoO8=Hk73*?dGmzWa8Lp9>=Ok?|M753XPBh@fuhnfA%XQjsS*p-^(>im~K)RP-hF zz4Nqm-9Mrkk}4AAN+>E833JXw=G21k4OXtBs_^bGS%49JA3^(JJpz+SFZa@|Eg!G@ z=WQ8w67?U(+5+^`gHKDf>-dACLT3L2A&~~1J+|OZx}V6RQbvs*Np|e%G}HCeG-5pT z&%Sn(-i*$s^Az;A5Ow3X^PZx7|KinBg2QJ%f3LT3%FY8m?9##Z#4f>;l71Mm^Z?JY z8fxps%t0ue=BWUv5rB}YwFHU=o3 zGLayq?sCGgBagQzgSk!QkB@tFphHWnW(aBX+<9EOI4I7{&5HV3AlIrX6uh+(C#fJ1 z$DWl+fWC?VdB$xJWtEut3fOjW1k-vo&a$V;8Vx^r95u8pBCUP zOOG~2naq{zj+nJ`e;7XRQ4u)Hd8~l&r#PZ&Ml*Dnv$zgA&3X*If`mb8# zB~cI4j@!y;zL>{(PIs7GH^5^E*YU*JupXr^Mq`B6x4n@55z*(B6o&wA_ZCVMwu%?5 zQ7-&$n8HJ5W@r5&yfuK49mDDnND99ToW3(|u;k8qFbI}z343a-Oqc@Z1@sj%1Ru4Q z6GswFb5iFq{TaUef^H&pN z7guX0tUTm!hZ@nC`$)7E?%(Nr@c4JHuO6VkDQr-+ zLhM8@cW3`LSW$c@eLek0{-A|iAPL+D$R5}k0D*>ERSva%OwDamH zNdU~41?Lt8)66mZM*zfK_q3N48wQL!QMzQz4#qV;v^O&PJdnt4)(rEK+DtC_(Jy5O z#IvkU(V3EPma+-tuo+7yruwW1q?q5?jdLA9$fzWV>+0dl!BBj}G zn#p^KkDf1OZBZR2P71TJHJz$4w*DJLhF$|gGSe3~I_wtAJZvgOIbFf!@&sQqbwa_4E? z?kfy+G2Vd>)o zz|Gy?1K&@iP_=cLM$SG-=^e5r@4O|Me>;>y5W~j%AC=}#%k5;s0UZ{=8_jZJy*NAf zwiR~KDiqJJb9R!Ub}EF|eZ zmO3ePKctV(NeL=-(WU7k#l!Csu`N@T(ma2*}9eY=nx3yvhp&}at67Y-QZ8Rp4cCz{pezu7((O!64XNDrED4N^!aK>Ly zLpKi#^L9-*AJp`M=dcX~XBlA9hKS{euUfQc;bYJwYj2K@Hb<~Y=LjluWtUwoAv=U1 zP(c>Z2PergmJpC#=an-wZx8rvy<8nBRx`}t3slk#Azkn<7R7t4Iy=gJc(s46HK6X< z_L_iWjmiybI)3jrnb8ExHn2LdrrKxJ0z^t1x4&*U_bz|IYp?77-G&vbeU{=@J>=kU zZ_>cWPb#?MFuV`dX9weg=ufQV`HT;F zY>`#%ZF7N1AkF1hDRZHAv0H|Mqlx8$3P@>#jYy(MAIU3tj-E%o3LvDMug|X@-`p!4 zF&%$Egf*G3ctWr4flD`9IyxBV{6`3s8@GlY)RYz=w?>!Yu-|`QvOQ{H{<0f}fAE1o zOcrnLnVNI_MZeW}+?r*u5UP0>K*pqyPI*3FWhMf?mqinGK)VV}QN!{(L%+KXe#I%U z9i?aPPgW`Fa>=oa=;xUPQhbT7|7{xcUJu+FEgUpKFt?zS)NL?!>_TS=bd~9K9-fxI zbaB46q7AwfZ;ct%@q-Bn>{lWYKK3N*?u}7~yf-8WeXM*)B^)_+-YPAv($;E2aasAXt z6sX?7LIUvK=cMC(J!xVDH z^99{3S_%=~FO0Lw@ebncCbf63fRX+FALJ3I|BZBbo1$&z^n7(^l*yn6P~EdlgWBv( zITPDNPcK({&^oXz!()41)LHMY@hYsK{nTw}QGtB#4@1E*;ldDnAkT1AZVqzNsJQs- zDpkcoGq@Im9!R(`fLuOlEuMh39#2U9Vo?I+$@ePi6;MzIg}#=6kS1knEit^l3G)ML(xvX{N2i?>OdfpM1BSG;o8!O z--R^I{(9b<=e@~KGw#c%GSGkG;hi=4=%IOwLf?VAQ#s{PN)h z=Ld!t2;R=r5gPly+NmI@;%?^8038nN6)Q@;9d59lY+p?Pu%7|$bf8x#f`7IG33j7} zr&By>CWttKu&go#2L>3B*jVh0c>WY4!91Ov33wtmw~(Z+$?+*B-1hP_xn$7RJ$&KI z*x`DbD5;i@8ys3a`RctD-*1A8pX^<_SIF-TyEKTPZZ&m4Mckh*y}R0T=1}Fwi8y|D ziw%d8aaTDxCZCW6C>j?OU_Pza;GPuskNyKyb_y;A&C4q60E2u~8YY}`1Etf>B~fz@ zK6;2NNqk*TSv_%?xIEKGe!Av=_!qC_Euwg!I@gSY2#+63pF6kpeyaw0=Yk?$%y{4T z2;$+zgj^Y`s8WW*`M<_$0~@Z-o(CyDoT7KOzLs_SPEDRIPjJnP4J_sV@aIsSB^)ek zT}?D^=pz!kB1wKHO7Y?KT6=y8+?|!U&hEJg?O+rTP7OHIu2FlOI5xq^a>9Z?JAk&c zbt3`_jYZ1?W?@9NqVLTzCzGa45Yyewn80}S=kk1do!PdOoz2^CZ603SV_DgBj9s!# z1IHfxSzNnc&-yH?&8P<}(8VwP`L}hbS?UonD$L51#l!JYdDrt4dkvYyhw@5Y5>5*3 z8K=s za4Mff2gME#o8JkSNl;hLpt?^z(w@!?*>zqPr2s1$i!}@ig2~sr3j_swx7%SSGh(XP z7p#p4=2}d)vkp+~d3N}l_7n!g-VEoyW-4Jtw?UWaBKfJ!-DHKvzxWsFe>Q>i?D2_P zrTlKUQcjN2x-)oWFECbBBe@M%m*t*UtS%njmNT%dx+7%2|vV(38p-(-zBzYkn- zTVOdYrtq5~EDv;wwwTF38UxNiJ-eEHslNY#bJD!t zTWw^Pf%c5lkGY=P_-OwxN%H+W!8bM3(4aY)Km24aCk;d*KK}r@KCO)T$EmADG?Qyt zPl@3dHPi++vAy{FK4I(-0dcj%xOxwAK9v4y{s&*Q!UM-9QF<-SM&AzatUn2tUfaL< zVj_aE*`4H6G78p$CKWreE0kW*FdC%(=GWmvM#k;_kp$c|C&|sL*R#ij$!A>Rf*GU> zG1j&-#G7I>+m&*YDMRTEzJ2$JDlZU~oQT?Cv4n{ol(fUs>`(QK2_cI{Gi483a`nJ^1Kei|@?PrS$g9arkn4;{{*1^0fh4&p zdNw_(;AmOiPh`A;QdFk%l<5oI)Qo&E(SSty)mnI6e15ZQU@(kZ%rg-U7Skdo<}NOs zFt_l>PVjAplDP%j7(eW-#EbzEYnUE_{BH}RZwUNE10R19n_RYdcBL-NE8?k{xm>Ls zQkf}!1`=Z)SDvq~kS^OVFXpZ|)qDK%>bdn0EWMo^#ZsfVo46U<7bgHRW1hH&mmh2k zmwq_k{N=ckyE*!EfoR%DvE^5W!$rkdbe7}22yL?k zU^xAs2laZ~WF|APG+}wo6XK?krZdILKC6$sWdvtWmDpWO#Oh@vu)4kpgObZ(G&P;B z8*elDYwKf?=$N|P1D19;2&O}H?ohc_f|u{v7p_KM+?XpXcdsk~c3>M=G*I@NuMlYS z_pcvtU;N9`+W1z}X7IMv6SDQU)lRRJ`~Jb=_V$x3679P}Xsg2V;@YMl%O~B!w@9k| z7&W7G%ue%+Pxg^tn%i{Zzz1k%Q*&RStSj#p=_Oesq3gvN3NEe7VVxj;})dWF@yOFcK;q-+n$!{L^? zD53n>s|Vw^a|gO91&pD6csGc8nS%i*8hD zcqP_wh`G}Jp8Bh0m(38%MfpmMU1V}P$LC_2Iw95~Z2ZDaQ-9d`SibS8Z+C945q=k8 zr-zyB9D$Eo*)?Y{guT>;1}?p=wdO>Uu)|c^TbwW@qz&GLl>&yK%v<>r{M!#3PFWO( zvM{}weZEmUpooY#j4poikLIai)&=(c~m;$qqr)icbO?T|7!{hZldqIDx8*2FAw-fhkHz{M!`Edo zxxjjE>SC+bmL9&))KQgp-UH1FGYi0^ch?Q(fofT!I90;5$=W9mRnl}{_1LoyCT&%j??1|rh933M`apc>t2x?xM351o$ZuiRi><1NZ zpK4T|;QU}!R9?Ru+Cwh&$q*Q3%YL#0q>sQKAN{6J{e(|K-=&haO(tGv(zE&{$F<5Y zktN0{_#Ifgasot~M(;l)wXm=keK5CO53#c%!tldO5dIb#S0m_FXQ-uZTMEYE3NxuU zCIk7ac^v$@T1sth1X;j_UQDe}N!Q-`G>?=B0a|E|J<1;_h@0_O|G8{jPHPfny*iMa(df;nda?-`a7>Sb}h!b2uG0i2n|(6Y>>&pvHxy+ z4N8vi6s?~XTw6lF*#b1v!4lDR5r30ibqunH_xyV8I=^;ng2(sg;^xR$M+-LTyGX*l z3}rlj!#6O4MSIm7Dlx;Cru*dysD3HdLkm7VDU}znR5epBf0Qszk*T>!mL)iNvtrJM z7#lb5hx0+y4so#5B~h=4jgA{04p!!0K3Z!1*F~K}jcEScPEX%iC)0r}KbWDt?^oX4 z{;B-!tA~%E!7apP`zRF+foxy6z#3q}aV5GNio@7Ep&S&GU;X3}NsT1Keb5dqX)xN& zxPV&KFNQ-Upd1B0_%UW?SZwv(W||+p2RpyIn8m!hXFblE+ggZqJ&2YeiJSszX;oXDFrDAF$`wrxIM8-(F)Szx@2Jy7bZE=qb&;hVxg)iJ85dHofNwY!8eM(u;!{fha5mYw0nHVc$rd zUGcB7QbNwtUH-E~0ij3qKj|Q6Xu?6bV<0KF&FaI$rnIz2 z0B%xxE?zl}(&!<6jj8@0pOq@(6QCf-j7J)h--kFXl<{3lPHR=}it>gj(UOT?5q)lr zqv7%qiRTyWR>qY*DCr)7pq-5yP8<$m6cXY$9Con_4PTQ;6d8OzFy1n0QUg&GBkXto zi9flswc+<|TiG8J7EexueJ=TC3A=1NW}o8JK$F)sQ)$JX-ZCCe{N zL!-FV089n}zGXX!z1zYk0Pt$9q|VliAY5l!Z}tU_yA{q$YjqYu7YgLhhky}aeF`tuwNAG&n}aF;4yBoV zB7RZj1QW{4D#&EK=p$RK#p;r}cXE(w_}4nNDXeD$-1ZUlN(bFE0mU8#5VWmzvn?;W zE|)$VNs=q`QQfB5F>;Xjs9!AA1uGrv$Tk7E8! zarC{HRYM_*7hrPvRXp?Wb&xE1nWE%!<~7ktw0oo);m7r4`aTF43p@nh>-)R*>F}vx zj=s~bc7eD@E_l~YsNK{9ZP%CDn#jCS1V3h}Yv!3)bco_>B)Sy!HUf4DfvONeXmF&G zKJ+do(oS^O4a_Ax_LV5?u&GYTAkA(x^-bx3xNmO5CSV_=!_YkuIN~jwdJum8ek&Ai zKTs1(eJ%viOFVrH@GJ6wbr-YjiJaxu@!pgHKN^JQHMaF&efaBj+<~}_@!(_o_{-lm zRL%U}^}PZXRv1m*SMHMDs(@^rbvQrvn&8Q6Fjja2@Wh^3HYRPTo{8Ss-ri=;(;wXu&;SF% zVfbj65n3&BCkm6Sh2CD`tL!o}8Z%Ka-O29T&Xz7QmtovoUcKII{F^q@n@_o%db3~o ze$_J`mU4~;ev7o7T4IE5D=t1N?CFIT61A3{zh6qSICLDZbj)jnv6uMH4fWC6Qi{^= zCs92Xh~d}XZl?{fJJpJGb$g3_z|P*AL9Z0=*)&lY*sNlPS(h646d+m~FXJi3Gimp= zLbjGQQpht5qGk5+Vdx6HClX-7sHSDqhOgDl-O206kAvN{f4~a>Lmc|kQ zCw8}S1yM4W?$-X8_{Nb&d~$i)S@g-W_-5t1eMCqV63gZpDZz8jQlYW`*8Kkog0Ch?4#Ysr>AkJY^1j;l%=8!lgMnLM zEtXtzMT%l5f~V8d=?CaRuL`~CMNb!@Cq*bEg+iyJczZ|Dh--j_H-qur)2_O_ugt8h z^gdJH2QkCizS3gaPPu(W414G?>pIepSL)UB_GHBmz6P@xISphpO-oP~RJBiiJw~B@ zbo2^<4RiDh#Cyi@JbDCd@1#$Q-qxaOTE=)Db5mK# zmaUiNkuZ)tekJ7o<#ynjZ%g%#)?;{0|CI+Ge6@Lw3x%=+v zX;!y&dHe#*0N`vb+c?W+VcJ=I`fB~7y!y&H7|~f z;5*lW##IQ8{n~|lQQodPYYMUG$@a&C<^I)Q=`h{U9x(s+akt~F+q(BKXXTrM8r=No ze|P?3??pdHZ_)eF^dR~M!GtwhRduv$Qg49Eh_J^f6Q!;rlX^4*4oV_ZK?a(%#EbDm z|NI3%AZFF>J9}U%Ca;??cy{q}&%y7{QOL+K#A}uqk^6s{LDT$Wt4VHO-7x9Nxa!~k zry|B3jKl@@Y1r}gzl4jX85RgnFt^664AsI^v30)!wZ2qWuyj}sn%{3I=m#qS6T5A8 z$fO)0+iLia0C#@tZTUCLoe^_q?*GL8Cfc8Gns8FPt}|VHABf7~Ar!V$L)=?ttRENy zWTmf?*Ue&`t5oEhJr}8V3ojEI1+G^h`O}-nq=W*#?t+=g#gB_lyrVw8k7MMs)7J-C zA7Y)$cFu)DD4gU}gQj_XktYCZYv8=pTioK&P29XAV)|=uyQr34U-0`y&Ea+jypO)? zXVi^XgQu3R*YTP1z~UK|nvyDHr^!hlhXey>7?SS6JJ;M@t?^`8fZ$7#QogUmxBk?9 zy12s_IK`Ci^iGxZc7--@voKrC!jdX;=>zZ8we`RPUB`?Y<89_{rmVhW5SZ`p#AkPq zJMm-ittYuZ?0(<~1p%V0OGg?WQJi507J2L*eBa{gL?kkqYjx_qN zk~ywHLf8%RUjuDNSJo<{1%v5f8}rMJ^>$e&q4SS_7@LP*y+yu_gC)YV&rjSxlDl@% zpheYvc_4Yji_1`qiHPZZft2GLYEYTuS1XdbtFb^ZVK5IOmc%RjgZGhx~V7?nw}Hx^FoWZ`(|Lsg8d@K9nV&c6Kz)WkNp*$lFxu%L#*b)E`l)!yjV zTc?-+3Q)E!t}N5uH`~D~0O^grp_;8i?wfrWCC@%O>=Uzb8g+7_^QuCQiBIh}5Lm#) z>{T~>5JgU6FBzZ7eHPgYaC^-%@!~KYKm7UwZiLjU()_B>i2q1qaOD9e`gEYs&C>KM zpQT?kWb@!V`;Fu#FV2KU_CHhrtu1Qjtty`Rci3zVv{cq;hmS!zDdGfz7&}Ic7GbWA(Q)8+&|XNggitijr0_y ziDF^ygxg@_9L7uQ5U9>|BwiO>&vznP+CnzVAnX~yWzT3bAEv2NA^ZEBK~&k@Pp~)Z zS1ch3?*BI~Nj{ENmJGLe@X46pja*MhSEh4&)+S6{v*a@JJ1bihs1>xU5%pd@=;q$! zcCGbJ-+h!lM#UIfM>mxncy;(xw<^u$ z3ME`^;rWl)bpKhm`ewq6D=nJb{PBVKzdiQY>ZFZom@=ck z*aoV*8_uM^3#zTRQxSE3qy6}{k94e9V<{^5!iC7p1k#aBA(NDVbIl8QF_wr`eB+nv zmZz7KW-R&2@mXBapoDq-vHaOqp3n>ly~|iBe4%mCu&z=UI*EiD9nOMsY zXT=s~^zZJEeqNkzsQbiHq0sVLKR2=om%pv8j7JqWyX=A8468t=ukQ#d=$YiiD!l@L z0a!${vve0LOa4}#oco#cVb?cpf8Wt}f-Hnw8^Y@Dp7XtozH72>r4_`WcZp$fiPvv^ zVk4c~ZfV?wqor+{rRoBbxTlhnZ8@h5_j)?sq8@m%8bGcIYPkZ1u*?5=a!eLEdfF%4 z4OJRi$2-bZ(OC?Rr9tT=koNkyUcct~unxgLun&o6;?8yW@U=euoaSeFKY>#rETpNh zD%SZfzWd$q$7-UzcQ0QL+2Cr#K8nXz#YNEm&Zr-|^6u)a+$>r>2AV|;6i>nBX?>|y z3T1UG%%flkg!Vl%cYlP1y<2|aJqptQ=5%U=|MfW%O)11_6}a=-3)YH15Z-|$%#uJE8aF{%$phjU{;%ayXPU*L2b zb=7dn(yNJA02|O}a|99y)u#h){qTnso9ymyVcuq>?Kz}M74Ef;IneHr(J*imTRR6! z<>V*q5AkYVTXN&+&*lZ-`_~^zYq^|3 zyiH^{+8lsQg-aChW?47x0n1A?EJV{_jFoor&tAvKeQ5}=_8Mz~--_M`7O{-jBCiiV z%P~ymaG)ttadN8|hJHjt9`m0^_0i+S%+Z8NNk$ss2389^dgWE2XVRVh{kiI(`vPSl zR#IMo;j^@e1gV6v^0OCbL-4ECiXrVIeG0lfQMUh|!2bhC*5cw78Wu#*NB7)JMA9#j zEaKuh!f%(7z|O3=wRC`6`RQBDX$AGjc*W#=ghIsHZ{UYd zcoBM2u-5kkM>b__^t9(f z$RGa}$6+*AjfxLp^}s<7%&B6zh_wED}!3mGi4@obrInHI2REfG&MxdO&wPTex}GAzSa~9KQ>21!cX^ z0HXClNL_*OFMO3wkfQ72%ZL*l@Jz0YKRnR~EAU$}o1P5e>WZ%Q*Urt5^OD` z>6)owNmkwB@4)mwX4Pwk*#Z&!4cG8j2=L)NB;RyqCf4T6V@s2^1#DWJQq@Uz2ZNP` zD9_d~ZD{lqQPE_D2!T1YJMk3)*55z+R*5i-F6L^hYUEq%!({pS$$K*zQ#mhEG=h#w z^XELDRZCA}3~l>yjs;??{n?<35cvP``n^95x?{O&Wv6AZZ>g~tF+T9?t=^_LXSq98 zLeODcPj3pxN)E@4q0jA|yw;`ULR<#20F z%n^(-*ATH2(YcFNapS*TnNNP^j2Sj%ENidofCfkoNM$-zapC);o0 ze=i@VS8*FK$>xDK86vDJt~@@_$flS0;hXHe7tb6**h7l1;r$-YgyW2D2U8n_C!)3x z;?z|4rEm)yCExGAnXQw@%Xb*iZK3`--JEg78*9^awiZd+3DIbudS(ebyt^SASv)X< zY^WL(#>echdB@i&pc3{k&b*{TZ>tJ->sN6aQC4M(Q7h2T>DYCli2v=YOQ;Nv;<2nn zLW#$oS;~1oD$t|oooT(s3+wD7d*Z;l%W>nc9Z}1frZASTz?s{RZU@R_@ zlR6&vgk>D<1ZUt*t^Hhz$vM0%75XJuTaiPjbA?}p1&z@N#9KB>t$X(C3HE_wW5tr; z;o?P7Mwjcu`~b%pU>UBxWLF)ei^3aft~^oVxEX{fhGmFknfRcX{@ecBKj)tL5|JRi z#{5audVx`hpPl3shXySU0!$fCX=B~^DcM0@HZ(gn!^3VQX{>SFgebdn<&|4q_xj3w zOPJ$`kB}2HW0HE53%~&r_o28&n|dP$u0w$B1_7k~EuchpGxvI%^Hna&4oUuA1e^%plw6YHz!~e|5cDdZ z8uBXG)PGT-ql{wIYyYrLpvpWn5=ic&drf@2j6a5F6OtO}#~W?uEaIJ;adhMj>{f7#vp~^2_-h!6nuo@A*sMCQmM>)FDWcP)bB@77nnI{JMOm zdAEN&x+Aj2B~3XOfbgG%pN7_ot?Ddp?QN}^v0`Ij5#D$dTfUCP4JYG$&8*l7o3*&W zqB2b~A$aIw7?JpPA{lj>nAJP@HVI@9gcfYD+`ws8;K8uDYcZ&6;t8eRfVsg6NIcAv z9~@d5Df42@6fYd|_NAY*{^429wC>KpYdP8`x)iver(evcbSTdKpdg89Id!`9Zc(0t z6c4`0FFAH=EJfvc#bS?&JGM+joJX8m6-lO@)bvi#6B0-^H7(;o!LxAe+k`-Q{ApML zemIw_?hE5bY4zyH3Y~re*ACh1FeuWs>m<>6vCGgY2|LPL$@iHj3T$`B%O1y$LdV)=`p?P_;C8%C zZ5=2sU4-RN{hH;)ol3c)DV<=o-GHSJnQ!M4NT?wOwQ`92p<%B8TxU-ERRmlSG#d%7 zuz4wDa#jQ*%%)fy@hr7U42pi7Juj3%8rr0H?nf(*ppC$d5mnH2y+P+|>wTt637T7R zWap(;vb8H4bn)X-E*wGC?7i|zoErCwb2Xd&M~ztL^C);#m_cX;f5*w&^ChaSCM@DT z;Eo3ga4<5W?ceampowj}v6auQ&F5G+fs{LcBSRX8BiWWS&ys^2L8O^6lWU#sO^1d8 zH(Hm>V%2%51tOoH#L|S%Qedpg^8V=INkxo$kL}mlim8AARXI!aSuU zM}#qwkVv`pz;j7XNVHuReL_J_nbiuBYtfRPNVOpCPhQN~hc5il+2!mGw*+AQL+i`6 zNa55K&Hw9PGUfec@*&$3+0!|*tv^(asZ;QR7?K#V44%YUe_3SN;fKnVsRp47!H4v z88>ynN#R_PX14Tv+5njeu%qEEVx1Q(O()`#v@y1kTJd3ztX=gKR(5>NL8GT)9a zy$Sv}DD9|6BuPnQwBhuD@ErB#x$DN!i&w%?b&ZMO(ihRW6;hiW6RwMQ*fII}ctcBg zD)0nC*Ir1DC!3D8Mw==^&xhF#wZ4ICEI7-GhA7;+QeL#nPHZ%?zv5Uff^jV+W)!@2vBo9Y{%d_tfN>R=T*%m%AA9 zw43izdhyS9BuUy#wg;fBZToU-L(0Q~R=*iz0e^+r28F zE$}LlOBoV@3_GjH!st7qD-|x%^cvg<)q+9g0&>$sxTFj#OABGesRZPJ3E#T3Y_qd} zk95DdE*w=sDTc}@tPH--mYkH(M<7r`6pRlH6YL@$C`^cKZOK*Xba_zih3qQHNuI&A zYk=HweoJl^IUwVqDDdZEjfB8)j#mwBnx|l9eOcL^zkbEPTN0fc2FSqb{Dr>1OCpp8 zl{6xaxA^q@L+W<|u|{Kw^s#E2srph(%zBfm4JJ8oy+DuA11PiQyWz-f==|Ki!+mjv z#A=GO5;11xuL=!b5R}!le}_GHON2{{sQ`Y%rQ}L+J3$w5m-Y{60YUfZ=2nE2?QwMu z!5SVA)(aOl^X=phHnZNbg#)>q0~fG=*Tn6qYUV3>+*vmx+`taT_~I_`oVs-mcsP5b zTukwntE(2-xJ3y3!pS;^>1756G8us|0uH8l(H(DAax)PG$~r$n{?U2sgUKZv<8kn3 znfUi-d%(7NMA|jv+vh|MHoR2vhkI2p25e{diIKTD1U_MqZLZ}iLM0zqb#(4jiPQAg z4Pd1Pa&uRmk2g-KwL{I82yq1ZQ>LhqySkt0j{zTv>%Vy-e6V8~HCh3LbwpxiVX=X% z7Z?U4yP%2V8xUa2#e?H#pQw9f{QfGH340tn+n1bZ`SdOk$+$mfD&e}d8O`{joo=iy z@Imd$jDgSs*-B;*xlE2AIM;d(QQMLVK$))FkZ`<;nD|6XA@G2-4VXseXT zfj>00<>j6<8lk<3*K~y_tlZhsEFLaC%r35WcTUgb_qB-{a-uhR31`rwk66vOu?Mg!h&qn{L-fuCqB8I9`z_&lw3*~QSd^z0o7Y}; z8N3HUK^vY2!3Kit>fQcAc%OyVRS}tu48UpUaElj7XhDniwmxT@?8w{K^*!JeE*lnA ztW($h<*r~Xye?L*L)c52F^d}zk%)1>;x@UKp&5;}$T5UOYzS5s}- z!Fmf&_ZO|BJdB~7tI5SDD|Sy>!`3%JnR8#-In;DkP9A z4XZ9N@F&QeTjeuL3)DDc?)p#rY;`sub{oETZQp`7E#t|$eRxiVGq0m~Z^l;9fYGF| ze0}?&HmMV*?c*mY7$U*csaYymp}f_s(@LQXBXAcJcHY>WKh3kRw0jS?!B{SC!_{+& zn0vsXWyWRCBar#H z;h-WYK+4JjK`#>?*(oe!F;=XEMmN2DOoD}R{p@ZfYj^)lQ{Gpz3Pp4Vh%GI&46Ka>rLk-4kcIjG`XE|M54O452s_t zB&ga?-E}TECd``^^#-De^zKwKj3#)lhqJA)&zfUChw!eAOR?@bV-h8nWznr3j2Evb z|3&>BbYn}yrG!JPGV)yd$Xz2}-;hlCgam^)MJHKRALYP*zSPU9@}r?OI)6Z!{zP064=bBH zRWEM9=4HT4ubHDf)fxYOGg}N~>fnBplkn3T^Zl5{XW2HXT`wzPfZpj;qHP-s0K1Zb zil5>0n+n^x`kaLAWmLPfBg_qt716DY@kNr#Y=`ouPiInF+O92!$h2Hj6takjt7Oz0 zuZ<+14!gpiJ`n!!y48@kt&xt*WH6xb$fs!mfnd9a%e3u#t( z3|5H#8i302`!h|cXH@>Q2JM7B$ zj$SeO(1)KUG?Ni@(#OnKLOaPDFdu!d9~H^Ex!B4Fmg*8ZBGf$Jg2-$&PgZmsOuc0+L|EtLNPf=nx;i0Wk$&SuXUx7<*d8H>DV4 zurm#9RFQ|xbASvmQX?7jyLDAS%|E{Wd9J4+zb<8|LPClFU1HpZs*AV|W{?zigE+F| zaj%d^87`{j7o^~(EOs%AGto3=+rQkm&P-V*dkelFMN% z!e-)L3y;tqS@KV6hGx1`wAr*yg|_X%1&DMUiePrqQU#kt-wxh5rek>AMg|b%KrT!x zKClQ7d=|!1b$V6;kbqr1VMaVA9G|n)Ak<6}ROelqy6p?Rq?UwIR zTV2>B7+l|4WpG($XEUqu-m(w8g={^zM5b+Qy}RwBY}~Wr9Hk@NiXqj?ojT>YL6!v9 zJ-ZElavq^b-=&JaR`7;Lg~f&`&zEoAp#h%0Hh3D%$cb5kylC^sd2WUO^l(el7ARJ% z-#*TYV3Q@Y97o2T+E{CL&i(_tFfT!FWSVvBya^6Z5ZsTo#H7!elNT^hqHZEsz^DQEj_SnCYkU%3bgeqZyM<06tO^8lSQ|iJbtJ^TD0K#*dXJ71Sxgj*oCI z8T|cHoD_c5&|D*x1abX!4}T{|XEa#K5RFuZ(bv+?przhEaHnt%(AGrL><@>9VC=sC z00*GrW{quuPHv-*bwN%&I#K}$M~4$OvmjDO^F*my;zqyu^e=ysEKCxN%N+E%m7=12 zd(ZsxbOpS#>w&#Z;7c`1#+IM2+H}&p-0#f4O9g>vPKKlQp_b65<^#((U!z=r-)f`g z!TtoU%Mvstc`Yq#m%GLbd}kZVd_;tCmWJi9x3NeBT=_78xfF=#Nzu2Z{cwtFPt8Im zlsSdK zFmzHvd6M>5L}`rGV%LsBYUN2RkDNz`sVRxsVpSl(hqkhCcuV0KEYK=HExB_8;$RZ_ zwwzDB>je{uj2q)BlLsNc{-6{Lt|{uvO^F46H-GK1R9WqAV3sp1{D3t8jemO|XY?&S z^b#ze!&XKb=l}p907*naR96s+P`$r3_6NCt!;B*>6y)g3C#{nmreZ-5MmihZ&%p0r z6YroIEuxzu5+@@a6P&r`^~ijEFT%(+Fa?KBrPZ4tkXt9FEO4f_^3GUGpx8#(_y{-h z$1UW$&xJeUGw#UgaU8nvQeX%23(R*fNaWyW-piiCWgLaK`pc151|ah~JP2R8@9hok z}za1U@ih7p(T38{vAWf2YmuI!vsm;Yq<>D*5%WLPk4fdIO+G`(p6;TdIKv>P_cEM{Brqj!eoVIaLza zn>3H&G_C53U|{bC{q1R7p^r;xNMPnxBpTL&D%CwFQW893}cZE>4%!azM*4v_l6if2M=Yr01`7@PE#3 zaN6`mWa3FYH%}!I2T=*fTcAlq!v$P`PrMn6BgnV^j4|EPzhOp553rp#f)7quvF3rhP)A7&2JV( zJK4=PP}#rH_;>c;iI(p)sK|+79w2)yAMUOv392d!56dK~}s#uOK3$zw7*&#^$d|p1` zsMRI%Y(um$BIKT-WMYe}A(0#@h-Ah~4ShBIhLIg3x5Gf_6 zsd!LPdQ=C7YV043-NZ~B8!OO2WUDAwXeRS52>~fMpAmGFw%b@H7&F?jntWO$`^%WB z3ujAr3;uVYiI@b#C2L9o-NK!y4~P&)E;9l_D9wjtxI|vsyOj2a%j$4Z{L{UxI&ryG zzlU}rx<=55&qZj!N?ZTDcf`e#k>qlVzF#V=dU&krtLWq*&L(P^3x*K>RsRindPJD6 ziS0xGJZk|;L?pJ7?qdT|0C+iM;en8?t?AMGsp8=EjF3X!SSmo~)zGl-nQMXA3hm(W z<=rD6ic!q8cz+S{U@Z?_jXP-&vXG~od$+3KZf_(>y7?^Y_{4inVaLA!DI5O!qAXVIOSiTM zP6~nnS3E7X;RZQ9DGwBzASrmH=nFX9fG>aYV0`dqx^b$-r2>oN3BdAbTG~FL?ybUl zvW04?Q9;$U@6OUdg=?N!&H*USA`3l(vy5DMJ_6AGBsHhyCg^W+utRo)9w?0HvJac9 zEkp>2R_5$#s(Kw7$`OwT`*7gR6OgXOP8d-DDiO9Fh|~z7w1h|&`4d!Q(y!50TCCdu zFb3)fNKY)l1^?R|8cfrYH)L8=>^tw4uSQgsmlsPXdV^T!D!B+pjhl$D9*^$bTp$0s zp0(5=xauWE9t)*B%s82l83Yz&XY-ma*C9PSGXLqa`j$Pw@K-Z&x5l<{&nsa!!y2s_ zff9aHRfpSL!~CtWzg>%@zqMr<^&RlIoLfEx;8M2m$N1g+Ix{hf&O-%sJG1oV9vvB5 z%8gMP0hF%xgF zYnm?Qi7a-zt^@}ndunni6-^-CxymDbhD3`|7N!)@rZL(%>$xNar$5jO&u4RUo= zXoFX<>o&cx96AKcs#}|{fp}wgH7ejQr;_@5ooj67dhxG0^Hx#8;7nRiocTOL$Z7$K zn1!*A!*0q(F~`#WV3tU>HR}mGn{9`MikMFYs%2(TmO-JBc>uEPdUs0%wY98bxVRgz z@V5x=iJqA`(C!hDA}rstC@D^;qWhVX1IC+*oXVL3H_5e3qv_?e#?7flbu-p_om+v; zFp7%ja0a&=2RSJBH#?l^ga7?T2K$BP8QByXu5!a44`;G&)~V@r@Mq;0ou4E#l*g~e z;rhk$;dt@relBBpZ#8%s-Yzj=A@9;=k>A=lzjjwIGJXe)5TqXb=KI_CRmk6Z*V(Ol zrvNz#t$pV;krKS=s-=69wk8VeD~z89J^-l%wL}T1{?mQ<>MI?U7&4uPb^dxRz&@WN z0f1oQ@ocfE?jkVFhW^@cmdHo7g&Md7Pf^PY4EJkq01GVGESa8OdbS6&0kKkyhtP~hn<_^ za>Ecc#&UCS^j^v_01P|~hje&4d;9oyZi|UrcUnYTp05D^a8ZO-V3oH)XuDrlVUe%E zU%UdMBqz~{Yi|oJ4$`^Q=O|~{5MRSPC^mr4qe^Rqk_O*)9y=A5QqGLR zE%Hp+Kbna@T7HJUTkSpB=r>+DWZ&gr83X}U{p#wiB3-K!fnj#I$VqWv-M5D8V+zKq z2gKQFeP?DY%=Ei$yIMS`MQVRCrHYlkvi*399~IXsM(6d*Mvw!_$ z3wHP|9ruN{a~Z<$-Q0S!ByxGg*-Yu%G(sA-x;El~yjz)Wpv?6EIr$-Dq5Ti`7B`!- znVU8E4JZ>wO|e9pg< z;yDNOXetDIGk$Ph;^mG^->J`aJOyI&VtLert=#yBFnI6%>u;e0Vu3Ka3zucY(ec;) zMtk4;a_p`vKb0Vmt*@U$IqVi=_=908Gk%SA91q)Rc~`GUF6HSMb0g@7Rem}wHns}Y ztf5t5YGlad>!{GKYSWOgW|4r+wcVDI{AJ}I6aHM6f+fJx8Dwac9jTJ~0_#5ChQ+%` z7A<=YVR=N^@59xdz$}qb8mQB0CJQ*02Yi_v`5^Zu42CYMO40-clE(BipHCR@e_C%d zTp~-@WLvG^%Q)ZIdHP2*-+?dV1Wn|FaPH>0a1&3i6UeH)Pec->Y;(>(E$@{Bs#GZ$ z3$OxTcp?s)i@DG8dziyEk=L#$ct0$>Q@R}sRi1VFQy8Ki70JbSajU2gHVC_Q1-$1% zOVojjQIsCm)zbagn4i@ehGyWEL;NeHYLR6)K{WKB7^op8@M(AGWF+7OY&GpA80P3M zRJV)>-M^hzUTEV{2b>cUSB;!HzgQ4Rcq9D?M2mdPiO!3q0LLsDa=9j~x`UX|={wnK z=HdQg9%vaB?Xn7d4k0_P*pi@~=V^z`8_wNrQ_T>f69PjtPwF|O? zQc5Q01K8Ch#pke-?QgGF+1>X$zyK|7bwan_tYsT>>xL`z7KSk+ubES>lR^-e2_FW$ zP*$uINrMkSS-MSfjG%{R9yW*>HT!?Q+@I=9C2kz5$o zOCj6LeR>TdT*?sHLgl8D($024wxO_IQO;++yWDwK-vTb}9N&BVoM_*znla^U>BPi$ zF%o&9$8(OtF|Q5YLQ4Tgwp$6<3NZ@${NNGGnM#eo?-T3*acJE)6_6IiPWDW$%NpvO0rP z=2qnCm6fR}G9=z7ITZ?OZ#kA_T zlqF0C7lrB?FS-uyPl2K~xzI(MI;oQG^zhw_DT;Hdf*T0-a&!W(3iBWE#^GUU``QXm zN`E{91lkBHWPuMC95oprpzUm++FNqu}FiN!3-w6oZsu5yZ@Y{zYo4v zyn~DMy_DxN$ji=d-h<+XGA0D_V$^Z7E4QX2$AjAUmp<(!?}}k@He3?CSn`1|T{$|% zhFu=~Z&_dpHZXbIUDzQS+~BoV^1E_2Zn9 zzNymW1Kzc!aBd=J9G|DO^O-DX7L2Gagu2HduTFqjPsNw+G;kw@51rAqLQ%2j*ODWm zz|-2RV-U5HsEheJLO^st6&rP=)tl(4SdS9-w&sNJqO&qN3olF^5fI?5vF zQ*vVqn-p?M@F>Ysjt>o7yPqu?M5b(Bwz48*8)dpT2F3ZIE>u?X-c&{A;cfEE%jHMq zn+fCc(aeMK3M3WvYk6;&2LIEz0VzC(8%L}6Tr@s^jz3`JgGmh_D4&ELa#9X8Ar!{? zznC*Gp8RuZsF{_-=^p!}>ai7fgr%%efQ%S191dg`v2m-uNoY-s2nZ(6&1OzQQ=hb79{d$U*5R5X? zm=TXz!K+|5h6OVq(Ab$ptVO_^A&&V)rX(rh|0HX{RWUa+YJ zN>0`|29pe(9AAobmqJHyUQCJ3$Vh^HI1!;N2bnl7@#qA0`r|`+xh4cOrgzbT)66_5 zW3ef_9_qK}bU6)$39K_#SpZy!4?HfCJo`pk^Ts<2g(D^!rYJKYRKWB>l@&dxFl<%}*T%zX=0aavdVwq}%fv2L_VgOMrC zw2QZ7u<&OT?OaV;&9R=}vb2QeGoli`w}g+sFedxVMsx%{qMCMfy=|>D^3c^eELH$J z?OsQ~30!4O8{=}&xk|bLoh-^TK%zLP2!QUz4BxQ78gD(Mj|e|dB=FI#X8W>5q;zug zF7nN5e}Q0;mbXL3bv7}5o!QY|HMR!`j#L{b#7HDoZl?ezXN-GIwI0eWQ1k*AB zw}wQNt{R}>#0X#`7+)T^brM&<4+KC!Vg9NQwLyk);zFvocfI*24gQOv$zVLr=1LP7 zxQW69kIq#lJl1m=P%$>2;I0wVhP#gb?O#vRPoA)zB7?^MB)@bQ?$xLkOoEJwJBG*{ zH$BZ_YegBTP?Qhq*KY(~+d|A~N@jv__{h z&;*9crNISWPCy|&+D8*(X+ak+x} z^zC9a`{shHrxs`dd)1BDO?coG?k=1SGYLaS*21UhTb==Ch0uf*93tAsK8r93(+iY$ zH#SHRcb-rtgJ6U^;pubpdPG`W3gX!UfYyEa;Hm(ehzW^aS^{T+esWrV2zpM6zMdCA zARlWO8L5!c{QH}G>wdzR4vDoq1yczSPJq4&(7rVB(}EEbtUsQCxq5#x8{;|&cS+UE zGzgBNLp-)9!k}E+&>hzp#>v@`PDc8LvYH@FW9Hq4&eV+KaHT-3PNyS&Yl+||f#>ET zXxc{WRx0DD^ECNgX9Ef9Nmw2W?ASm_jbs5)q;A^Lwyy+6GCuEzKp1#JfgNkwo$Vp` z-<@w%&N|-CM|6`CFFXw7oiuYaWEr&!rwB3!!bC*GP^I!MD3~`AJo!^*u zq%q8xWMHNhWAi=A(0bWr+B?$LY0BtKEsvj_^2>|!=c$s%LC92qRU*wxd!r;HB1nKI zRB*k&$3?1Xr&smgC*Dg2ul`}m6XlJMz^6Ta3Dhpeiy!U)r}GqwUs(SbeMO{30l=g= znlYSw*lw9#R7E^Po(!8d%joyt7XumKIYAl+!0E|2Nv7O@K*)G1!i_D zq3S4uFi%Da9|d~>OjX?&K#IU%<>m1C34A3R9TjSpyYS8_-COkWY&WMT-ry zDY1lwwlrkYO`>5q1IrbMuVy=AR&XJZwPi0p>=|TRW3YG*i`tK4l}bA~kQ$mbS|q>Tu#0Q{y*6%TZ8(K|}pr$Xh>Y)AOhfwO~ zYN$o1Lx*iVNmwR;iUC@;4RuJ-PKX%d1bcs(AZDitN}x?n9Nq;6!9bo@exc*TF zwR&JOje%2`G`nX|0!S~EsY4%`xfMu($GS^rX^y9210VwfYY(SyqFuDBJ=vgRYlgdy zy}gC{O*8hxnVKEscq-?0=XR7f6%ZV1c0Iai7uH#;QIlsD9}59zbu9*Ybs5ns$tw@y z^RpI3MzDGok$NWE1J$IeXV#pyhZi1VH(G{58k|4(Y-m|z?VxoD`KE=Mi98J=JT!ol z-QdOZ`jaPHbJ@CHOxmx`0!!O{FWK)>PCBE^LK4xy|GkO=<8yoAv8xH=5^$AB$I!5& zV}-bl+yb9!jh%uq38C&ceK7w|ic$dXj~}ibzjAh~34=(;Dhm&p)xa@My5r%b_})4* zPl*R=7Vs|Gl(U!qASnaG=UleqD9M~M5IF-(z}bnD7a+B1kR%3y3?;43vNEEVZDan;pP%a3T$02WhO6$T80=x`bg9Kz)uY|!)L&XJ4w^w= z+VBD~vUL#;>gqU>156{>MA~-IPQSdN%sFTYmF>OOwU4?>UFfG7#Omd1-a&J18=71d z>9%o(|8V&rm(>#uu9FH;pcxGjtZxtQ6w?)Vf}hoK^?Yl%)XzCM%ojCF1I#nPfrmRZ=miASt#bw;0a3!c@c0vCca;&x55< zp;ny5FlPE+HY*u<*l5%sjQ^VY0de$M=S~`eSOO%$I6aw6u5}6z#W=m4xUorazo)}v z{>=YJKhRU|>u1AtcocR7YnGnXs*$hbu*cl4%g@XjmQBf$J%jCC++{pO63n~9Yq1D>|h zW~cnqUCk{=lS8?%3$|F*+nnUC+h?T8QShg|t2 z$Pb1*bl3qMxG1jWaBp&>kX~Yec%v4MXH%Oxi+XWw=*NY3fi9^fXxO^E`fzIeSL_({}=7KKUD zdD8<~LM%o`9w(*VL-?zMIjX3`$DiyR8^Vj{gIgGcKSKp8;o=5KPzl3$Qhhaa(-nx| z-b9QK4eK0sHFw#C`o)#9T)~DF`KZr@DTcJ$T4LR3jHbDa&(Cf$ww(y#VRET|zPYRd z7Pq|Iyr$B^%g>?cB;Mi|izio{lXh+K(RC<5|-Hy%%l*&^4i zue^Ojixlh68BByCzJDHbvlBNe6wxFHQrzIPOGdpFmCNhreQ^?QBw9vnt&oZ(P4Qzs z5qF7O04lhr>IRmo9``c^zz8X%d4|&8pO}|SlqfI?C%2!CDq}pOo@mr{;#Kk1eTEo_?u=tf$Lo5wm5mHrV;A8-3K$pMT z<<|fJAOJ~3K~&Q;_o*iiKrA%#=IQ!-d&5Rb2Y-Hib>?Okj9t~?kXR@#f-y}DgD42bBEH04qwbrEa_Oq2)^s}g~Wgpr? zA&#z{O6Yt(y{Xg!0gK;XB7@E;!FJKi1<;Xb@+w)%a`HvFXbxfW^hNC<6INsc$6*c} zOl=t$D`@Usj5o}5;`v{WEjRUpJfDp$c|YDzip+jKCj%%vQGgiJ+x0c1!!XThEt$t( z`PG_dV~%5fYh+P$*SSnD#!zUuBw@J!u+Jk1T=)?al6FWU8iu@re8iV1iJzE>#n6G| z@=lCmsL(Y=37hTm66}t@1o;3y!-y0{`a= zWo~Z&>B4mG_gb)w@JNiz64gLjsH>WsBTD|Ke+Q!J<;ph@SEvI~ZfJ*My|0e;G}SlO zX*x3w)A8=oL7(M#9jv*DP?}mVUNhS?m*0tPTk1Yvh%RPJ8Rdv9@`^mcEB0yqL$H6t zQ(?p}k7O)V*fqf3OG49Nmj;x#H<@G-WVwca>f(6u+bJ8C)_c?CY65(BqvO-uYS3lE z!8#LR8pAjwJ1HX9=kS%y-Caa(E=>ZzwUjf2_P7qQ<8u|DM&$?a1U%#KtGd~!UrL$% zPD+>}%R`_3_VsR?`_JPWbNWHX!$}8ll78ppZzuoR{qOjCMPNoq=Az#y+3j8%uolC) zp}dFmXDh5G_noFxzgN&RXfP>2Hf;_DZ79-#>W7wyp7?5%RgguXnOIW;f2Q&)(YLRf7>{hF zk~M*8>;5dm(VxxIjd?eAeHmhM^@E~;-lB=vN={EGaMZecAH%S=cFndEqyXJg8R0-zFG@?UIcVZh`;z*L_S{eXt5p>cvTr!aT_=}sR8AHb6pu`?ysj72)&5-PBI&Zu-By5z- zi)&u1hf>M;HHV#V-5!wTy7AeKO*!(Nip!wgZVkg|IdUhdx@MAxGjxzImaD{tJx!I8 z8C9g$aO}0Fp zre-%%U!XVYs04{~F!j6ky~g3!O*FbqtR|iYpRmk4dP!!nHz1msD;^E$0g6USy)+Ul zi=&>a3}{A+o%eW$i@pI!{3MkbjiJr;=i{RG2dk|G^x*WSP9SUN-SsgsTufZLG5G7h zGX!&SX^Ec*y>HV|5xREr7++9zEHP@Yh~v@IPO_bw*^4>+C@f+1M<*%HE%zh}J-ot` zfu^slU{3Tt{-wH$j@a1i%Qg7T*;D9;>5XMCw2%+@@BZdIp~o;CpK65TS7zz7HE2A! z^LhxJXV6;T6U0}1o!(PozS{p!fUD^h&N~RgCej)HYB~mncpOhk57{|YYJE2^xE-BZ zvW0wKt=byG`eg-GYq9gC1`JjnmhkDca$d<QR{m3QmP`xDAGM6tWaDg%Uo+4Uu z5HDkA^F<6ML$^blX*}=7fx24PeWG(XZ=heB7mK%u%t~e&UQ-EIpA+j)lO9WVQX9e>hwCk~SWV$1hgV*e66Mrp+Wq9YSl+P~Q2deRUKR@=PFy95D*bdEv=-U-PBWHTcoO zWw(@CCTw@>?=Sro!}!U`{=E?83E~*Wz|Z=mZ7r9;c&y2Ie1Jc4{Aov6GjyFzI}YzZ zdyRc?Q)a&`HQIBFHf}%kbigiOrEd@ZZVo4rN<4+K#Wn1^gz;XYX8>nopCez(C!oy-^Bmi6z4y@$JpY&T!eVadu)@B&S)2rkt+=~n++2cwc2$H6oAevAvDyKqKjBonh(eWSu7?4<3 z#@8UfK(+Iu%gmN`^`>mLt%qnSCmU{>9F{<{czRB@K*Ihg6WRa9C}C%J{v4c5hPBc# zpX}UV!qwROZvBt3%R8}?!sLDO7Ic0M2>y%YQanNzg6w!s`5A$k_e`1yvq8iT8#a_1 z9A2P{aQAqA`?h4?yMG9{wqX?tkc=4}hr%6JW*1v1bf!geDp1&4?O}3B2k6$#y*v4R zbqAP>T{Y~+SBmri-9RdHOk=Pc?OB}eI!oA?+1Xf7-^h>HAxWPouTsv`5pzg8Xsjk- z(-aZ!WpR}mOsz!e!T6BvLSwfJtY$i~8aM}uU2qm8*6TS)3jU@bRHn0val^Qqu(Lj! z4Z)xDe0E6a2M{_YZjHXZeAtLC37{BHb&|>r*h%X;`6z^_h=ATnes+?4MBA4hZB>8R zdaLMDZkIc!SFKT}`7yNxBhe5#@+r1=KAk=KaNR$eEyvBpqWZ56S)3=@30bbMpcBGB z1|C1j*5CX;F24=TLn_~zWIxCPmoNzRVM5yPJUKtR1y}C?Iwb@r@9fotwTi-HS+^E^ zr(LHyr*TA(7M>ZpOsbNaQjolIwz8oSHXNyO0tKJXW&m)X&4yCl1q*&BI6!?l zR~e*o1r))~hU*Lm3jO2594vQW22y6VKNRPIWy8#QSgpXe?Xd5)5aD7L^pDpwVKj28 z(zR$${d8_E<=x%;-u=)!2ZtYs7jvKIya&pl2EOcv1v!Y^QK%M{XU`>^sJUiB2u69| z*nXqF(ZzL&N^4XN==BB&8n~%C9E~bIWMwp?Z!E^x8gusQ(BFWvNM*q&_mX?P)>V>8 ze6Vl`y&a+&r|F#&l|~} zaHnBk(P)zAs)zGXD4Dzk_6KbG%ws0+F}##I?U0yAC?e_<8$3-ysSGsk+RkWO+yM(3J)cq8hJ{Q^dtp$F_@ zrqZ;icgfXO+{N$|Gc_|)Mm)9Z8x(;D21zG=uHu3lIKfjQpDzg+oH?B@Z=U(cg|*Fv zR3ypTlesc~s<{fVvzEU3eEmt1It37Aa<1H=(S@AIwea~Vu_XlaDI;BIIl+)8aH+8{ zJYL7p=Yh9JFlCm}o-*&PO(YGs!b6o7} ztM80N+h{Rk-ODd_Di+nQ^Y}@4Li)mgc2CboOHtX^9#h70Vb;>ZD2&c zn6^bsQNkr30Bq1AWf{v3x+TU$rTofGxaqs{#TgEg4^p4mxhz5Bz zTrRm6z15&I)PvFz$dnzASLs4-3V6L)4lLwt?bn(6{^aVNBAVUqf8a{6-&#UFi=bg=6MesbG)-!!rjxJNYHgZrtWRg>6IsSkgx zaTeAP2&7o1#tP?&p!fRAvQ*tE79v&Nx8GBnlT{~OO?0o%pTE1SZTtZr`bMv-s}x;$ z5KP#_6`My!+QXFg)p>gQ8$OL{azeCmi3=Y0q;bQnJ@Lmsu5hhgQ=q`{DhC zjZ1*EJ94VT#uMMI7VPGb{5&XSiJ4`u&L=Zq2s2oDew|n?yGUf@Z-TQpUP%4Ak*eQr zTgP|u@i=MoGk7;RJV=S%R%2T>v64UYt;3~{ro+JVeM6}E7g}=i3Y34c7D9ei?PJ=g z0NF@*Y6BUP-Sr3r3;9s8WFN~_WWNgd8WT=RBiV5{NP=GSiwva9mo^U^#w422bd2v* zOE;Z>%FeIiq(gTp$DtiegHbv=WNnD z{9XkXRcR$bvA>wC6rtL|JWjZ!`+?8k{M-P}cM6~FLAQX7=%A||@wwvWG#K_MT$tqQ z=p>A9V_@3#hxPgSs9P$TvgsFZOK-Q%-9`FpfkC8TuU}k%&cG@d79bo?A17=3Ao%Yu z{Gqne@D4|nT`5Ya>6NpL+72q>tCz?GWpf-@EF}_?z@MTU;`F~acrrQW{}>AM1=BPR8VxN_tj^3^sI?G-Bm4H$ z#zJVtQV?|619421=8~RXNu4K1gQ7OS0XK;-dr(E-K$%}dtL`McwR+qnK^g_DTw|cZ zp=webPHDr5_uaUlSX}J{bfuV`sfAINIQ!yiaRo#yo?n(uICqxfkHn%! zljleL%G{p+z`ADB)6}CIbN~S0SHG7m{my3Rl?&qaLIMM~`y6Cqs%Rz7$z^0SlS^7=k`pRt6I zh($`~+jF*HWO{#E|J1Zlqg;0Q{4;p$P#&9x19&`~edW}d)m$CAY6*x}aIr~3?)|;; zBi^kXEp`>fi!@4u#qbj%aPSQX(HlZDB`@Eu}f&M@)u5nd<{ z45~e;&RobfAQ}x)8r#UnquI=qGi=f)SG!1-;S4nyEltnWFn=qsbiqS>xZ{*ZJ!2Fz-cEYA>)4ZbBDb8oWQzh2I4dNbFFk$gO+C~vq@ z0P?hwQ!H`tJ2zgeO7(&py~yt8OF3Z;H2f^u)m;--4QXn<6 z03DlS;7OUFVjW&m)ZZXr_qYMgwQTMKJ!X=KD~l?ha}WQOOY5udCqF$W+-V2q@)i_$ zG#O5Q$$V@kPLCX?MQ7MYI&0ah-ftsoOo{v+PCww_2i*dt-f&97j~5U6L{Zc~ewt7@ zcJs@>Y-H4fYn^z%x7j#U?}dlVC&KJT9jA+)0mbQiY>1u(&&Fli@hp1zyg3!HQg46B z)S_F()MyMp+CMbiWBB%mP@jV|rvTg+BboMs^@(A$G|Y{8WQoJ(U*Jn=8sM>4eb!@~ zvLFqEXg)jQz0%`6KJ>0)K1~pY&8WYB%9gfa_rtr_jKi_S!SmUAIiKygcqkkf+_y%( zLen?DPVPr$45 zvyUi8A`m3(<>b@{d-KMFA^1%YwQn+vaZN-Nyv`btV&tCn6A1%gX=hitQHSO8g&sN%I6{jNEOceaT4r52|0) z#}5{p;5=`BHGhAjckPBBcE0?6w^qRa^-8Qv7gmLN0P@|=_&Ql4{}Fy1t+pYG*(C!D z5;2XPo6oH(@2MQ`FDu$OyKx~f-tl22Kh)m$CW9%g_Kmc1=dO;Sxbl`*(Jdy?+iMw1 zTKREYu8dnd#9WZhu5t;kIL-_}1PQ6$^+H7=0aqVRUIsCV!|Ps~@+H5RlQ>=Hfd(Mh zh+9mX&|D%0H!XW}_f4d#z%qg-VDdf)?bjQIfE6A$)%sEjxlpgWkMuN*FNRk|gXs&PjN^ zc^5LlMQCP+TW4tl|kh%ru8U>4Jfuf5q6Hg z&rFSWIi^-%eAWG4q02S&(tUUiWEPH=Zl)AKz`1B>(aX_0wz&dNUKf^0_Dce3qxZm@ z_WXe5tT4ZT1FP!&{05g%si7Ti?35j!K9Z@b?4!j3e>JtfKIVHx`myf z!z-WXcMF#K2PO9z%eB}`vOn1K#2S37kcNg?_(7A_jLR9Bt4u>7hn~&TFAsmba`o)C z>N{6&SP_U*avCfB!|i$saJ>V{LQ>Nr6Bq9tvq{g6&j!(3<+ekI#5|kygbY53a5k4aaL?It@mdPy)L%LU^)=JrclQ%N}kdrD8(Z$(|1~G@qd6z8Os# zO&;B+=($r`7^49jHN{26#0}FW>{exaE~Wd2*5w@gX(J!Jd4ksaVD2q|U$o3YC$S>d z*`V>3_fXv%9^&DwL2mAdw~juc+J_@$7yv(@aZ0Pjq4N z`;~hblU1lfl=9DQ_p@oMw$9r=VXY?DTw1{m4I=OuYSxqC{x^RTuB!CBN#n`um#2U$ zv(>r`qRr9_CoA|kb{YiyBn(YBIp74U33BPL&zxNq8+VP~9iqRn3*ZxEg7<)Ao@wj( z>cjE?7jFd?ZdqZWWpHU#{W+}hZGZ!$QmR7Ki5*c1Pz-_?g+eqw z!GA&kFCWyB(n0?M;Z}zmm7Su!?;Rb78q*GDw)Di>9Z2E4QrlU_IKcVx*;{a_3b4>d1{YX~Z*GBSUS6 zN5W%$5DoHRXl+hbkDmHV%Rz#g9w0OJ-98ClP5?s{`lq{ zTw4c{z;VT0zeauFSXiH0IehU*AwBQ_bdkhM^>8zy*^&PjzZqM@fIZfe3%#ZP$PCnk zygT>xpd=TBD?(Y=`|Xa{Go^D`;$S;k5{o%B(Juj8hd}%JbtqtNZ3%VY^G{dq+&HLp znEU8yCVB019->e`AoV+T0V93VkzO0O{35eF*f*7?2ZY_HIfvOEBH73+q~SL%yCqI9~rAeoP7%duX~RlO&=7BL9dv&>gPD$ z*&AW?;N1ns@c zcdzkuwiv&!N);AVylR&z_#mAhZbYBGVtD7r)vRQ;=W{ov+vn z#aWne1<&&-ufqFj-!B~e%mOw+IT1ud>d7BpT@39-QrROaA)Bq^SU0}R}cTX9-{ z$piL}n17q8wDy>nJ7jybnqroSI%m@{ss%At2wCii39G;B-dj{JFTc_w7emnvAPtL5 zzxe&nj#}MOI@5(Hn4~~W)A8+JgQxN4M5_APzhe?<-5gjBso0 zevAFife1rOC!4W4&D)doR+w`W1fH~O{eO3NiEm~#{R;DTzKRzsXX)D8<@j&GrEruS zBWqL!U^;)+ARJZCoOc(Rs^w_RFdSSBAK>(Df!|LE|y4e zpG)Iu)SRc1Y{D3L+)Z}Pm&iz30(Hgqe>nvcXUk|kW|f(r6bYlD9dG!zQ!F*>-Bu~^ zfFv?JG^Et%A|t;=6p3;M}WT!9O&9 z6n(elG3)UJn~1`~=$$%CY%YgVLOAijuNn2Gn0k{GXAtqrK}KicOD?4wsSml&?`|Xm zf+!u%X{}O|&`UU-`n^!44qjW&Twq>`;veL|)Z7-rzhAvMhJ-?C;hXFn@!cFb+C6(F zR0mmLJ}gjZLjUeQw^wNF=4lZaPBg8?9y_%xOmK-`$Oq>|!{0Qsdl;+2`~K1$VV)&t zhM3048=g`5^64o!-Yxw*A>q+{wgnGI-r`hQvkHvAjQYb~>aCv!?Oo{;pVzUZMNhc= zHLR1c0<{an3=}b^tMpqm8NbTvy|(AO^|xA-*2c`NOWb{k<$1d||wm^`Xv3SDV?N?8unML?|p#^dB zCMpNEP0qU|K}iu6={fYp>C zf^+>Nz`5Fxg6~Oa%ANy;1-_9_mdTRM`xYMb z?&XI4An#FxA20G4I^62Qu^KN!*EK@6%g5R`GpKO9wAq4-U&a4Lz)nqOk+~LTOP4c7 z;8B$bp>cVjJma9m&EgMl&I_V3o)V2^S+>&7U<#Yfes#;gczb(wXV#yChtR2f@rm|- z5yj6$4mu)tPii|eG5rLYh9Z03W8+5TCXtI`-&3(IY)I(+zbe@+;Sku#4cm|Z#C!ct zg8>soVQMOUKjF7A_PiFRVS;PX1ONt5q+0*a%y>kq`h5U+GQ>GuJ`tw35pl4ck zl+W9=PTtj#>;Dy8QSUv`UAYkySyw}onGSp|Lnu`U)ciG;kk~QdX+V&OmLh*lwBo{* zL?pFtudrWyv>X}JG~{5x+l?*QZ>FTq))@NT+TpK)fByaTs5xu-V9` z_@2TNr62#l zNet$%$PE7Et$k=@?%>OlJ+Oq2l^~o9ZXdLAK~MWp1M^O?z*}aUmrD$rjKcq)Aoz@t zWI+tWTsgCx~HdeuBxuCoXg*LU?X5!vC`Y`;=zW2hK2Nba;B|R zMHFJ@niFQ;ue*(8fy-4GakFqY#{$3{r)=FkpAd*v9DTT1|7*LE03DUUdMx}*Ga)?P6at+Cd7ir-1~7i?lGOfjF7Z`5%mcHCd);*Q~z>Ysz;kk*0%!A^vt z9nT*AjnA-$6Jr8%H}TI;f6wvD1hRl%K30Upg9Zm959imPNcpQEsq^HazbNO>^Wo%4 za{omx_hqqiD&Swch}QEs+O#l#r#K}gohIa~VW$HR-8615 z(}FnDzuFdF3pQ6-&#csyHM+eRL^fJr&8`5yX{_VJtWv<AqJ%;oqvZb;XN8P?vSWv|E`U(WAKr3814xP0z&qnF_NYo@-OtkysA zTUYd6SdQt_Gz$g*f7mSA*~Urm?amwGJJ+(i$zPBDTrDIQ@ApN*&!h#Fcgw<3d=-^= zJ|LE92*9uO90`2o&E2x=0;u;MxGC!d=75B;m~JpXH}0(U2aq;_>%S7dw{sSPzu$BU zfhTQAtqe!#I2$2 zp?&daJ?Fu@ygACWN6=C5=*6;_pDpw2=T}IT&WFnyXb!{4DFh5O0$_1S!9h575(lXRRJIw{bTWty;m zq(>h7J5Z)1Kgp%lTra;ik{gv7IBg+`*=&57IoPs-+TjmsC{PldsX=pUudD>MVD_B5 zTDL5+5g3^pZbdb)PxV0%R-=A@{vL$c!}08i;JDQfnB|}M??sc%_m`7oy8$#yDFUQ~9N<-g`u8*x|L z_nO4MJg8yb_OMqvJd!4ZWR?2uzMNM}maA3yFLGn=OZvj%*Vg_FXI4d38y{9)^`mZ?_6lhx-sHjPPRaWuf~bv}iD`OL-Quh{1YkedH^_ zWb}Z-iCI7@HW;{=)0mIo8_`zjq|Ma*=PXLNuhcQD6n-6MGR8tTp{xPiyjt$(hmP5S zGs>dprS`L7i@EU{^WWzr*6s3gw92Mt8Rf@3r1C3eqY(I#WYxw}mIAKvb*MYRYy!y( zR%dWL#66PEo}k3-iAJVCB!7eO2DM(YSS*lX2D;n^3z2t|bmSDMK1R$1T<3DR*QXR# zVmv1O#{L$^5s)ijoV=<5FS;Gz{*>M;Wc?qr?^pi%FQO2I=@N5@65*2_GMK^=)Ji~V zBLj$rIS&9EzD)FdIe#+T>3sEDA1_a!gBtuqGh+`}qmk~$vtM9)Ibrq}-}&a#anS*P z5B##~S^a<8 z{95J=z5hp4$-ouN*(x$kWHC&9{FzQbJGEXP*qAcw1fTwrg9rQH9R4 z3r6KO4a^Is$ll}%Y_`PdIl|xj!cEZ`y;*Q7>-;CAM|`De#P~08iAA5(vG5A1#G&z? zx=8H{*6IUe3%8dhoooLH#DW?`XB+ZzH#KHh?s!#0F59_6irzkBuH*Wqz zviWz-En#(D-n74HS@TcY(%1Rx@)8+eqwAQP!$++$%ge1W2b_3hxj4-9u=g!T*`l_Y zb54#ir)tdEpQ%OPOndT8PPVr40c@00M#o=oSPO;p`w{n@fzo$hUI{r@T!Ah++uu~e zTfSRm4fyg{DXh|=r8&D6PhL@;D?~jYSl1$b)5!sEHLA!6q=Zbx9dgCMRI}{lSJ?XF z$5VKpRZ60lcg(u{=$&cSk#H+>10mecKZxMR)m+yGasPly^wKMs_jUcG;M1Aa06rK# z+S({ynuW4ueVM4sBe(@KZ0(QQ5pB<4QcYHU{oD6gG!@uBe@VxUzDib;qMiaN1x#*5OZqX{V zcJ9nf6+Ktt=no6K35X(T`87QLEG@lFvMOgQ^F5D=GBb?Cb_*jRIx4E&c?Gh5C3O6J zk;EU4X|9Y!i`g%{DxY>NKFNVvi-b$Fv)SHe|8%32+hR_aJRdAwUi&M!)%f<(JLE1z z*TCmmgZGpNSHD8x2JtGi))wzln+(YH?o_HhZ|SbSwv-@f?$r8A={OJ_FPVxsl3nDF z7O@aff+904gQ;Uc^|*D^U8+d6uZ2%yB=hwZa=%Y@Z_Z}VCjR;%bQM1b_FLI( z0?PgjT(P^cNrGs=#M3ik9WAWUW)?xI)DUD};e0&2wWmKe`wz>izoKe}Nh6=PR~P(& zcw^s*bq73*qAyWumLIVp#}HO+Qt&5f|Hn|`71=-#-wm;C8a>;DCQ{;5S~$*`tFkh{ zs!!3N@9eV#yaoP$t3E*={qtt+9J}+qd@6Op2llJAdxpWeCM#z^1K6LXUlEijU=s+k z-?H}xh@tF8KmC8<_Y$>f&|j|<=TQ`0;P1FhRqHNvZ0Bngpa0Vn`nUc?2WcL&t*ZmMfabse=qO2athMV)yeJ(O~=^K@mwYkTACA|wzezdM= z@5p;>T7CWT5)L?ok3@{aETE1GspI7$eVp=SUaSUrJg;LS1lWH(sqCzIKO5}jOp#1E z;Pl#Jc~XlI9vglTU7qokq}+LNg!DsGOxnx0_A9rk)_945HmY^wbhOQfrGi23UYrEM!} z_T9C)vTK#>BHQyJRCH^`;X8hYxmt!4<`YnX@9AUxz&gnu#jmR1_b(UuqWt+#NoC%9 zuyzd48A=z>%Jdw_Wlxb(cD#HD#@$r{bG5l0VE#OhhEpg_y#Al)2Q3W!7J+TOyTAha zk9h_t~vfk2Ew0~GVwzhH1BAln2!}siR{+iIzwgj1r z*9Gn8Xk`)2pd6E_D&dycE+1?I11wOVf3Ae)YrMgbFo@6yYt!{bJupj&Tb-9Sf6!L* zT_Msk8_0pbj$N~8GA%sMjJ}qcP5<}bG|cZ6P7>xEI}w01O~U6#hiuhmH`jxK_900DdKkH7!(oB#dh1-!T+V`VhJ zFCg)$_VV2y7PykXumGNynFGDWT=T<^Ep$*`g|qG0CttW2;PKkQms@=aMUtAB#wOAm zBShge@P?zFZbCa>@^$i8x6*Pq0spOiDHdLw`OL-PAKc)6lBfSCm3{sXb}5D5`^hrqUw?%h$rptRa+UAq1^&~Cp8qG` zDYlI+mRMU7MsVt&fs!$cRzGCqvV~0Z2P7h;VaF8a@p5? z3Q2}?>EpEv85Z6vypzbnDH)ODETESZ0!w>8S{bDa@79JE2q`LI)90Dl-q@zlGXSC~ z%rMTG^*dK@{^DpA`i0#nfC0V`#i)}$kAxmCQ$NXqN}t-~tz6G?)%xa9OPjOlVa>|n z<>^=wr*+Q7j*xb46-Q<**8k+u%fI*U4;{pN@#_^ox{>#Le^ZwT`nuiOc2smJR@%pA~;HxwTwH7C{vEa?!TI@ zu8;O%-PDHAAc8FvrN|g(=>SbtOxkLwAVXGSsg3Tx9?ByNtB5Y;ANI)>wWsB@xY~h;Xn$ugtp4Wr(3m8I{DEJu6i|3#t$q2eSp$ zDt~t)dA*>lRFHGu+7H0yIF~ym;n1zn240@WoC5xjjqMkMxAhz@>rM_;L~vr%3HTzlX?Kn2&z3#!XgjMl-D9;kjUOVL0UyL9wsjowCeo!$@|@eFD3$$v|=9 zH728O8Wa7raVf^DFyyTtrnWAA!|OL{Qfp0R!q+z@XGIlWaK@xOmZV>pcbuF%Y)~qs zZ2|GQvxC=TGQpwf0V>0WkF3G7${2732D+TusW@w(xfi9}#9bjTO~hr(5{j?EYG41z zV^B4oXHynxqA=)1S@C5zs>uc#j9t)Pgy@5t0=#niO@b!&rZYU#)5?fpl92U~AHbyt)<`yBZ(z#E-SPG_)ApF>p?k6qbeI*ZFw|zWfaG`(B6d}znQ(; zI_4gxbJG!!T{EWf;%uVI_gA{%`J2nVEd7XIS2wq_ul+pJj8;@%5Fp1BtvrCuIfJGQncWylZ*Kfah9J^#{k@Pc*5qO8SU$$#rM zUIMTXSR6na}#~Y4ZNjh18Gw`&nkE&0$l=nj9Y3HBADS& z+sk@lOHXjYNJntH?^;djPWr>yw2T_vNNeJbB)_D$4DbDIuH7xya0Ek4?Rx0f^tU>_ zBXo0PoUa4jij=~VjNbnx`#oWmQ-HD0r?pl88B9Ewj&}l)KJ@e~HHJ7ZNQ0b8^=<2s z`1|1L{G0$Y`8VC>rww=y%sy(Dxb$#75GpTIUk5L`j7bngR(^cC=Owwd;0yShff^H4 z9Et=}swBKYlFX@uGOh54R-7PT7XF|`hwMNy^mDx3NP=jpTXeZsQLR*Bxl)#6IDQD|+!oRh$@ z9;{2#JL1U-6v1+V0y#CY>m5sRqpN{_Z`$(y{Q6xR!CL$?d>@f7`NPFCW>vjq^LH6C z8+`V7!cr4{6CjgJexqV7;oc0s(>15jEe;9bSq85HtrFIHwdgTU)Ey`O>)rUDFNMmaOW~38wf(BWGz(yZNFUx4P!Pdt2L_!jDgjzrAMvWL4a5 z%^R!0TtGzS3v@9Hb{)R4Qf78Z9L67JB}3-vU16Ft-P&Tn>_o5dD(=wdDWun+2SStK zT>sr$tE9pBLb-Ri(daEUiuhMX(OH$brN+<`QY22%y=fA)aU0nSZJ2D2!(s-Z`07O; z!QjMaWTi5m37fgnINQY=Hp&ZcSkNSLJT|rsR!(H% zrY`7JZ+4zaI9=3NlKe)WJmc?0=GNXE@c8Ae-V=&SF7-2xdR`ue6%}jH$ajV()Bk~( zy&^XsXGkJvlQF8Nyu2{!YzMIFV@_{JuHfBlV676{TY+yAjY;n8e-7wfy5|Tz<+D;BHsnM;xh} z5#q6t4pACZx4AdOs7|__y}-JD%ZMb+=q$X*RwdLhLTcPCX&PdO4w8p zWiF&TcR>JhPo01~08&=1-^EcNL`HzI5yMbMI*l;X@q0og)gizv_@87VI!V@rw>3WGacMOffLK%;8pFT=&uo6dzG&w zdYz3jutDBDQ@mt!$%L$!J0scgQt~A$6a(D6=4QF9UJ`5ElzKV?pJiS8HqaYaQ^p># zfz*fNW-GniSYBE19|++hd+cmA67er_VK@*j(Dj?*VRuqk&Cjd^IP5(Kp^a}`n*xa^ z#T6;Z^Hi>V;+4*HoJ!g8+T1OPcI{1Enqf#>R=p`L3={d-ME?J&1E;pl)+yRM0r2L_iWaY(PcAVsJcL}1EEa?2{AP04~} zo2%=nJw@|D5&S1-HhlK_cYZHXrrrl-dX|bkxcZ7MLWvF+$ALMqidk?2joLwChp=Dk z{eXt#MM}Gh{^l-Pn2vxhIMm>)YPzpbX1pTuT?r~8A&Rx{yCc{zNlW@hR-5m3+wTd9 zWN0}Kd*dz{B`V%tfAoAH48RT6A{m~_A<2y^?!wgw_2eVsa#8o9nDEhkV7{YGXG77g z`iG2h$(#+KF<9={U&GF(58z}c6Omhx^W-mUD036^HQt5A8DOy48_<)fA4YK}b4MuF zkr%>3zp}VcI%%TF-S4seew0cJ!<4Csa0>i<6?80$6P8ddnU!c6JSpysC_PPTX=W6- zMnu)EDK%IalAQ$XUBS+6IUsN1YE@GKOe!`*b`0cKIawZH!}e=>E&j%hS0?}thz~8& zGtKI1Zrfp!KfkVKnI@LvJ600h;rhCEv~yKo=n4P;AOJ~3K~(&ew2`|fj7(!ArL$SX zpl9{vdA;Nk`L=?@kW&V)e|o_Z7owNOcMj#BGWV*tCVeu8C2k@(i`-yrr|=ZSlhn(u z%IDAkYCx60Wh1W>Dgl0u(SaV<^N^LDyC2J6)N4!Xnx~8yKTRJAqp5kgc{T?B=-C`= z!M}S?S=#g5+O5ffs;cGT?nH_W!0{mNl~dl_0wa3_02aPn2=ZWE`5g79ZvJa7zXe@~ z=+K(ACe_;V30oKk>BwUcIA{MR^%ftw5M*m(^iwIAt*!Vx>=L*GrR;df0f{r^e*gU6 zG;6F}<`CZJV-S%{G_A7v0Z}DwhY_GzyNLDOMG?>{=*Kazy0)+`l3U1vYC%bzH1q&lI0T7c~f+l>M2b84ca9f z#|Jd?TC`$f*?r>Vs8wY{PgQoWd*PQ1`K1;dtR_+5umB$CD>h8rTkEwzPnMYMpN99> z6CEXahqCOv7tyhHvau;SXM*?!U))ran)rB7hFh~Oz4XEoN z)NchVjQ|kVGKOwte*BIRjvm}WCa(h^p(Y_X-Q2f>t8u3vH}=xb+{C33LCtW#4%cnO zcR=Wv*XpXfIUc(_NK~Ss4|7O)-$K__2$a}oFl{2@l*&`fAsx=O`9e1>W4nZtnPAFp z$!eM!>=J|Fw4gzO?_L+U-TIfl=lP<^WyaSTQW#zDGA1RQsr?H0u`M9?#Sn_|!* zFqtMNT_*eBfefHrcK%XX(}D)j<+d$(c8$XOylPA!@b4@z`}*(Pih;{?zlufgyWQLz zI?xBV&w5KQq-g-E95UAelpBCotC%&-N~iy(|1fK3$tcOJFJ<*2HMs~Os`k~2B(Aq& zpk4|5oaERpHF=WxxcH2!VjF;_d1!7r$FoZhNJw!5LFcEW;o6*JQ;IO13bl`Mh4)|- z#QKsF%sR?6q$$)i@230154XAAk^TKQ{n*ckBE)YWj2^K`NGk@5WPYa{t2Q#qS7e)V zfjO2-9<|rK9Y;$R3FGQ%r5JuNLRiF@8|E^0FGu3W(MB0Hueh#6pA99hKs#dv9`s|j zMrKXmkZa16KU9dEh&kCMq;Yl#h7qrHU?Cj7Zy1gb(b+wR&CF$Stqs<>Q3nag-9Bg z0X>a!?09!<-#TBi8`R*sFMx4!d7=4rliAt9V=svSl!cHSF?%C5;Mu8|jRGE5T{W-3 zqbNn;dgus@R4{PxxmW4Fh>-WbgQ`j7+b|PYHWSSBG>5idkJ;}cR^n0M-+fza>a#r+S!l^$cel-&cuv|{2}X4$IV#NcJD^`@2ztHO%mUfx_h^tXAe(;Vm5e_Nb7RrtOt5+m|#kM{# z{YQJ@YBb*^5SziqK#xRtXO*6_e7i#dvcLC@zv>_l>v>x@N4jgd{>XJ}jdC`cgBdN0 zKAIj#B+9>@`KpeUGT4;d5+I;sXBP9sSgmo9TWj0den_JD#99Su>mZD&*$_|#)O`Ap-mWYsh1xKHur%c1 ziKZmpG~WDH8sQV4V%_|3PV&f36A-Oc2yKm;Ly8-igGuCkE!{fE3`@zT?cv0@hM|iV zEY%0AoY|qWk~@3x^~DtgHzWfb$mKA~a!wG6WJehl4)%$a)2FgE#RU_@`RWl@713!I zAYq9|P4K_yjaCm2DDZaktbh1TxNTflcP{433^tFp`*=DJxU*6bXRsin4!LDChdZ>@ z8Qn~Qg`IvvuNE@g$JKcI5ldaABHW?i7%a1ylGDlJU3s>5-wU*>5a0Gq8q8}my?%fA zwouAz1Nhn=uh2#s^MSeLf6HIN5DpvyIZ;`}SCG~r6CsLqAwObe}U|)ABsOvlKGT5XzZB_st{~_0T%NZ_=97c?pPKUxdN*nS$_Vk+Yv7T)R%)#(yc) zR&T7x7jHI04(uf5Bb80Z&nJ6#l&gr!DRHK)T`LDfD#p{1sqI@ZGEvsE4ak|Kmp`<4 ziB-qr!S+VDI-@J)n}~MRvizZVcgeDwgotUkpD&5C*W(qK{+I{vIe*FB!e|&5@jfsM zM3fI*BVJOa3qPBlLlBt@P3!gbr{b*tb80)oOI7-+lN7_i6mV4Wvd?=0-+~UeD&{*p zT|*38Il>+Ir`qoF4Tan<4=jMR$2MP3C`O5ic$Lgd*Cn8XZ;T5@m&T3F4b3j1_DZ?Z z-r-@m9n<)jI@<19)vG~K6|GZMbhU7+Y&vGX;(3wq7JAS048K5)R%aTLy1!mU!lbt7 zvBI^;O&QF>b+*X1uA0L`)|xM&4s-XOrJUXkY}iiCxooRJ{|rNrUiu+Jc^4WP*dmj6 z{H2Gb%jiJuLUoj1vqM$psvHQy^V(vyN}`-W^hay+Rc1@JClL<$ivH5JrMTeyaW;Sx?UgXi`TexG*1y9|~g>w_4*3$!}R4P14wmX-*q&$h-H9 zs4%z8CI#92{vChWC$wkUVQw^66m8v!IWsDJSY+Ql8QUguSWSRgsfg|%3^XQw_GoGX z={*K)NKJ%ia!F=MhQJwIh11B`hr4p4OWZ!i%Sa(sUi)~H$fJ)Ql|Iac@&{xm=E(~v zCR1^AJe`5!#_(k8z5u`>;1dmcWs~Me3BWNJ)@$OWg+$S{kf=<)jD&MJ#kyBIhREbM z@(hZ^+Hy;ZY_|b-Uw55V*0p1}^g$AV<=(WUsFQKS?e{nujJK0a^%|!s%M8_A1zL99 zZ-<@byR6Z9|9*jA26cbTLhal^*A(;+;cd~wTcQ4<6$nlbljYR7UMA~td6fR z?Xt=sGwJ=^!0defR%ha>D0WsjIYa}#V7i}H7codZpOkCtb6sQ$z|>%ggM6?sKx-N8 z4;QA)f!pZ9xOIIojq*FU0R+|E$!E}d(W_@CIdFnJeO0ff?AOwSH(@jn74IQN>vQ^S zmjAVsG8I0i{Sr>ZZ>6tfWg1PSB2nC;F3!Gni=H=^W%80f1g9nV^L*vANsVlwmAyP5 z+h@}XaGYATj(0y~d^yUqg{=F^kGTY7MlVAENabD;#iJ7Gv=Cn8J=~pLJD|fD#Ez#Q zbD1R#vyjKN%5_6s`04VjWpbet-EN3s*DkClF5(~HPaX{s!3_*`tDY4ztUJmKpk?b_ zF?LOgFBVKY#8bMQVZ0sHqV>u3#$C1PdYS$gnZLP_<~6Z8hI!A*4Ri_er3j7GSEleb zW|UXiZ_yN&=cel;clX>efLM1}*Vis)mGAO|3z(Cvq>%Czbuej55=nbe4GIu!T8vLX z6wbo3xmfNBLsC?0>Xbi%$Nm82I{t<|Qk4Y!kNYw%a;6lsy)zc zC;K7UOzti(@SVKu2RM%f$FEcwLRl7KHY*k2S8u!51f-^UD+2I@74=IY_~t%vPNe(x z0;78Qpu|L1xCExTEY_bok#ys9>MtlWkK1vgfx*H}4(5|GGm$UqxSgAMeS#H^NZ{$}cXMz)iaDt3h#lGrie~FgN1F`r>GPFFFq0{deR00fC5Bi8Zg%;iG3#{+T3*;d)ZlZ$s9L^}l5Rt&Y-@$Lmm+GzE z#GPJd_QhE#R7|x#UFHc1P44QgOo4us`V=SKSA^{xjD9)CVw2qE(NtPmer`^tDW_Ks zY<$8#BvS2h?si%u`XB_DOV4LqJ`0ZNLu72*DYB_#H)>H+*2C<|iBrINQ1+6I8!(E= zeD~k1ZIARErlV9Qt&XnDia(cDF7I8V8xm;|=e>f`FaC#R16Wpt&NxM+FBZ8>02#BF zO|jBwyl;MfNSzv)5hLV@v`)dwV^rP+D@ZR&G#!rt8I5it^g6=jO=0VlY6hXd4;K{A@Y9Qb=d2 zN5LMroSr1KTKh2TEbuH}MRCu!z!*n8+#!HfpkB0KYhIV|!wQE7A!E%oG?FcZ%0#B( zI?&dZLP@R#06oK+Kv`%zb9DwubOjlMYr-OyRZK0y0$~Z~V{-NkK7dy6{S2Gt)m8^Z zoOu&k1OKb#&FH5iqHv>}dh^4bTg+g&>7$?y`Yv||T;g$uV5Ft6?UwOpifpINt5r^l z5>DcF;8)j%AM--XpduSkpsxorW>$Ew-0YfoWlf!Q|EBw{IlrBHe&R)j*`bHa2Y}aTF~b%a(}DYwGeAw{%8}u zu<#9034IFf42!kQv`t)`a?I9_D4pf1ogoji7;f#h4I*be#z7O(KAqg7c9PS6U<#)JipETcKf#-6lRDU%!o;NwfpJyXC~U_xnwL_lK& zODmfvxr9u&80IRu%EB_xbSrb>Jt-Q8_h|~jJWzo$pg5j;1>EzlF5jh-7JIOhC9y_e zQ+~_1e{!9u`fds|S3D1901;JvB_R@dT48M5oHkOMJN+NG#dHC`o_S+N3|;at(@vKV)SV+iLXOPzbiSXtoM5rM z|B*|R?SRhHam0z|)9AuWL|zW#`7B#6*MdNAFF3X_x(>i?!gr1&E1)gs_1x>?v=uY& z=ig1BjCZ-e&%>=Au~k4~n-=FIuXK3*i$ePil0D$@ErS(po(Qi3PLVQH+&!bnAVVJ; zN4PA?DBbsl3J5OYGz5&WE&p{=QD7ro(zO)^;WqV&X;vjKzc`UJ<{_8B;t4_Y$BA5H?q)Oex9n@QKUX)_2GlB~G zF6_u(K`}tqKC0MI5dsshXC?1a#0b-ch5-QxOq2v;3R^B$oi#-%H1vVK>8)z}b2DEA znAzAJrD>9kGnX%sJn97M)HvG7A3B3KeS%I9&l16ZoN@7AeYW`l&L1TG3Cy5TKS7`p zGs&Rif3yh>{?t~2{+_NK>3y?FtTVmC^! zA;UJ2Owo!rLD6{Ofpu)*x8-aF9QH}F$?)cij7-e5I4Wx{!Tc(06x?=PCPa=ADQAF0 z2!SDH&zQ%#h~5M)!y2%W@=B<>By~lhYx**Qgx<>_7r7P*C{a-b0!LFAfGnH{FCp_jNvR7N zx#vFjKB$hIL)4znh#bDcU@pFRi(`9~vpk2R+}~#3#cn4dJ)}3Oga33LzMP#0#Kx}A z<<47F1)ulkcwQVpHBL;Nc&=?o3q)TQb{g$Jg$yNP3ie9aE@gQVZ!c9Y`%(c*X2g%9 zTA9P=jQFy(iJK4+86H{5&ZoHQ9Hvfe){y8VA&Z4)?|2kg(Ac6&B?v`8un)!-6^v0Cb_aRw^*Hq@ zKE5g7%%!|bA=;=U6-F+#V6-8@;L{#2nL$Qeb|D?lLHd;(C@2v^iAYex7Df_`yDZ=# zgVnwE-sTcGEDu_y=(`nmF^Q23PWr9l9ZW6;_3CMvN{RBSkRa)dhvHrHHbyWv{^T7_6&Hi!M}N5R-kgY2v&(&$fK zR6^kWeX5N>i#vh>AWV|RntjMQoua^GR>#7RE8SIN$FOr&oatOptdPtTDznshL0AP0 z!%Q49jw?cEs(YT9+Xt?!+quhxpXvn_s3i-85mr|eD_0B8dI=ICAJl&dAGJm#!mXAz z_>XRauV&^d0-@r;J^uxF7w?}OhZ3=bz;u!6$}8cJC&I}%^=bW&{@LB^z{85Xo$QJk zbP)m6Os}1vV_OND1l$H@kxNiq9mkL#!NnASxNPt^Vd5RZ9wKOr;aou^A3sNvB6Bg0 zlXBi0lbh%uRk5^-c&*auSJ)@73m<*Ju2N3BX;jIXP!xy&^Zr%S;y&0WK`~3XafMt& z+Jay%AW|O-WTPY|1zdQ;ChF zW+ugTdX|PG2!Kmsik|cIcw}L*w+c+;-a4*;F)4m_if;uoT-q*s<50};Sd7G0>@7Wx zthyaM6{hBGUXR*8$#T)RZ+LENDKywPh;ffd4=(xZvw}0!;{s8*4Yf6d&fla0AC<2- zngKcrC!k9@7x)&4aHx(&aRX?NuR(y?V0?$ziHBLET@oW-HN6zfQ7x>xRQcIye&75# zaLbBeDueJ$vK)i|O~tRhe9Q`oM>Y-^CATv-?M^p_l57{PD9R z>N4IdAS5P{j61Spra!VuWh24>5#4oOOr<5L?|zwGU*hda|p&_ z)Vp&Z5P|Uk$<{HoFBE`emut#rbMfY4vJsr&wR^d7ENU+7M4^)klsn{Ww3$q%znwD# z4o=}{j<5-R7NZyN?znwVhl}1BvCMcnq2#8p7Bg)?>XeT1?*ln=H%z@H2XG1!Y zMgo_^x(J3OK#C}wbDwmA_0~o zAn-#FBric8@|wIP2oS&l{15{U?8LE=#Ih<@+jq%bmf?`oXYQR_&%O8b`uE=dd|!Tc zrn{v6Gn`Ame*>1T<|UJ9TOf`}>DkT$~OCIb&iWRdb^Hi3F8yyBF5DXeR zSyt!aqpwLGv5i9Yox)-QS-FZ+EX?iUkjG$-vEmb~>?Q%V6!%`nN4B4w*DH-7GC;E5vr7EW*&~S*vbEC$BLlDOcA+ zV2c=(+KcP6!>~qpVQAFe?yj9Zx}SRqHLG)SOT9#~Ak&rWoy}K=7Q6q>4rqm|a}5&L zA>E<~R3wwdb%e}M<9dY@oiU7wSroW*JPD!FfwLNGD2RYrP|eI6O_Ig6Sp|^|rW7I^ ztA<1p5v+$Ivr9Ql;)g>T-Tk0KXJ~u@9Hej!g#4#+d*K~Vbyk1t4 zYhT%VFg_lWdn8V+u)=xJf>!6QP?=89fhtK@9>)Ytrh9vJ&sX6cjduHALL01*0fMn_2Cs&sbLdVECv7gDfiERkeaz?7V8}hyYdkugve;>iP1T@9=JXj zitpybs(r3x&i5+t+>yjV26S(v|F)CkcCJ|5ECf#w#mS zFWT$#=_H^tr?zWr+)m*IR=>7KCqR)g6@MCk{88!f^4sMTnXOGy5x`Or)*QPJM`tEZ z(_8NqGJJWwz>9t_Zi!`qcEU*ZCnF7zDk%qylg1`GpIL~bkQC1=Ss*ir56Dx1+}y1c zdB~Z;rNqs!jLC5ey$}Te;iNf#X#r&Tvsa+m{mWg`qhrI{;}$i^8$6pOGtJ}jQSCr~ z?&OPvM6LqdS1Q$|gLQ=rQB#-Mj1}B|<=!tX4aM~3T3Cbh8Q48!S+so}62 zCH<3lTNp2*1i&z8I{|CbV+TF|2fziQmt5+e?C-7A|o`ij4C1G}DV zd@K3!FZu7iGygK=9V1?bwXG(JOVsJIBBYVy<|5hC6O?N(K!qA7TqEmUsMJR#Juqp| zhvX|Gvw~fE4%&Ezb!ni64OB9E;Z*FbSrAm+Hd!Pv5#JYb#tb!?-E|xUgFG#}^C1Bk z$_S`}bKA8`2NjwVNR)K=q|ipu1SiW>KK8OpckKFL>w@A}06$An$73hU?|RWrze;v{_sj zj;7iJiuDUzr$zazp1#M7SE$&bswJcV03ZNKL_t&#Y}yCl1)QDrLP3Cvv0lylJ69jsSlJR=~Sb+rDFh-%weEGwo@ z<4d_!9L>bFoDnkk)Z<}*Y6}VF9e#Qk*EUpTiy_f)4(@ND%Ef6+-K=3a_%DfLoJE)Y zd|_xDG)p-xv_@2I6zuU~I$pLmy*Kl$!VYXN2ngR5>K!!YYT48-f;ua^<)K4s2pcg% zniFEDD4O0(rJW`}$W>>G>tlhQgmE2~N^;K;yEGvAGK&suvqwM3tBXk)8FSGuj5LMssO(hCw*#EiB!8Yc0PQqWRRru~EXO4M}s2b71T23uDf-bFiTV z-8-cq%i|!8^cQ7RXR;uOE0JwjE)MB-fm#^G1Ou*w2ZY_0@NfpyuD(XrYnP9v8Db(B zagQl(XDmsf7uRdjlyvMH?DE+F!R#KDcc5-1kSKKsRbo9V5EODHR-JgYEUOQ#mf#9d zvX{BO30U^If2)kP;+bipa4zrBrtuc(?L_Ci1jI$#({zE85z z_j7QSX{=dsiqxej$Izqy<7vSOcFViX7gsjCSJ1b&Y~>gh<(f2m7Tn%&L(9C`ny>Wh z>va}s+ImK35o1{{B!mip=QFod)+{E7i==DfTm3JTsa`@Rt+!JJ&jp2MPVP@Fu0yXE z!T-&8Cf%?-(B_?&YfZN+QTBN0Rrc{E90wH2`7aE3F)vhy%N!Xeg@dvmlqJu^2u%^f zA#I>(*7jG46>?-*$f342glZmMW=IqKr33gtJQq@SUX~q}CP?Ncq;*;VIVS!b4Sz#YRodjOywP~l=NP518 z(@q{dhwF|(3Qb-z}sR|Gu<=&Ya3Ljkhb zj)d7sR$%7iI9%bCE$Vy%6vGe&VAzEUwmA{YJ)p~`U<@v7iG|R>&Ez9Jwws*nz+~2_ zSKW{r233{i!9Vo?`asf@;4b{rLUky-k3BY+Tto1EEbEPmEpj#Sj#rg@OcyjIYuqag zw06;Vi_n!rcpB((aMWA`q+T z1VEqL?`;iUmb&@8UqVKy=0<9OfGld-75K|cVvA_4s|0}w&neKJtE@7uY%-L@f^-hg zj}PMDlIv+$h^8RJb}A;ko=2+7tD9@O0YK~S6IYw4E<}NDy;IEfPm&U- z0!$7I6BYiLJr%5{<71D&i;b3+NkQ(+sLV2O+1+@21Ql}*K$muFYEBC6CV%N?qN?3C zo|QHU445uj`74h!H980@`^@ao=P0~#b12ZgvmVN1_02ylOO!vZ{{WA@XVi9v^VIZM zgl05yo$hr2p$rWX39*Km5XA^p;1?4EA)_SDt?{~JohJwx!HDhku4nzE6i zxT|4_#UP3y1ruAJoqY#<4S_edI1LbTSJoaaQ``~x9!c?oqGMryrUam8-Fc9@k#O;A;Xx#KJG40?X`ftIK3R&A zw}|TZqRV{tOl6W6tF7;&Pa72pKWEpcsRxB~)K8k>4BQ02GBx?0yh8RO`O27~$EesME`EE}OV;m`z<#}Ou3sqbg1@pm(UPlIa$(&!W(%SuW zq4Y;$;c!j|qwM3`f;FYq(Ru78%OxXlX#e3$_P%@>QPOUGW#27Xo%ki$hVm8DSd2!> z+~bL+$S{K7ou8ys5VC%*Z225w%2oW2u__>{s9pZymz*ce6(55mT(z2!(Km!q6|e~IZVf* zl(ZlN&n0pXp~GnMw0f`T1Q<$TW)3r&%%uVTmtxUXb)^UHNWFkj=@wJ#f_NJr4V}dO z#OYMp+RT}-xpIZrEL?q+l60NGlJfTCV&ZbBKtK_5Gm1}_kdOy=PS)y9! zOp8Hdj9z|avQ21C@0CC&kXNZ7&fcgMVp&7B#fS8bBpQyGGOrnOOf2}~bMRKWPhhoEf4JF|E#6TU5liDli9i+z5N9JxRr+a-!9;bIv=4YQ%~1$RSq9Hq z8F7B;8BYC%jtFm_XEkk6G-rkH@@4VaD`7WJStE^YTPCFa?9FcF#YCc#4JjknIa=i0 ziP#`>kl8!D7zd)@rs7r(E+#W2#BDQk#Y%wEg#a+-#!I#2<87a>E$v9eK7CRB0k?z_ zYHVU`ivyx!IhX!azg1hyrf30&T|$1sQ*oI$Fw_z0`M6*%QmmRSK^9T9>4~u**4i7b z>9_|`d$_8I{OH<{ znoAV?9dp3TgAd;iEVqDy(UB1SL>K$&kM5HuUXY(zBw3bxxWquV&H|@NH2e~3!tAXy zgpb!dSH&tDX&f^_le2Z|!pTAzyB}Mviz6XBhlSao^dZHN!_V~h->xMWSL|jma_lEb zReQJ+1cKr#cdHhM(nhA`D36f*vy0_|D8w9vG~2uW=NE3J3!begAy>mq&7HD~Cq9En zoh5|~QnwN%L^6{r+{kKvTao>8vIrx` zCWV}0yF$wtt8Xrr1xe`S=NB#>s$gf6iy;Kw6hIpcJ$O1)Jc4hLrU!JoJU9ycvqS7# zWdL7XjclCpI(Gnr$yU8Y0Lsmg+eKp*Q9%9Gw@SWigdO-5j8X0ID!?K8e2yN_6oSOQ ztfk;TFLDEzZU%=Uv@|Ej5t*abet>XHhK+i(avsw~JekDx65ieSKz(+W?h`TOPpSua zFnt6fshgy`Yu}6|a!Iu`Jn`G}FBj{zIBV^AD*=;e_j<(OOBZMhV9r?pX&ygcfzY+w zDVUh#ZEgU#Zp`4;=p5_Z?;rawnLGt4-)(v!M6r-6qv`KX@Fn#2AGuME8C~L`)!Fc4 zp#sS|BCICr*&!kU=(dy~UZnsgIJ*LJfo_9YMNs;k+OsPG#dui}pn;cM_r&`}Aw{oW zqEdOScB~=|?$b9|;OItR6gQZt{-A4K2ep`YCM%eK>-=1gbfZ;x7oS05lhJ?sWW5b9 zT#s#0@KuzX^B0E$s=af^HWS$;s66=D48~tiDQ5YKp{+XgB3TDx0azKOK<&pgD^P5^qS<8@uohV|Gl>ZA zHj{-NtPoL)3|Kj9S-p zxJ9IBx>Tl`@B?g6BeTrbz=l3mUJQCjg9NJt(nhfj$8SONB~rCkg%+@yWHk17g$Yx8NWX_oglM! zTGeowl4;Pm9v1vFp{8RAkzdFi;NlHo`0b50XeV%J6GiHBo}a~Q@O(tar3#y%kY<;h zl(|6bZjDIhsYsG8EP6A@%iW`(OIFYg6D{IjXbnnsGRb*!NrltgEpFw&*+ID1>dUdCJQH~A7KY;j&k z849R4R`SGh5I8O)R6F$5IW|@7XrH51D_r)%0Q{Gnr?`@Vnlvz*Qyi$-W+RcL zIXyutWc+Y~$Bl-cdc^{GrnLxXqI(NXrnehfRI4%h=+vrJpM)*=S1&n!N0Ni`HNIa; z1GgKGXQwM~5#Rc#+45Gc?BZ+qRtbxnfZ<+FD_cG=IyXOG-oWF0D+XDnBm}we#A;Ik zlZe3z%R9Q?^Q-C!y>DLRub#DT+%Fk+5UY%11J$l;xaU*wiYNhjqCeYRqcAu>n>0G< z%zU3X9ym}CQQGpxCMr!M$#h|brk?aWWfQU?FhOu^q##Mm*NT7=QHi@vt-^fpD6Q(I z4RSkOh%)3Nt9sqVe=6V1R*9IZ6j!jM!YB~Xu;BB=1Y(^SLx2}>(=}-bcLqJ!8=^wS zBn-SMDtK@?Dy`22qk6ljFznehr7vJgEv06Zf>n_ZAK#3Jm!o{0AO#e2G5Twv{Jg;uTr0sI#`o(==H=&Q1qvn1HF zHPymJn+V}hc3B)ss_?wE%lntw7ll;4?=@XG}N z5)hW|Zh#_0%rK&eo8QepEHl~J9 zR}qVEx^Gj9s3;KD`RQRscz5m*1v{fSRY57gT)?IV{oLN(A>HYTvOF!WqYS0l#emMg zuI`_?4IbXM&SkJHs7s|PI>%Fc%V(j#JG%G7ZtgsWa(aY-MFL!2nx?Pz>-Q0DW?$^w ziefHQ;H|sMpdOpv$UgV+S}&_tO8~-o;KWLxSf%|S*D#l9F$WspDnEGzPcu zm9yg2tJuuZF!HBwX*z@=dWf>mKKItv;7A&{9T7|H6iotAU>qp-#h{&uBH+swkTkH= z^t>gpNV6+s4JCwpF1I?nOp9-Y&(eDBKu&Aa(ZV}N3!4E_@xLw<=sbFz$j1O^Z{ie* zjjZ+K0!m6DJq}&$dx_qIE2HFFfF~tlFrHID6jabi)eV?2sDeCCXf>?K%T4fq>|mBa z_)0|0>CUmf$zMK6(;P4*dXU+*vQ@BHc&3$z-zJuRnKHMR0o^dEzo6YF)xdu(%(HLaRgJQD0#Kg&G+7O%X&sg)({WZqs8bb zh%Gr{Z|q&p^h2rT!CM6t<~PMMYz5O9YCl_T_OLD}ky>ok(<_y)WDyKPUKt6Kgwss) z+-eB9=$Kf?R!*$|$;WKr{Blt}Alcjd^L|`T{&|eeJOk_=uf6`u}sd!ckZU;Aj|nbei47GJ!ZjM z*%zi=XQiP(Nl0TPv5?y_lRIx9%SpS8ugk5sVfA@LrqX-4Np(5aIaNabkNj^`%+tFu1khG|o zR^~zwhawZ`Lu7aVNxzDPsKc^<18i|wKr}8d1lh~g%K;JNG!Q|CgfG4#8%1=ThwYV( z;WJ>;*qzD)*mCr83b1B@#_ooXTlQvE|CzSl9$e|2O33DIgb}lh`OSZt@LXf7^Z}$L zM&u!Gj0#1Kx98p2lC5m@|NZN-0#|SV;^Jm@oon)u856_?VJs!!e6-pp%h`xQ^74<%^Ig#3;*NY%V<;H>y4j_6l zrr(C*+?1?o21g07=NJ4GSL5Yru?$L-E?^qOjCG9HPu^r?GN^vAh@0&w77rCKmKsB& zvq?&zkOtP&ZGf+l;;q%?X|G$tNN5J|`r>LWq_#b*J0q?ye4e~{tyZ^KdEyB?w+>?H zUmptDjtAV#MQ54mG?T~l!P-Aw5bt*$gV?19{!hgWZCZ9CP?w7;-$*rj{(3dZyp82E zto~tTkG7~2t5SfTj8KkBvbY5B-ci5@B_{@Nhx64|s*#c4ex>Ym4M@z%SI7#pa#F6^ zPCxr_p>r02J$CP)Tqj<-_y8%G9W1TmL%jgB`Bx^R(k{S#G#n(>R@74u8Jg^?@17(+_23u*Mk zyG2}1gi3IDoIhYz5H&aCFO&5$v~fo|ud=3}mJ(f5djIHcXiEG0bANbN#w;rp2@>R5 zp8?-5&G7YS3Ou_ADuP>@kj0kt#KY}a-p5}t>%PxH+)M))TR^x})^R<|xIElY|Gs*A zruqOTc>da20zqYHLCJD{Tm21FLuedbuoRn_IWDvy6^A0n(gB1lvC7@3pVX|Of@bQ= zDFpG-;J1N^se!W4)M zPAaqG)^5^s(4!0X!bH~7M}z&3Ha3{BwiqlXMRNfJ2ty|me`km;;XamjTjzPz5(yZRhEXg(MU>&7zYjPYjw7mo=N z-FWw|yZoeIXEg#EW1AI}Iv?NX&gr~k8U1TmWbah2hG}Q}bc~s0YDwCIrT_>C8ec6? z6pGuBd&Ti?0++%@{}ELKb(`Uf$XTgr6+?2z<;N&nT6}iT^9!P4o8B6|U?t6i9TuFA zfWjeGWUvU0z0KUza4~ZJx;F-It^+}Cj{-aXmq%NXrZ&^s4V!YdA>S&_b+C$hJHZQF z2dxCJC&YYFKxeP9;<&p;9=b9M_)_H+zvcykMqIGD_$K~zFj_0$C%(L)r?e@jRLI8t z^bp-z$A0}7hroYdR)EghAWa1L8XbvXguJ$i)9VHYPE?^-+Yv^;KUKl0fdPRvA;~(T zLrbtc%{Ep2ecqVBda-(Jcw?Z{^a2-%yYg7rxG*ZjP8+g@M&&%EaL)TocdOj>%p(?VolC}% z(74T*?P5B79SHfKEQ8nr{>dNv$<ij95QdWyfL^XvIqm6jOqrPemP{iHa zKeRq}c?kks3Yp^>KId5w zIVi2*(yLQuLx5l-YDcd^8uS##NCMTfqzr2zlh|3_{VrSdA;;5gg=&JTd;9jQujIAb z$=?>v)9w8WrWnP!$K9L0$3BL-F(d3W)u}!J@9UrV!GI|f7#lALH@%5xKr`R>CAM(w zRZ{sffa7H{-}J7ASS1ITX??Ax;A`HMg3#nA05cYm_5WfvJ$p{Pmpuy`!y{s+4M`Ci z>1MDOIm7dU00otZevS}(@#QMV6kM|drbcZTu7xKlh^Xsp%X~B}5q&-$58>{>D3x%v z(hidi#ItL$XyFBD{)}j_am4V4Ml)5S5H}Hg8E-;PR(`6yO*k*F(gTrrQ>Ar|LuLp@=tqPeLw9DGH zqsGGTN6WT0F_{WvYUc*fpzcjhJb+{n+PeI{1SE6UxXAWX^CTaEKZzyFXLep_#o{c+ zV?ObQuyu4^Y(bNJGZMI8ee)qm@5(;20|IDYpn_aa`nyVTkImD#Pv zd6$b5wbo@h~9BgNdWP4Z;nFa%r{bVn-H&YE{y^tkoBd|T4mWWJCWm(9onB_KaO=ZF4 zVQY10;5imwiS!Uyzu{pXo=pnv6@~1A;k8HLdvj=V#iKq6Xe(AcLxl26smr`n-*eSh z0crEXX}cPysjkk!d=3brw%{+Se{w2a$gM&Qox(WI!wOzZ)bVFJpV(5PDy&bQ{=0)MB+PO2-moy7cVz&&PCv*6 z?jk3Jfq|BuMOPa;3QfKVNq?D$_m{8S4W^k$0%6Yk0ZT$CYDEm&b2{lDu2&bQKzArx ztIUz}LEON&U;^YXcZ)l>n!&kyI~mqf`E}NyKey*SJe2ZNiRLQk2x}QgQ`Q$|Ozr8& zWM|iPHG6@zoR?3NTMa88R0v~P-d?)BFT$j zzFH9nhli(jyK$r3h?&rhq`WeI==nAYP^F49#)+_}ZAKG?s|w0)MP=W4G!*LyVot0D zj7jjw2L>ru6?_idbQ~M7ba8wR2$cf1bf9sm&@JYc$zC8Ar~% zBn$qWO}8&9%Vf&_iTmu?e1F(iD51Hp+>=}t-f2I-q;!CMdG{rqqFKb}8-|3k!0 zGzW*^pcFr?H+AQdJS!e><1?=0juN;3E`NwQ)eZ85@QXlyaWldU2ym-l&yY8M)cJ>( zSrw~_HTBl7 z;QH_U>U{7WrJR;b8;*B#?;T~OXDbuBO{4>1)2Li7aFWG8d1kZ^8b*x9Izcl~Wo5$E zJ$eZ&20%D?Uh5__K^d8{VSTNC*mz~AR~4FH@9;-20RCa|pH|XsXn^owE`=_h$UY=z z?t`1>*IaqJ3=Z^j6}z2VC53?72%aJ}){*B`5UvI3VjeI22E`?ePvzo~)gx#m5mN^D z=_`aa^Ica;>`C1K03ZNKL_t))xAK6fyo;zPuKEr`t#VZ8YVqK5^kF~q5@NQU^Uo^v zWXt=_WY$2o)}IS%14^SS`hGkxvTbQWT>D5rxcjY#^cFYkFc43IE597Y(lQf9OIMnm z@b{OjQiak};`*~c+R)L7hUPKPU{!O3Dr1jb<;4^&PPt>Dy7uMM$|38s81++3aK4&>p)7C)$!vSxN=D5FK2pLp%C zc%Xen3u?tdF2kjSo5(LUGUc@9n*MZhqe#f};vXKQ2(C}|ss7AHII&lL^K}%E&VUjNsBDfqfT*T2&kspo9lfm1#R{ZTRdWGG)7U;0fYpc|*Aq+CzZtFh=X%rm3 zsTIlXr8dmr>)u@J;zy&N*CnWK8oETw?5BTL@!Q^c&@?JY08JhD_!1o6{3q%8BoGc> z^6}$B-LUD+8JB~k5s@GFDby&oqSRm~jxH4=*iVPK+J&Z#TLeZoGE6ZLZb*6QR#3nx z(LTEAOPCNEkF-C!0~~?+#n@OKgMYA^5;p1Ck{p-6a{?2uVJpZB8|PBq01!h--vgG} z=;pWV=yX^l=!sQMI5Es5sCAc|JtWV%Xiiut<%bE6;~ zw<-t|e?`(XUQatGFimlW-IS#dwfL^()cfO5Zpb#Lay~XuqQ-Jb6Q%Efz77)*I-;Vt# zH|#dd?Op5mL*mDUY%d_O>HnwSzshZsP2{&8O58qEtHF3(WX4L#tz?fIA7B%7bkm#H zfAuR9r1!gij)gs%-4E4}0R_`U|hI$n{M{m;y|58k`Tee&yp*_Dmf zI*A8{@VmS?%PLwSH}h1lI^3_CV05*&nmYH$t@gYn%$-wK)WB0^^L8x-`RWx~2Mirc z#1vXsm*qXwaDvn8cM8gSM33HpJZJPqx5Ug5qEjRvu8Y;>)k(pRWFks{A69#h0O*!* zzDUcrzc85)%9V1(MDE;KXZ*Y{PFdm`Td` z7ZgJqu#kGAp!0$In~6ZSK2WrnFCu5tMWuLzaE0Gha}i>+t36~-pXW9_NO*36?0MQ` zFHQC1c4T5V^e}h1_~{uh`h|s`Souk`Le|T?l>lDQyo)g9=@>>#zPaz5C8ys&dF9U< z$q_vHMy$QPT9sgUya!KSGwV(-Xr7v_V ze78ny`^lh&kQAVS_W$Kh${)=B{PUAEsl(U&7Ab3uK#s_P%nJ&+vQxf&*<|#n@O67N zZPe~nHrlIzSiMej?6k+1p!faZMmdN)95+!@K6uCd*S+uDd1oal zs0b|q;TSDtQJlSO>gNr3pMOfcyBL$sny3dWY7(w)Ilpz_AKrvru<9?s!WX|?vVkS> z)&S1iXHJ7+YD&=baR1wPr`XItZee)0>l~`Dk10<2(+qoVj&X@(*RuCKPk?(f(5qX$`{LT+JJuMH;6bzW;J{N)k;+?tKTzLP z*5_0~5c`M+65;}8^5AhW38~h|x0O;JZ(wI&4gAK(fQ`EXzF!|vx|$dWS@{jfR(8!r z1&_*+cJQLBc#`3hJwL~o#pM@;j}F6uRA#8tGSCpGWhndVFk+~61&}Tp1`N7*SKjlDs zQj_jZ(pWB!O?>0%EAZf34TM@P64;ZT9BQS>P|6v4P{LnzC@X9T6Eeq*YX6m%qUN9| zU|GX@j-Lz|du!*N>9I=i22KV81vvmE(eL$fWTOk1>Z}VP_;7T6xKAMl*m0|<8;b6# z6e19J7SH+JbfE3|)r+WgF{r&)UN9IkL8&FC5X^je%Gh|>yuiTdCc9SAr{nD$v>X2G z)QN)a{n_GlzT24lA*g)teO;>&b8xyf9@oXq?=mCs=;s$u&SZWissJYpp08X(UA-ItyT@)BE`k%TL}Xfp}uk z2WQ|j{$$V{&#j17-jJu=UR<*kv;x;zqMWy#~m&rBO1I)bm>lWABHz zpIr#;SLC}h9E1Tt3~N`Pe){frZ(RL5!;jTl?|21dfhDc4>~Bx6`{L#<3Pq6{n()uZ zAhTE%LPARCMLn~maJ6;&O(2=g`z`~I@hYvfHIcsb}#*SH1uo+)!yO{|{Ir?ips77w~D*`3@73Ja>(TRI(%{>+;LSp7Bgm6jERiz{@FrP(tKc+-uSftDTf3ueTOnLQU*iw>HkY^x~VC zf9q@=Sw^MFL~N+}aWboK9s97{2n!P^=#mpfiZ!eN>)yxEoUCwpG8RgI`p*j*&1yFc~M{&rp_-)HIz z_}xW%bj$gau8|k^6r^1i79q?c=C}Xs32fGS%{9%+Rl-F@pEKt(rqXsFp6Uw3bxBm7(eN%Vri< za`T3VEf=M7YNMgpl%qnLzJ-F<6rh$2JiT_xm#*X|2dZnpvH9-a2PXM-gMhT?avQW)fYCTugrVvSi{#AdBXy2OY4Y{&<&iA54sF3V z^GhzL8v(fjZeR1SS6x~3ra=5QMUfY&1t3J0GD!vaYoe&wpudlVxoBCg&Ys0&B@e+V za(6Nl!@CfP(A!spzyDZTd>UBwa+nf6fFcc+p$}p34Ym(Bdaqo(5<5U`DP4jsE#&UL z5h(LAsG|VKF;`h`5dax^yh0z$l)DiDUbNehs-F#jkLfuXAArkVlPgXz@c)6$oA|h~ zdYEnNH}aT$%}E3F^zRHpd$5zdM7}MgPuk$Wss5sD0@aSCxh%qMk1Pz4t&}c_8gu35X#a z;hm-4u?E#S@C)QWpAeHFD+vJt^lAPAe(=k%d38TY&WZcCmn?@G;+Lbs`Ym&4dt3oR zMnw9G9*`52vTn2j(%ihR<#KZnInu!h%f@Z$RDwa3BjHlI{Ow!!9xS;m!(0(U4xh>-B{T0I zAhb2gTh1BJI6z>uqpfsA735Jcalc=I)D`v?|JS`ra=A~$CDrWm3k~%3jKOCO7cb_F zH@9>(kE`CDNkbg%Et4YXLN+Q>h(mLPG#g`wjEu^*e;gOf>z*Fa&9nz@v!>i{S}|yJ zHDp@)9xG}Hn0SXcyLqFR8(4I~1IE5_g~sC~qM+h7)&A{mrly6bdH5LhLtv3BM(4$X zK}NpkB@3v&0up-rMMUp^lFZ)H*VLdoM44ISLC}@|pcc-sy6te!)z(aX&s+Q+df467 z>UWK$-Iz0(LfP19!~>ZC<^SKpd-71ajbkU$6|Pjni=(X&uL~;ZiwsZVA&{o^;wC@dw z!b3n2K8LAA@0BiSap%8re^v5EbM{R;O+Qb*OHJYW^MqaBn#56Sf);b?2EZ0W6D$J; z&dWeb4WAY6Y3wCH0-)9p=}+P;WygBeKoRe0R>j)!WES zg{niJuHU&60`0ksfm}Zv1*6dW%lG-Id@|s8@rZXW>3waTPMM=x>-5rEd%RK2gU`GV z`CptKaF_2n^I8mX;khY-zFb}($OW*iP8LkDVN2dccg1z%6&U4<5uPxIqEO}K#og;( z@dT=cpN~4$X9MQ0NXe@M_>w6pC=X7Fj**cd{Br;IN#nAl((2WBuc(HdQzyl4!GHEe z`C=-Dl~D!C`!_pFWP?%w1x8<8v$_yB-7FmxMs+j%{|SPxV9gT5Fvut8{O6o*PJR1! z_w-E9%ud|dXnTz;*_OdBFh#)==7B1Tf(JhUWnOSW!2?x*EhH=1NM1?1TFuT*p3Z&y z=6wI0|8xFx{*yD`*GB|ke1E7pTUOXJ7d?bXq1?5(7F#R`oHy(#gyu93KoASCL-Dl# z1H!GvP3)r>UwK?)_OXE8#tu>R7WZko{^IlUZi)~V6W*2~OWuO7B8@~?QU;v#vdE$y z=pzK+qbBMS#j}<`aI~wh8yyV$H(>gn<{~*b10LSwaOMbr58tXFAZVvOj069dFUr#) z_VJra5l$ErCalsgq_Wcf@(ZqZQTi>tiH})zG>_3(gEtQZdSv6G(TE7p9SFe={tuti z_1xlQgK%vvV;}NvM_vaqisI18Z}sq<$yb%lNMX;AUOJ$5z@6T~7t;s6PPL`XpeN8> zx`S?lH*^_lzg4Jl(-g<_POdINui7g=;NL)h-l064G6w{$#*L9$N*C<<vJ?au4 zXPzDu%J%U7q)Ab;Po@?5g~e8UPj9&H0*LMoF!(}j=(V=pfwON87g~h-%OGfQ43t%~ z0dh2knf9joEB&7MOJ6fq_O9kEHm@Z*eya4Dxl9pmwHtu{&^RA0sZDXQG6$Bt8|e(b z*9bb7i`!Gb{L!;43i8_l3>M;kPMTBS8WDrZAO$dno;y8(P;J%!rx- zg!d?ax@z*h$+z0W_oneMGu4PWbl1%XHGnp7L{^YI=x9l8^y`XyCy5$>KH!uCH~Vk` z=JK5gqRvg|?jd?>OE@zjSbUj z5xK7{XHX`*{WN`&+OA=oa*0iO2yW%CL>W9V<=kK=lGa-8rx&+-{_ zUXlCIRx!AtVD%mm51Nz7C-ktXaz*b`G=(||&Rj$iWepy#W?8FJP(M2xO-;5jet$1Z z&)WyqC>2bix@S&*GQp;Nk$|3EbeDhh^lbb)*^^@l;6ia``{KQlqnz0!S!7#z|6Aa$ zpNoLpq*=W18}oDK2XXytb=bHX+%Lj*-dMM1tK%NRo~K|={gh%@xeA;~OPYOMKYnlR z%YdvuhpbH4TQ%|!XdFr3pUOcx&v)|P^QA$&i|Fx9_rMHS?~e%Cx+jFwH1EwHK>br- zYQ#2nFJyX%H|(>w00*PVX|j!j{fEw=P3E-c*#}c~BF>fFQ;jF{JT6{vkToL_pAUF- zmtI`>g)D^Qxn<~&I8F^$%Yq#bM*Ayti{r>c>qk46E6wWX+2_~Q2Pu;eg;!mEqcK>T zplDGATsZ-7{ zkyZE~TYwcP_i(MfMvQRnE0v2tpbX zrT9AsB?|@mKr7bbubp>SB{#L?e)lc&WUs03Bsa>*iF43GhdG^XScehYfT}@%9e#Yq z=+sZn&f@aAdd(@v3>@w8?5d&3!&r~3IsuuJheM#IP=_IUXK?hrxg&7S(#rv{?0*S}g9r|_JPAZBHg2dhUMy`MP^<2%0h`~z%s zfdHa>#m`bf@pZEHoLdHUfdG#Rw4n=7Qo{vnt?~G}RAHcI+*pZ!9!LrplJC5I<7km^ z+OHPjulenVH@pJ$CE(9sbeU&V;Lhjtrs3T);PDQkc8!D(16Kqjz4q}H{&=kqk2{Hu zU~c4b9=g=LjDnbzm2Y0|sSM7Iq{J(GB@h1PK5M<(G8EFjTfGT4Jotvr=~4P{`X^?3 zn)|2H&{zt32cz*V|3>s3N#}1StIqH}#oVg&$uRW;eF2%mG9~u_AjtXOyl9~3c%!*G zJAAN}x%R2w2RDaC)5^Tvd23pNj@G%~L*D|vM1h$kj9hb=_IcgA&kz^=UFlAUuAlvR zFE@ch^1sV=($}|e3+lT|Q?At0GB6_%L|?329HTj_WZOWeBAqhx=VV#gtrC-hcA0W6 z$ayY>&wPrRI;)C5kAuu?^ER^#TwgFZi*lz|wM>urS$-_c;>;Ftnx2+Gu!CtL8%-g~ z&0j6Drq{E2#RZ?Clrr!0>zB55My~Mmfq3sE-v_=a7lt9>jh%5wZ54;;jLKMr8hs9? z7B@K8awaT*EbJATRDq#TKO2^E&K+D1_I3Z0-`q0KvXVBSz;IXAve)mR_)9Q#y2x;I z0&{uv0Z13kBP>bM^hqQV==gJvIe6}kaoeI;I-ySsZnZmq7gja$@yRy{y846M3%+V+Pkwa}<{z2A@2-ebizWO_ zs#$+H)v;WTfLHawoZq;_FquCe-6R%Js*CJQZyH6yj{J*uHAJ2x_4nlr0C8uPC%^h_ z{V;PAP2rW91zQ+E$e9Q5+#DmLe;`rC&%aKl_kl3;JKN6bB(h*DR4VLc9@iZxX~k~o zN^HEAOVet)eEFIEa9r=5T|a`64d2d#R|`1FO=bwnJVVxEZ2WqsDz=-8zcs9oi_!6b z0(=rDJyXXjAyYIkXjPcwe3Dtr_)`>f26WUer01yRkH>Q3MBaO(H$R%B*?6icv(jCe zUY(h>pQBk2cpc~ob%d(?CJ1DF<6fU$&kYnk#=qSh#EKu2GZ7g|UhO)|gqXJeY`JhT zwa^QWzrau7*m2OXk~{CG?e}fEV{iU^kYBsS%_+LEoe{BTe%YMe*RFq(>%43=->%Qp znZ3k4dej3Z&(J!-2jI#DDK+zIf2rm8S*YcL3uco+5|hQQLb+Zlv~7X}nnt~Z90dys z{K8vWZ+D}hd@pAmhQ)sEaHTdwE~nPQZ)WcF`ec*=|9NgAe8?OQ1h@zvp=4N7tdE{& z57E={Nw~K36J=2a+v3gB{Ved|&8H5(6s}*}sJdjYrzn?TOnYM~^iChB^Q>{9-+Fq2 zarH5Qy*=gM=vvPn&R-c@=a(xF^WikI^I7fd&mJ&+Vc41?>wSoKbUb1n?0~;nZ~{4a z1P7l|HSf=fEdJ&Xd!P0{^bFE7s^poxH+q_bQycBkb>V*B7#KePWbD>x^QvbWgqcXIP?1W3d}i_LM|vCzKD zq3E*RuU6fq0ah=j~eHwDk3|r(2`lAsu#-i1#P#8r52{UgDcsd6d}aH2^M>Q0tG!4rfbthByU&F0 z{eSK6?_oXL7IAP~{XHx1R9*s(TROutM{$H=zkBES-?A&)f#q(#KK2u-m!SEU2$s8@ zH|>3v$`!j4!cTk~@cEzoW?`$_Iuvyh5s4=o{m5%3%&6N? zLOALA<4v2q+czkuSx<%K;m3L~ha7|z+RD?bHBGT56`G|3%p{;JLr+(@gynGl$ZYKc zLbPG`N2QP8@u6gq(ee;=votupf%^IsFB0;;9=KcnB-n%lz;*`|I!*)wj#vNAiMAr9 zrYq#jK{2G1&1b8qkr?`- zvp1ijIJv0IQ{I4>Xb7_GE=~d5xl9`@29W_MX5vB%T2xqDy`1b!aw4gmkJiA>mrI40 zyTic=pLrAcO@hJgvQPa<@Pxq(oXOtzC)wrEIQ;DVtw6CLH`!%tJsa4)ixz?@A2?YP zLBlEW-o9j|oc)o`(oQEAMMt1(ZGr}z&z!K_mHJ6qx?C|2aG1qE?MBFtKj)@S@mY=P z#7;!suYLCU_TOhY^Q!pQH>HZHl#F{7n|V6jGv_%|O1}i=o8+JatuKA1-a9WTcFs7w z!|5`NUfew$=Gt+I-7PYcfzs<13ShL?(boDXRs4nx_%ie>>;eAOlsD6~ph1Yl-=qJx zSyB%jADDlTck!cE1$o$Bl)KkBUDm@E)j&0LFn9y)$6Q)TBVPY|{G5>ja3Q&8R6+Yr zcu6a#C5$E4G&|`!H;Fr2uaa32U0gJRX~#S57ugI5%Tj63aX&H@`ZlWHk)`RS_k{}# z>&xEpC8h0wf=ytrXw+@;AG_`WIaKmC63pDE+@NZble}vcdIg~~hJ6wus9ulO4c{Mv zEijJa001BWNkl*%53wTDy5&6XnH1!eFee9*3WO(BRcmQOZ!`y$I%qZuR z*I_bg8^PutwswAa@?a5^1Tyy>qCHR-ml3zxjWK8I8Mp%eW{DoD1y`e|`z#F+!0wy- zO3;4^R##|f!Mf?QTGG@z6?lO9;f^^VZ`Ko}Puaa~5hPBL@Tl|tRJ%;qAQkNZ;}6sY zArHjlL&v!x>7`J;GV-A;F%&tcIfq{zabjxB&a9}Q+x?S^u^6p64v8Bpz=*ua?v-LU zCKO%WAqL0#ixfqDh#wC#bf}^Q(4kL~Vgks05g&DJG|EZFi7KRWvZF)Xeznlk;xQXi zAZ6!1@xsU1@2Qv>-Bg!!FA1KWl^=9xR{Mt=my>Laq|pOIBGm`Wq-k}4)uWR~nDI?5 z@id8yq<3fx!gZTdmmzNemZoBibo2^0LQPMTO~c?P_-^{BhP;Mr{dwX(!rV$49f5=? zLk3s_pV~|g9mTdOnPK3CjGSfq-TsqGJH+bbKR)IY7gE!X$JdE{t{efL-+<1rHDs4S zYoazzj*>EMCzC*jW<9c z4u8)&r-nfm13at$iX&$z@rmt>SNl%@=VLSs5WVgrz5$MN;04GDAkf|NS&UejU1suW zJKxn4fAGc6#L+=Wh6qCXXN}MV#04JRCA1lUtO>)vMDq`+r+i`xi>Rlq(Ge%~L2m`S zJxOuTj;)L+xP#)D#XHNOyq9$Vc(9=H**equc5Y#OsZ4f|jb{2V!+EfZh~MC7?nteS zkMy7U?gf<`;!p&R`vP8pCv%7%!i7#~=65NP8?bxAGeOJ1DR>@6PvbXVbQ;Y&)mc<5 zTgq5Xp8>g@yvKm!D{3#mZaz)99G*eCzkc^YHen7>HbjN^kbi)6DA^-DbpGb)Vq_^a zvGcS|i4SF1|Jqr24Y>bn}(V8=V06m%6;}yjadoY;s&KM6*pco~lM>`L1|8)@ECb^H> znXRETX$Ef(zr@z+^Rr=5LYtk^sN&tR>i(CFTI$K*bgv3Hh}3%wPck{Qd<({y({oew zEXbqtV#dhbc98dP&nLCwz+qB?ltBcrgVN~rwlU6q^Jn5_JiJ`2SI^BvH$%>m1Oy|% z@@>jmq>9bY%)(n6%9HvHvx0PyrFoo8p(;`u{qfP;z$BQ`r4Sh9@EAPgiqST2ccB?i z^EVW4%uj?+TZuB_Nt~EEZ0q>^^TE;E_YrpN?5p##!zOS{dWR!XKADtz^{eJKhq}!+aVgG z=iX)g-PH2DpA=JP0^Pyxu%m2%^j(?RQk&j#Ye*^RFQ4BPxdhbQ`Q@vP|7=P8a@n)A zlow>CDVGLM%u(p9dmMISRxA6NbI9)u4`(?UySGX(IikO~!kknRekSIvY4Vibylofi zcMS+tm_*rAur%a`IQ)Fb>?|C=cayNI=WLJd@a3R9911^P{IcvbmvgsorCKs*7_rC@aEkc=@zElnMa|0-AQNd6b1zDm@6W^+g39Gn-@y-DJl#d_MoEliU1HpP z_vVkUveQcH)lx#deg4jh105KRxlqiQhDtX<<~9ppp^|euTP|fUUlMJ-uucG2_ALdb8*sx0c4Jqk_Xpy7Xt(NO_n>I zCJM&@lcZg){Ux7$SZ*g*MklR{yWw&@HqW=eJ<#c@TzE9LbE)(ISQwmurZB%`w!I`D zgYE213s$K=hCi7d>};Gx{rm$I^aG3WGY-I`Hj3Neh11KpWWPK&;4t;)4_x^xo0?Bq z`%#@@V~JajLSU`PzuDMI(j$^E_EkW z(`YAg;1+&@Kb}1X9o^9U`i9i^SgtMu{#j_HlLu`eD@KrAf>|HmcH(I@Mg*7A4`;Mnr<1B zuDI2KxuK+5U%ZW66t9;Df93zJ94;)oRIlN9IbCKY@92wGoQb!+nyrs9sg3Q7lq8in zKhLKjlOz;=@&qbNGsNAPu-k|Qt}i+OeTJ$nLr&M!xb6niZe@v@?z6FjEn#{_9bK}l zy4VzBA78g7$#Flsr)RKBn+9G%BPX;sfv*@onr#{(NjRDFByr`k_OOJg;+^YJ&g#6= z7_4GAJqN~c$z<0~kHjIlI_)ewTjA@~bhl09y{r-aih(zcesWo(p0eV-R66l;vi+nP zj#CIA%-JopCQoE6$&dv{Z%{KgDk8n^JZ1JRZy)}_(;@NW)_AoCHEPzNTZi9o`gTdP zSqtod3TH$YmM;Vp3|&o6Ulif!s`0yEktoYg6WD3|c5{RDo3ECjzPrX{qIir+$&j1W z*;_Iou)b3Z&>mC01TJT3J%>!rQv}S#*C{-n$@knQ`R$BPT*2vxM|EAuz9C?zN2At# zb_mD5hjG2ca)Mj&Hfp?>ZDwP0;AGQ zSph_U@yv#y@k%AGd&Z1~m8HTWOmvCU$GIBK^u+GU_*|Hj5sl5bz$yf~E8yT}jNSP3 zKoj2Tu*GJ3*X1xMJP~FjYFqQ=aTFCsGL!OsyOEwjoC^8)kMX~fKYmS~_gzh`I5v{V z>6Y(QY;P>Z6W@?11|n{dZbo>K#y*spHkO6-t`nHvrv+`k`4uX;TLoR1g|7h*4Yo{EmniG=Fa272ubQ9T911 zqNbXCAnAi=!TU=)Pa1^9K%p&!(ANB49%-=I8`(<)Yq1EOM^VsiHuZC zO0fa%Y#Bd52sh5By=i&j99wh2?kdz-i-`~J%+2`neY<7?Ue{aE~u(^07t@Kh=+=uk@Xfs~v9B**Y+?VA!LlLNZ7PL&lr+Bnj#u9hz^QUkEo}{uTOHsng zPxESq(guZ-Kg8BY(MM8Yeh$@Y2YRM=D9ypGCLbX(koKqIN-FEOhmCgPPxp|)PqEqY zb+7xoC1FMu&lX*hjtp}r?0~VeBv^XK5de;N}yi7M;#W*HqnY*fXgPiEuJP zsmm_kDc=1RS*#o$(|5OxUy|jS@UHA1N_UOxu;5aKHj4U*#zM?wM`M3DDzT4ag0MuJ znm_pALLMOm%K0aG{-9&!;DM5r*5VULua$=&O8}x5vapi8Kqe7@|KLn(EfC%2QO6>Q zdBXn@H9;v+lR+^t_6y*Dr7g-i>J#5`lI8Zl)GQmIq&G5w5Opf!LLb;X>NJBpk&$x8 z4n5f+re!t_41IdJs?IIi_5fHIyO{XtWR)#gzZ~KJc=1dWefeyuWRg17(x5GOWHGP( zF%~c&l4oOXFX2MB976bf?lm2j?R(v#iAS>JU;yh~2_qMPgk(IB{!YwdheS}e-6H6)}!ZPN)bh%~P zIbHrOruE)JXD@G~mGO7Efp26fdx@4G0_w)Gx0xQaMPco1Kj!QSX~E&jSm*l)0DCv( zSWV^vJxY2l?|L1YI2^Es0nTDj4;K@kub`CX&I?bYyU|@4E4H8jIF3dny4sCQq!f`c zFdRVv!Cu{DqmZN(!_M>_cqe5O{eQXkG`)Mn#zb19-6 zxInO~f{21fEP|b9wuJg|$7*EsTjImjU?3NJiBP$H!~HYLN(~I={{4{>*bakAi9U+4 z^NgwTNYfmQ693G4+C#4vF)h}hd5c;J@XVYoId%X~);*B}|3%o5_~HX%0H@u5_w^!U z*~K3sUcL!uxupe+!+Q9@j*Kk|&Tqouj%4N(DG)%4wOVI^(r$!5t`DA~u=6A~B zEjLQbkoDH`PHA}fZ=u=q_U z2`=@E#>G3qxxJf`uKRJ!JvwyLPPx*ws&B>LJ_mBiwJsR2^`T@mrLAH+n42!UpyMrr zQXTsuKRNR8a<$l{XFh`-`PI5-i2;VQlvcdr5fsD-9ma;P#4M|ZExImY9~}qdcU>vC z4S*#uC>JBgGBSO^*Edc!2=J+r9`~T@;80ym}Ge~}CGg=DGLjV6+{ow3+ zuH@`FlA0rPXe|MdE>s!cBuaNFlDrjogg(WY7*Ph4Fe{*oPnTKxvgtW#e=}H5$&Ma$ z4ljy@mey#xbYjw9jz^JH#~jzQ{u5}BCx6?ZhE2cp3cG*(Uu)f$wM@rvt1 z;NV3FW8^?n@Uv`s2Y2!7RCtuc^DYxy2kvZ`uz=qZZE>E)uAH!|nw2!0ARZeqQ;Wc( z>{>YHbmj|^I!u0$-BEzxh9$rK8(Z*^2X}*-lZ=Z%$VGuUjr&Qxh|7+hGw}U@f{R~f z;031llgzKY`d%Y*>s)jQ-QP$J<2qo%?=QgezwIV66jMbH@{JRXv#t`^+uQ19I2Jr@ zU#()#gNoH9^<+!~%s_^zGv@B>H3fJaaf|;Q;0vU)}b_9MZJOKqtK1CISqoobOw+AJ=F|hSVZA5-bFM z3{fJ;^CwSM?|_r1BMvvvM+B!>r6cy+0cV*hU^;^HSBVFzJYGv5)xgO7gf!~upbw@Z z3zozAjjt4~nQCM?hFWJvyZ}wVZ&?>|v1bg-ZC_cy3)IEvq=Qv1_Uq*yoZvg{*RDhc z)IUgsi#~41A*{ACRnl;!?<6u+QxQ)sPs?P_guaQ-;eWJ8@pW|&&DCEAdYrkJiiDuy zuDfkAWgPYDCKge+%V-A0$VF{{I2t(PVhdP&1=N0Q41%S<065Fs0DYjAxb^?8g#+iq zx;Q5`q$>bwwW!3cwsd}(sY{?Nu|u1;F38O6s%Xl(?-T zUUYZVDe1GhWLqBqKu5`B`-AZQ!@jqG2N_JOOmC$7#B&-fT#s`vH;E2|1i1e_6_=G+ z*7|%agMfZ=ZE+!RqggQvoyM#ZknA4L-nK=uvxaf0Ykn@HAu|K7dh_-BdKxAAAxvH$ zgAbjIawI?E4k zILc3~-2lTK{`HPG#ROpaeQDN5iRwl6^=zWqi@H6?LJ603dDD3-WSP*sw zPuJ>LJLj~YR;ryj7teEX;Gv_xojX~M;k4-|U*Oh=xQV_#3Cb&iv`!ydMY{`6Y(v?Zx zLNX%IGed$ly!a+P=zW-51YE-G!Ql)i(lFT?)_HePNFalh>VW@I7~NY>5?!59{#=IS z|ioZ?!L)g`e0f(VlLyU z7b+YBgd*jq`GqXxb4YjHKGP=~!*(9v8@&jK#8xKXv3=)u{z-K9kwlkDz9PlRv$7Z6tYx~i!D2!V^bxa zazI2)QuxU<4&1f8DtHlmt$l<}5ODRYu70&bc^{g%aB!9zigKYscfOO8GaKUB` zY^-slOJ6{5-!1F3Jv+0MBKmjd8|`6n8NPWuZ&z#>eAfQ zrSBR49;XFydAwPE)pgoZW^AnGWwr%pK^8Mq*h%@e{%n-s;XF84FP7w(_#EY&#NNe? zngUZnkOs595`h2hyto0vZfiMz{FeaGEbaW5(aEvDa`3O3)s^f#K|<&Wtlg^jqq@GS6_Q ztyh6y6i7mG=NFOl;U-|Qff#|Hm9EDU6}ny)MY?~LlTK@!6msD5RdbR5cI1bXAhr?C zDCe!f8P6SMMRbX+NRvqQ4hlj_Txf&d()D*|o2b2X+aanJMf=2!uniJBPurloDxU1XR+qT-rO1L;Q_(cy`-iBWIy{kJJb`+Ih z&2tUN%58q*^FD1Z9_*;Iuk3ApE^SPYgJN-fUciX7XjGur{hVyMG%TOmi)rSjNsuZB_iLBgn9$DO@aW8=-n zOdIFn<0BQGUc-CX!oD69lk_;Oq%<((qwG4rGWCy8rdIAkOviDbAv;9UtL1Ox*EIOT zPQ8)1RyR6}y=%bF&4V?!3%Q$~KGF9wdt|hOhNAg^~ zm#x5Kjt#JbW`U6tKs<%l%LjdtVxjI_xSCbL!EaYysj%OAKB87Qp%_Ee)Kyn9t?KPb zI`5k-nI2+3##j@mRGdH%gCX|+3YI4}#zexw4PN*UHpX_>s%D&dtDg4-T;v?kPAX3! zX4ViBwrv8-6F+@)meGKw!ib~EUd_8Urcmltrs~=i6w1NzHcuceB%FCH{pwr$VReGv zI>eF)ak}Eej;~rgVllUc2~xe@pKr^zizE=TJ*?rtC5>!xR8H1v6cFx_*T?Dy@Xc&J zV`Of|6Z3j|YvsJy#p`b6B8c>icVn#X^Qp z#hd`HdyDYImZC}$Kw)U8PcAa6qR~2Rn1lB{C@V1teFkSD2{-*$`fRU4AfNGcHB(1LJUgR%3GGF|T7dhtW%g+5FO`)@2ca5cV6 zWuQ%(w7m2XkWJw7ioBm4$t|oThS&(WTX}U;_2hs~qJNHY)kOCf@~*9J`G4b(x|M~p zoV6OMaO$PbEaS;Lp7UI}?=`tyV;;;V>;polQRq;2;zmvU_774&f@$vdBwMUup9Vi2 z#)$bGy~iNwOS`c|8ljoJAX50mtjfCNKGPdDI+8m8AGbtr>=U^J7g4sKZQlq8x${b2 zEZr_RNe3`nFum6GV)sK7PNNqlk_V4+@I;QfPx+4y{#av2Z~Rt%2-^Z-pI$}^s5fl@ z+;Z%BUY&qKcId9uzh3znpTfFO`{k%|4_Oa_$X5WfP*nh;H4j@ES|UowFEp6hKr>Ej z2H5%(^udA5gt6a{j%!sfLJD4q&V4q-aqxOh_;gvoO@=XMI3y52J;Dhi-8mt>uP?KW z(vPmL3@L;XM87Qs1RIv}d^ERT{E{f}j{1mVyfFQ$w_TpjqtLVvKG;Z{ctAT{TpgM@ zzDv!P*T4LCsfsATx~c}Xc)H^_jcxhZFVGT?Y7(VKiUxM(VhSO8GjlnC@2O*6001BWNkln@4~*B0nQ8CBV_5*eT}>A|Q#TTChknxHDzgxNfr zpJYE4J=k@Ro?h5&bQ6tln5kWMEJQu4YoG)%D{YuagKE%NP znGs!svuBCY*RL37y8JWgB0)_<1iLwD27a_aDY2A#WvNzm#?Nm*tN=(rx4(}5&W^=8 zGo!a?vyU=KSD8jh%4Y=eCO2+t3#^cdp{2`F!9hqO?Ohm6e&*6=C_Xd7G>^@MlA03A z*P9IWtBG4w&oqioNQ8~#cvz2oo@!)nyXb?&**D$MB+i8I)y{+Asviwfo}YXQ|5O$d zdVpU3`h|24GrYG%Fu+n%0|t0ax2!3=%3(=&I8UW1hnvL9U|e#0t-pS@{>X`L4u{o^ zWL{Y?oI_P;k7DPEwA77pF*+h43>@PwkDC+*E5S_0Ts@;GCH(1WiHIt+>yvtRDmpOR0vfhCAzUTY}X>&@1Ts{q5V%n>HmrZ;sJbaE!S9mHrS$ zGU3wHdpMmVA(KjYDn%k6j1JjCtSSNW`nIvVOsR`div-V=4If9>Sf5C zWN%;Rw&?&iWf6=KMMW(1}DcDCvIJvLo^Qexb^wa(sVq%h)Jsx zAgRu5l+L*0Fz_TyfTJ8u4$~rjptn)96>!jsB_Km8D8XAz05MYez{LUQ)nhH4MUbUg zKT2^r?nDcYu!$v&q9j(*~Oiz5JUrqDvAE& z74X?NWT{B?&YkU@h@GZE5LjNL0xukrRZTeJ`!jtHTDoLXAU)$<;^ z=rPr0;QZT?P%4}rq$>qvFuwDVf#~zLzL=7p7wu8B8NJ2hA1%8Fd|)WC?r_QiaxUy23in`EkJp&C~SS@e52^ zK}-s0GgW7jJ)GU+yA0NM->Y1op&R261EXZG-D4j>5(EC{<@uSvn$#}>rBXD8Ji!WY zMDF!hK4)E`5841}se9m;VI>tQH?{9gyIUf1pE^(*oN8sr=8%FQ@}8iWnpF#|;eyF? zb8IP^X)evEs+9cJSy!wJ7fhwGN%p42BgsfBZpaE-_HX01id?cKv;ZTzfv=RuO9O>r zbAg_{v>k8=ZCbCkDlhtEPVeEQH3`F&6$@Xm%bknErllJ9sQGRh#K2fAl9c|i`&?&ahHO@TLIg5V6$b7fW@;6K8Zc`mD-$JKgH^L@<$-&^guLF|te zgRb+&IA}n2jt2b*h*}HpmiRGtTCQuq4vXjvGkBgc#$9-A8&^#U84VW^vraiMZJnJv zm2@!&pdADD9p`C(t5}K7ASxJ?g+A27KZd?e_))&ln4j~Qt%D@y+lh%1B}**$vv9yj zcyTg80}h`|(g>4$gQ30ux0{PiGaV>OHYUS1lu1u5t|r}BcT!$4TtI8y0H}snS|vM0 z8;D`X5DTlX_u-8S$3gLefw5AnEi|q>d8~inNO_w}*|WakaFJHJk-Ri=xzTY#ok?M1`odV|FP`)syhEZ>Y31^9+w(l43~4DQ z+|;mwPvorc{)W9*_s0;8aFT}@Kyooj!}GLtcI5Jt*V*;P;Iq5Go1A;Kpi3DYax((m zMV68UD3BDcpe#y`f5UON#D?uGPpJ0CkKvyd;w3xExd3_154UWp* z^@7)=e_WIGk-qAnXFEe9{x_ z%M$%U4ux7NwA&%vcB++(0O+@hF90WJMseBK7bF~O97QEy)lD}~65A!bYFshwVoLc7 zj-w5g$T)Yv|FUTjjA@XBlk71|9ZLYIdLl9Yb^p#{5GkD0r&+j#RB=b^F75VSt$d7) zom>&a2Vlxqb^V?gzz_#w(j?jtnQy z&QUyzB7`Qz1NcMQNyP?$gNK8ynshYI7-pv8$#hnH)kG|`*gh%yH-i#Y^RDw%niXT= z%bwu znZds9zK3hX^#3OaK6+(M3L(D+R7U46u^Wc zS6AzRaFV{x;Yhijo#Rpr(xl;fRt#6SJnL<4_|!470$%_lV=eMGKLP)4iQwKa;5X>q z;2)%NhK{@~g>nB7{?zQIreD>);&^ati}aQ!Qmae9uY!3b6GUvNV%IO>W!jZve!Auh zItI@DBI%-NV$9%>tGU)RtTQuJm`m-N0RbZq!Deh_gqUf6%CLL*(z5kLN)>h z$u#eJ?S#^80fka%>IO0y9UCnj2hP_RMJWw}9nwiu22Q%FgcZYAfk3%_#j=Ct{aL;=piCv>~DCUz-}gF-OJ zl`Z%8y=DO;(Tqwo!@$D4vWFMBn+Y^Enk37@Z_c&>iwN?Dw`|sIF+b6y5Nx<<9_F@A z!DOeY%>^znT`L2r;UJ_HqDYN0V_MIB0B2wnSpc|P51+k8X_#U&5OAs`b3}pv)2LFv zKEb!;YNh))f?QaQi#}_=2^9snIX6@e4yv9(7r`_(ddXjHt)N25PuZ0T@Sazz1ER%q zIt7C?5{`2S9+90{ZzZY*2Z2(=aEaAT+LS(BWI&u*XiioN>^R%uPku0$$*sbq_uzra z;dY9Hg_3Df&%eqF8v$H&ks^7yFhwO?JGhoxSHfQ+I1%%>{^Z4|jh}%cOYibaWiUbIpPzVYD#8s{CTj4brH%be&I9hpA zrdst4Se#--1FHp>XSVvzmQM?zBfGC9JPNqB?CNe*&I#4-)A>_e4OvGkF*-|d3UoT# z%wf?TglOuUIoWA&(`gaS=>Uk9G2>7DEavqQt4D`Pmnq6Lg4l};0-$sNHyL0~(GCaG zjmIy*|6x}7$e%Oe6u%c6lk?+3C&rpoZ*4;A@}(Y#ZJer1#x}ze$z-(iBhmMZvR_uN z22mU*bspP}@?wCK`H-w)`oJiAOW1KF7IILTb(gVmZ}DcoxR|b4Iz~uu%9Is`NzIz^ zA7==NXqm@nsC*>w0exJ)rqtJKnmSLK`#N}bfgLnFneMek)Woo*LiPd@pjlh(n@ znYLo?&=FWX3_YhR9X}7>x?{n@Vx8vx2DijK2PA1(=?+k4`st_qyU3NazMPn)kE=dbBE(kS3)fbzG_xlWy?~VxX}|#B$B33k zV=9dA26jWfLYq*4r$ZR^VRFi}S2$#v^PN@*YW%`$crE-dxPr@Cf+8{&l4odH zn*-d2U#Pugkxys2x!v^Ly0ix@0geD!Y&wLB(GWB-+7i^0b3PJ;I5Ti3GUk;=y;gd) zX8qIeX1qj0rd5zZys`mk0h4JF!(_1|_GhIkI3n~HQE{WF6*??}6<$4akUjf1vk!Y5!L*30RvM-#4X^4kca&cQ+gFwPoxLf8ajhR7mt`2CBt#%PYHgmyfL z@Jva(QiL$p)c)w_1ri7`pU;O(qIp^3iMP?$29nP;v>sgS?sYwhnoieiZ47r1k<%a) z3D#kNfNV!KF(^NvOh0l~jupm;uq!T>x+~KN6cmoiJTqDvYm7up&w(hu#)ngsT@2cd zH9P;>jfr2x4^`OyamC4_(Ujs*p*oAFpYmH#eGh~4j2vD^a6Z-x4QJZqW-E9xkgCN( zoz~3nCwX?arkUj0QaXyNocSg2A7I?USN(Y|zxyuz$6rTn1O$tL87zFu4JlLu!4L}5 zG%E6aeea#Eb8TCkypd#&MG6We?88@uQka`?C7dM@C+HsLBg-qG0D$ZoDGf$UqxtlL zlcTK4_mQS%QZbfcqRtpk65xWoetB?(YK%ktm1P?4SU0)K#=-kwlo^IoTav^BLuZ5w@ON9mrXciJ*yBN9cwjZ%jP)w~7!@I5rrgq?oxz5F79G$#oh9gAPoqzHR6_{zV6d?XGoCO^v<6&JN3x^Tx`|h&| zSuK~avuAS?z^Mqqg?f?v?vaVVRXVp?q$^iZCu|UC_SK)%7Vc-wrM_97&t-dFey5Y6 z>A<243tODG?`2DP6UAH;vFqGIWTu%rc8qmeXxwEdK@GlKXAN`_LbyE((^8q-6!dA2 zY{2>1#ZEqEc+<(!9pYNW4N9WD@tVXJj-b2sdbJvBq|<}If8f3XHc^#gM4c9%9&2%q zq$b7_Mr?lt{Umx}mN>w3%C=$Wf1zkzU=ka3!o5ik>b$C^R&2*26eDhnyr4IjaZs9S zd}3Hw8Y9buPGfUXRgYJ4O>z~A!7kjwYJFH(g*ENh3vO8Z5TnBRo9f>ZJw0wxq@}@2 zUI8s_JOl{_==*ibF2Mb{@KI*)H1_84-1CUSCKd@ud3?=s&Z<^nP!b1qxWH*&4EsH3 zZxh^v62dkYL7gJSfm^QuuTNdKf)9xr4?sKYLQ4XR5XD%AUXcx(*+i{1z_QxB$dhm% zlTcuk=9Y^I_S~?qV>)W9G47zqIxiKeTI)}LNaj>+Hb45;9n-BB=BAqV==e(7N>Z>p zhm=o>kACOuOis265_Q6QUk-ScsKM;UXaX-ThRg@WUc_=WDn+ueP{YlyA1f*$axLu@ zQL{{N2G(zF`I-3|E^5^7{LyY(x7Y^A>HP%4p&&2F<3$8 zTAjU#NqDO+q{Ccxyl@gCIqI)im=d5=6g3A8!Q5JzaSHjAxU+*5X2*cxg8$=REFb_X zVMTH^FvfiV0kLoZZ^(H#wNT2t_Hl7TKY;=?YyQ{D?Ao%hO*Dz;=uWF4EFA?|5s+0! zj5<5D%6uQ;x-Ob}G^;7vBX$>`Pjf<_q(wwy>XmJ3=H#c{!`tbklzjGNCfz9^WW#^4 zeMf&i2R18_abu7>jXZKrpT?V8@pD6IlvjfU5Cx#lgyzM|5zf^T9w92Wyc$CQj^FO& zfnk#vK#}Ry<$2E`+hrLG0Ut$9 z4$LwzpxLLZ9bvp!WRzWK^*;^XZvfDFQk(P8>lH?4Vz7Qdd^RiCX7yd-I3nu>RdLpf z!cIIqpG!5k+@Qi2S0rtZOr=B+V2bzGdrZA<2ApU6OZh;u&K5|(qZx*R88|XpEw{%U zv?o7^DQ~PnbuHUuedoHHb6XcswU5w5*W( z0D)dEeHQ$?_e&0)Yl6Zl&dZa)TRVYUp{GnGTHBVpnC!BnHg>&EMP~Eu+v<~-K(Q7D z+1xv_l49TMl|CbUc-6EB(}5F{Ys@Nu7#heJZ}JZqZZST1!A*=cMAAyUOm zZ~AJn+I!E{u=~|fPV1Hz;5nbAVFJljXY}$}X$LN*$0ME!5hrCTd*oy^nnxy9B_SqY zN^#`maUzs&1EhF;4byCpNPuho@ypUJMHR2m!nIT!8g65|r`%bMufJUuD%zsBYj?|c zb2<+=&b&NMR1&{c9f`LfBS)3RiZ1B`tOmRR(2KYXC2)T7bX64L?XCFDxpXl%435iP0p7MscTWQnXV;; zz03f1j*=9*%(pxM?LE~s*YCWaJDY7jd2>T4x~U2Yp4gNOX;yY~EN=kOII;bLM6VXa zPW}4yMO>%Zn5!^hH{>u4XFWzC#k?-{Y!HEcTt${%|3qpgynH!NsDtb?kEwqWn`rK? zo>~Pj$8x}$GutFsED%_9)s5@B!~6ke3QQJLrQE!RU?&G_W5owIh9&RlP{stVUWt6;*B+Xb>AM zqG)9E;`YxGE$&Ws4hJ_YtifI$)6VYx@Knog{|x+o&T?@IW+>&{FpQ9Y?sEl(AR?IXkI-&#v-T3A2N;ix6s*V=fz4M@O1}C{M2*->`?y{ zxjQ~3fp}A19R=S=+rjbhU-I3kUWV(;%kx6rJ?84p2A`;Kk-ULx2&6kG%uT;fiYjrl zib(0u`A&wf8izxg#KALXJ<2NF*e_c_g(Va?rBNsKq}Ez5%0`v-V-FYe6<7!I;22BJ zmT9o|?U*g$3yK9xkR@;faG&$5oCN_%0(p;zXzJd7D@j>WQ1w?Z>#|YSPL^{5xOUX- zMW5E^4(<*8w0tiY$6rU61SlrZ}Ao`fYP)(L5#oAg|xN?Mz4NkCm zWu@8qCj2mDl*&>I;mPX9cO4eFdW~0^$nmO-Jj zsp(ig_xN?EnI-PDRh}j?L<2^9M-5y=RrSw)5JDT>Ixr1E$a8_mlZy6PQZF+UhvlKM%Mk!nne`TFtq0{ ztR^)3qyO$!%f1X?l!Ya0xw#9RU3=3jTJ$SCjhW@5HCRZub3z8f6bu2n4cVq$DkN`i z+JzeR!ki80NuVu~m^oBuYXB@0;Gr;vZ&N5^Xe5;T`eOFVt#@z#RWSuf3r$VXT~cu( z#G*AE;$dg|IdBNcH^O!w=tOj~D)lTWJDNcGMY(SZ_0|>|bke^wbRRSNQ5g526k#p8Jec=$8 z#O;dq(kV!rgw7a2bNDiks9S{)nj2=TaRn;Vl|_~~3){{xGcFddMvF60;J~Rb$JZw2 zuEkC^bwMOvT0Ss7tCv8cchTHACpO%S7cqu!#yytNpM4KU0DkmdoMb4`LJ`@91bX)qzJZ(mPglzsqY?{3+?KU%m* zAsd%>a3^0}Vz@Eps*vctqDnWe-2Rw!!Q`{A&VkL1VUpKqce#+O6zHWY0F*ak2h!*5 z{TX-wX70ljjfLgI1sVVNsM`}^m&cmgqpZ5bS%v8h_QS`3E)f_i9qJ!_U%Xe3sOhLZc8N-nV@AkJvt?Ova`MW6fG4jdN~ zGqY{YjT3e$Y&h0ZwtD0d{@jS!bO6-Q_3pc%9i#J?GRnQU$trJ`3bRiqJXN5}g*B=4 z=h+0$*u%P0;a>I8_SWUdgvIW>#0BModA(3e#k5)qRKULMLQ2}rb5@Hy{nOT7x`{VwZi< z%*{FYm6tM#*LQ1NU~x$38kxBq;~>S2sC064`2CnpHhv_IBRx~f*)+SH&~aI)fIf|o zE46GG5KII&8r3eKE($EFN|M5hD;jPx$1d%`bYi^D>5H%hb@_eHiEk-MIr`nNtpww4 zHRH;@6J;;gFqU~J-Fa`h+P}G^qi_NoI$bxZZ=VlJBv@&=7oYjAD>I>6DWm4f#7awA z(F0T_3z}b`CeT6d;Qk5HvBE`FJ^^5tUqd zWR^tjRv_hPs{92}oHE;ZgiS5obpkRSIUE)U``zmYwZ)oxi{Y@#B;GA4#bH;;*+h3= zOpJMv9RAHVCa{*rOzk=5nXMVy_Q7X~;1E3eN*_fmrbt5ARR91W07*naRCKbdN}Uz@ zQ2xTkVnfKRtsQ)BI82^QT1Ab33`g>CCSz($2Y59_*z%~4N$$wYXtgYthcB}li|wec z2E<(OrP~e+yI4vW^kHQ_h@AfW$wNav5-+=1lA%mIIut+c9fI3GmX06Y6d@k;Xxtm8 zOkoy?y>y3x#b`=~C){2Ug)C=*zb%Lg`;Bwx` zph-+jW;_g{mZj~#w-X1?e%ED+Jj4Thjdf;TAVriFa@5_%_$7_u#gv_&)3Xs-3i7dP{$tE7>Bx{*EAi73ct8)ID!;M%_dC*+}QY0{+cbk4N*!x)>x}ark z)0`woCA|8Y#~t8ujJjNlfT-LLB`-{Qp~R50jDA9v=NU_dkiMYPs5o1Lw1wlPx4X~S zMm&k@tqt1J87cFMR0hm=h?r{Y*(tNW8E%a2WQ_;hf&8 ziP3NQ_XDbIAVd(f?T5okFb(!;6`S(~M6;%!74BTEn_KeeiMVuBGUeX7{(?B1u+{7t z<@vtM1N?02xm-KQqcznEe2Rha@Df-2@(0f21yII$VG91eRN~mhiWtqH141X|^*q7f zxRRrpK~2ef6Gq4*YIkE8b_y1NOR?r^n+2)2qISV6fpr#AcF8J)ojWBo#R)vRt^iI1 z;AQ+(pdc$xhnRvJK0hXIdsEs}KY8o;H#bIr?lu&}CQ8xlD!(URo9pcZSB00aO!O|B zGG80YbWz{&9E{Lrsg#_pC6z)c>!v`(hz9Lb&T@^!fXCfJr&BD)3s74w84uG2U$vg( z!nGQRM=UV$It)3-1JcKbXD`d^u>yc?6)eAs=626~!1zkt6e6^-{r8ZwtrYmFy_@}r+QvMhX z>;?8<2(%aDsRqMmX%1ilg003(yX-Gu!Bn@+ppOdCY@X*}s>qe;oS_^* zzKc@9Q+sa%A*~a8CEP}6H;QnNVpm_!*}|TQKXbBcD_w!C>T?vD`aNJT3_QCeL1=dF z6p9O2T?I6SP&?6z|V)S(A%dYI%-Or_{_doe-@%Ur~ntrflQhQh7QS5MXUOrRyertRS72LEv9 zQg1B3ff@n$M@v8zw3oS$&|j3n+tK-1e3rwbAkygw#~ZSwVn;#`^nk+py7elg}+MfL1* z+~7I#Rm#H@$Zm5v1<#F5)x9d8YZbnYMcvDcn?-V;;R+X!m-Ad!ARIVxHa55SVhq(IY@SJ`q4-fK zz!$XpPv0cMQ4@m?=_uq$#9Os0?z8`Q`qy`?X>j976)K`mm&F}~n_8XRUSM!;ybYbd zSk|fBG)hR|P0F{}NoNzfqONUXmy z@FYJV(uyy#HS;?0R#uBo4KaEWW)k@A>8bKp)Hi_lL-~U;shRlcHQoRg-k4_cI9;#N z63ELAF=w+?O->^V;_tqBit=l!nK)$ipt9uM>m|z-DHQRs3Te2xDL8$Q;Vhm{bq@P{ zLnLl4+*Y~*;Aq}si~5CFfa#60#l@#kYo4yk60i-A?|^1BCzrT_s`X!^?b^vV zJ~K9V5JJ379542GJp^XYQkf%0DM>anQQYOQ(2RizsmqAvLm=1DddN!M6lZZ`jW>pC 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%0A)=3L_*Ol4fS}s6LYETWCZ@z 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

1fKeQ|5*LhJzm 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%0A}`)=u2Zx!+X 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 literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.generate.sh new file mode 100644 index 00000000..3484ffb0 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.generate.sh @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +nim_workspace=/tmp/nim/generator/cv_nim +nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.profile.yaml new file mode 100644 index 00000000..ffde05a2 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.profile.yaml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema_version: '1.0' +model: "eevaigoeixww/dev/tao_cv" +release: 'rc1' +simple: + profiles: + - model_version: seg.cradiov2_b.engine_b1_fp16_A6000_tao2_trt10.9 + tags: + gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.yaml new file mode 100644 index 00000000..31398c30 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.yaml @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +schema_version: '2.0' +profile_selection_criteria: auto +model: eevaigoeixww/dev/tao_cv +release: rc1 +profiles: +- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd + tags: + gpu: a6000 + workspace: + files: + nvdsinfer_config.yaml: + uri: ngc://eevaigoeixww/dev/tao_cv:seg.cradiov2_b.engine_b1_fp16_A6000_tao2_trt10.9?file=nvdsinfer_config.yaml + checksum: blake3:8e479d4f7fc8ac37b0b690040213f4cde8ac7c279ba120fa316e36d9d40ab41e + segformer.onnx_b1_gpu0_fp16.engine: + uri: ngc://eevaigoeixww/dev/tao_cv:seg.cradiov2_b.engine_b1_fp16_A6000_tao2_trt10.9?file=segformer.onnx_b1_gpu0_fp16.engine + checksum: blake3:13ce94093ac0f2365ccacc2ccc7fbf6be1aba981a2f3eed0422606346db6af3d diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/seg/nvdsinfer_config.yaml new file mode 100644 index 00000000..fbfb7172 --- /dev/null +++ b/tools/inference_builder/builder/samples/tao/validation/seg/nvdsinfer_config.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +property: + gie-unique-id: 6 + process-mode: 1 + infer-dims: 3;224;224 + maintain-aspect-ratio: 1 + net-scale-factor: 0.007843137255 # 1 / (0.5 x 255) + offsets: 127.5;127.5;127.5 # 0.5 x 255 + network-mode: 2 + network-type: 2 # seg + num-detected-classes: 2 + onnx-file: segformer.onnx + model-engine-file: ./segformer.onnx_b1_gpu0_fp16.engine + output-blob-names: output + # output-tensor-meta: 1 + segmentation-output-order: 1 + workspace-size: 1048576 + parse-segmentation-func-name: NvDsInferParseCustomSegformerTAO2 + custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so diff --git a/tools/inference_builder/builder/samples/vllm/Dockerfile b/tools/inference_builder/builder/samples/vllm/Dockerfile new file mode 100644 index 00000000..27d932c1 --- /dev/null +++ b/tools/inference_builder/builder/samples/vllm/Dockerfile @@ -0,0 +1,88 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NvidiaProprietary +# +# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual +# property and proprietary rights in and to this material, related +# documentation and any modifications thereto. Any use, reproduction, +# disclosure or distribution of this material and related documentation +# without an express license agreement from NVIDIA CORPORATION or +# its affiliates is strictly prohibited. + +# Sample Dockerfile for a vLLM-based vision-language pipeline using a +# Triton-enabled DeepStream base image for accelerated video decoding. +# This is specific to the vllm sample in this repository. +# Stage 1: pull in DeepStream libraries, binaries, and sample assets. +FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS ds_stage + +FROM nvcr.io/nvidia/vllm:26.02-py3 AS inference_base + +ENV NVIDIA_DRIVER_CAPABILITIES $NVIDIA_DRIVER_CAPABILITIES,video + +# Install GStreamer plugins and DeepStream runtime dependencies needed +# for hardware-accelerated decoding and RTSP support. +RUN apt update && apt install -y --no-install-recommends gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ + libyaml-cpp-dev libgstrtspserver-1.0-0 libjsoncpp25 libgles2 pkg-config + +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/lib /opt/nvidia/deepstream/deepstream-9.0/lib +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/bin /opt/nvidia/deepstream/deepstream-9.0/bin +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.sh /opt/nvidia/deepstream/deepstream-9.0/ +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.txt /opt/nvidia/deepstream/deepstream-9.0/ +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/README* /opt/nvidia/deepstream/deepstream-9.0/ +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.pdf /opt/nvidia/deepstream/deepstream-9.0/ +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/service-maker /opt/nvidia/deepstream/deepstream-9.0/service-maker +COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/samples/streams/* /opt/nvidia/deepstream/deepstream-9.0/samples/streams/ + +# Copy CUDA NPP and nvjpeg libraries required by DeepStream GStreamer +# plugins (nvvideoconvert, nvdsgst_image, etc.) that are absent from +# the vLLM base image. +COPY --from=ds_stage /usr/local/cuda-13.1/targets/x86_64-linux/lib/libnpp*.so* /usr/local/lib/ +COPY --from=ds_stage /usr/local/cuda-13.1/targets/x86_64-linux/lib/libnvjpeg*.so* /usr/local/lib/ +RUN ldconfig + +RUN /opt/nvidia/deepstream/deepstream-9.0/install.sh +RUN ln -sf deepstream-9.0 /opt/nvidia/deepstream/deepstream || true + +# Install Python dependencies required by THIS Qwen sample. These +# versions are pinned for reproducibility and can be adjusted for +# other pipelines or environments. +RUN --mount=type=cache,target=/root/.cache/pip pip install qwen-vl-utils[decord]==0.0.8 \ + python-multipart==0.0.9 \ + aiofiles==23.2.1 \ + aiohttp==3.11.0 \ + annotated-types==0.7.0 \ + python-magic==0.4.27 \ + numpy==1.26.4 \ + omegaconf==2.3.0 + +WORKDIR /workspace + +# Copy the inference flow package generated by Inference Builder. +# This tarball (here: vllm.tgz) is typically produced when running the +# builder with tarball output enabled, and its name should match the +# generated pipeline artifact you want to deploy. +ADD vllm.tgz /workspace + +## Set Environment variables required for DeepStream+vLLM runtime. +# Ensure DeepStream libraries are on the library path and enable +# adaptive batching and appropriate CUDA architectures. +ENV LD_LIBRARY_PATH /opt/nvidia/deepstream/deepstream/lib +ENV NVSTREAMMUX_ADAPTIVE_BATCHING yes +ENV NVIDIA_DRIVER_CAPABILITIES=$NVIDIA_DRIVER_CAPABILITIES,video +ENV TORCH_CUDA_ARCH_LIST "7.5 8.0 8.6 9.0 10.0" +ENV CUDA_CACHE_DISABLE 0 + +# Create the entrypoint script that runs the Inference Builder-generated +# /workspace/__main__.py for this vLLM pipeline. +RUN touch /workspace/start_server.sh && \ + chmod a+rx /workspace/start_server.sh && \ + cat > /workspace/start_server.sh <<-EOF + #!/usr/bin/env bash + set -eu + # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + # SPDX-License-Identifier: LicenseRef-NvidiaProprietary + python3 /workspace/__main__.py +# while true; do sleep 5; done +EOF + +ENTRYPOINT ["/workspace/start_server.sh"] +CMD [] diff --git a/tools/inference_builder/builder/samples/vllm/README.md b/tools/inference_builder/builder/samples/vllm/README.md new file mode 100644 index 00000000..de346aba --- /dev/null +++ b/tools/inference_builder/builder/samples/vllm/README.md @@ -0,0 +1,131 @@ +## Introduction + +This example demonstrates how to build an inference pipeline with Nvidia Deepstream MediaExtractor and vLLM Inference backends + +## Prerequisites + +The sample models including `Cosmos-Reason2-2B` and `Qwen3-VL-2B-Instruct` can all be downloaded from huggingface (Be sure to have git-lfs installed): + +```bash +git clone https://huggingface.co/nvidia/Cosmos-Reason2-2B ~/.cache/model-repo/Cosmos +``` + +or + +```bash +git clone https://huggingface.co/Qwen/Qwen3-VL-2B-Instruct ~/.cache/model-repo/Qwen3-VL +``` + +## Generate the Inference Package + + +### Cosmos-Reason2-2B + +```bash +python builder/main.py builder/samples/vllm/vllm_nvdec_cosmos.yaml --api-spec builder/samples/vllm/openapi.yaml \ +-o builder/samples/vllm/ -c builder/samples/qwen/processors.py -t +``` + +### Qwen3-VL-2B-Instruct + +```bash +python builder/main.py builder/samples/vllm/vllm_nvdec_qwen3_vl.yaml --api-spec builder/samples/vllm/openapi.yaml \ +-o builder/samples/vllm/ -c builder/samples/qwen/processors.py -t +``` + +## Build and Start the Inference Microservice: + +The sample folder already contains all the ingredients for building the microservice, all you need is to run the command: + +```bash +cd builder/samples +docker compose up ms-vllm --build +``` + +## Test the model with a client + +There is an OpenAI client included in the sample for testing, and for image input, you can directly run the client with image path: + +```bash +cd builder/samples/qwen +python client.py --images +``` + +For video input, you need to first upload a test video file. + +**⚠️ Important:** **replace the placeholder in below command with an actual file path in your system**. + +```bash +export VIDEO_FILE= +curl -X "POST" \ + "http://localhost:8800/v1/files" \ + -H "accept: application/json" \ + -H "Content-Type: multipart/form-data" \ + -F "file=@$VIDEO_FILE;type=video/mp4" +``` + +You'll get a response 200 with a json body: +{ + "data": { + "id": "577a9f11-2b24-4db8-82c8-2601e0c2b6e4", + "path": "/tmp/assets/577a9f11-2b24-4db8-82c8-2601e0c2b6e4/its_1920_30s.mp4", + "size": 3472221, + "duration": 30000000000, + "contentType": "video/mp4" + } +} + +Similarly, for live stream input, you need to first add a live stream as an asset. + +**⚠️ Important:** **replace the placeholder in below command with an actual RTSP address**. + +```bash +export LIVE_STREAM= +curl -X "POST" \ + "http://localhost:8800/v1/streams" \ + -H "accept: application/json" \ + -H "Content-Type: application/json" \ + -d "{\"url\": \"$LIVE_STREAM\", \"name\": \"my-stream\"}" +``` + +Run the client.py with the returned asset id and specify the frames per chunk and number of chunks to extract: + +```bash +cd builder/samples/qwen +python client.py --videos "577a9f11-2b24-4db8-82c8-2601e0c2b6e4?frames=8&chunks=1" +``` + +You can also optionally specify the frame interval and scaling parameters: + +```bash +# Extract 1 chunk with 8 frames at the interval of 0.5s, and resize it to 640x260, then do summarization +python client.py --videos "577a9f11-2b24-4db8-82c8-2601e0c2b6e4?frames=8&chunks=1&interval=500000000&scaling=640x360" +``` + +Or use raw json payload with curl to get the result of all the chunks using "x-ndjson": + +```bash +curl -X 'POST' \ + 'http://localhost:8800/v1/chat/completions' \ + -H 'accept: application/x-ndjson' \ + -H 'Content-Type: application/json' \ + -d '{ + "model": "qwen3_vl", + "messages": [ + { + "role": "user", + "content": [ + { + "type": "text", + "text": "Please describe the video in detail." + }, + { + "type": "video", + "video": "577a9f11-2b24-4db8-82c8-2601e0c2b6e4?frames=8" + } + ] + } + ], + "max_tokens": 200 +}' +``` diff --git a/tools/inference_builder/builder/samples/vllm/openapi.yaml b/tools/inference_builder/builder/samples/vllm/openapi.yaml new file mode 100644 index 00000000..8f444d5f --- /dev/null +++ b/tools/inference_builder/builder/samples/vllm/openapi.yaml @@ -0,0 +1,1367 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +openapi: 3.1.0 +info: + title: NVIDIA NIM for VLMs + summary: Accelerated VLM inference for NVIDIA GPUs. + version: 1.1.2 +paths: + /v1/health/ready: + get: + tags: + - Health + summary: Health Ready + description: Provide your implementation of readiness to know when container ready to accept traffic + operationId: health_ready_v1_health_ready_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: {} + /v1/chat/completions: + post: + summary: OpenAI-compatible chat endpoint + operationId: create_chat_completion_v1_chat_completions_post + parameters: + - name: content-type + in: header + required: false + schema: + anyOf: + - type: string + - type: 'null' + title: Content-Type + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NIMLLMChatCompletionRequest' + responses: + '200': + description: Successful Response + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/NIMLLMChatCompletionResponse' + - $ref: '#/components/schemas/NIMLLMChatCompletionStreamResponse' + title: Response Create Chat Completion V1 Chat Completions Post + '400': + description: Received an invalid request possibly containing unsupported + or out-of-range parameter values. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: The requested model does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '415': + description: Unsupported Media Type + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + /v1/files: + post: + tags: + - Files + summary: Upload a media file that can be used as inference input. + description: Upload media files to be used as inference input. Currently, only images upto 50 MB are supported. + operationId: add_media_file + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/AddFileRequest' + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/AddFileResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + get: + tags: + - Files + summary: Returns a list of the uploaded files. + description: Returns a list that includes ID, file name, size, purpose, file size, and media type for the uploaded files. + operationId: list_media_files + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/ListFilesResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' + /v1/files/{file_id}: + delete: + tags: + - Files + summary: Delete a uploaded file. + description: Deletes an uploaded file based on ID. + operationId: delete_media_file + parameters: + - name: file_id + in: path + required: true + schema: + type: string + maxLength: 36 + pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' + description: File having 'file_id' to be deleted. + title: File Id + description: File having 'file_id' to be deleted. + responses: + "200": + description: Successful Response. + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteFileResponse' + "500": + description: The invocation ended with an error. + content: + application/json: + schema: + $ref: '#/components/schemas/Errors' +components: + schemas: + BaseModel: + properties: {} + type: object + title: BaseModel + ChatCompletionLogProb: + properties: + token: + type: string + title: Token + logprob: + type: number + title: Logprob + default: -9999.0 + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + additionalProperties: false + type: object + required: + - token + title: ChatCompletionLogProb + ChatCompletionLogProbs: + properties: + content: + anyOf: + - items: + $ref: '#/components/schemas/ChatCompletionLogProbsContent' + type: array + - type: 'null' + title: Content + additionalProperties: false + type: object + title: ChatCompletionLogProbs + ChatCompletionLogProbsContent: + properties: + token: + type: string + title: Token + logprob: + type: number + title: Logprob + default: -9999.0 + bytes: + anyOf: + - items: + type: integer + type: array + - type: 'null' + title: Bytes + top_logprobs: + items: + $ref: '#/components/schemas/ChatCompletionLogProb' + type: array + title: Top Logprobs + additionalProperties: false + type: object + required: + - token + title: ChatCompletionLogProbsContent + ChatCompletionNamedFunction: + properties: + name: + type: string + title: Name + additionalProperties: false + type: object + required: + - name + title: ChatCompletionNamedFunction + ChatCompletionNamedToolChoiceParam: + properties: + function: + $ref: '#/components/schemas/ChatCompletionNamedFunction' + type: + type: string + const: function + title: Type + default: function + additionalProperties: false + type: object + required: + - function + title: ChatCompletionNamedToolChoiceParam + ChatCompletionResponseChoice: + properties: + index: + type: integer + title: Index + message: + $ref: '#/components/schemas/ChatMessage' + logprobs: + anyOf: + - $ref: '#/components/schemas/ChatCompletionLogProbs' + - type: 'null' + finish_reason: + anyOf: + - type: string + enum: + - stop + - length + - tool_calls + - type: 'null' + title: Finish Reason + default: stop + stop_reason: + anyOf: + - type: integer + - type: string + - type: 'null' + title: Stop Reason + additionalProperties: false + type: object + required: + - index + - message + title: ChatCompletionResponseChoice + ChatCompletionResponseStreamChoice: + properties: + index: + type: integer + title: Index + delta: + $ref: '#/components/schemas/DeltaMessage' + logprobs: + anyOf: + - $ref: '#/components/schemas/ChatCompletionLogProbs' + - type: 'null' + finish_reason: + anyOf: + - type: string + enum: + - stop + - length + - tool_calls + - type: 'null' + title: Finish Reason + stop_reason: + anyOf: + - type: integer + - type: string + - type: 'null' + title: Stop Reason + additionalProperties: false + type: object + required: + - index + - delta + title: ChatCompletionResponseStreamChoice + ChatCompletionToolsParam: + properties: + type: + type: string + const: function + title: Type + default: function + function: + $ref: '#/components/schemas/FunctionDefinition' + additionalProperties: false + type: object + required: + - function + title: ChatCompletionToolsParam + ChatMessage: + properties: + role: + type: string + title: Role + content: + anyOf: + - type: string + - type: 'null' + title: Content + tool_calls: + anyOf: + - items: + $ref: '#/components/schemas/ToolCall' + type: array + - type: 'null' + title: Tool Calls + additionalProperties: false + type: object + required: + - role + title: ChatMessage + DeltaMessage: + properties: + role: + anyOf: + - type: string + - type: 'null' + title: Role + content: + anyOf: + - type: string + - type: 'null' + title: Content + tool_calls: + anyOf: + - items: + $ref: '#/components/schemas/ToolCall' + type: array + - type: 'null' + title: Tool Calls + additionalProperties: false + type: object + title: DeltaMessage + ErrorResponse: + properties: + object: + type: string + title: Object + default: error + message: + type: string + title: Message + type: + type: string + title: Type + param: + anyOf: + - type: string + - type: 'null' + title: Param + code: + type: integer + title: Code + additionalProperties: false + type: object + required: + - message + - type + - code + title: ErrorResponse + FunctionCall: + properties: + name: + anyOf: + - type: string + - type: 'null' + title: Name + default: '' + arguments: + anyOf: + - type: string + - type: 'null' + title: Arguments + default: '' + additionalProperties: false + type: object + title: FunctionCall + FunctionDefinition: + properties: + name: + type: string + title: Name + description: + anyOf: + - type: string + - type: 'null' + title: Description + parameters: + anyOf: + - type: object + - type: 'null' + title: Parameters + additionalProperties: false + type: object + required: + - name + title: FunctionDefinition + HTTPValidationError: + properties: + detail: + items: + $ref: '#/components/schemas/ValidationError' + type: array + title: Detail + type: object + title: HTTPValidationError + ImageURL: + properties: + url: + type: string + title: Url + type: object + required: + - url + title: ImageURL + Logprob: + properties: + logprob: + type: number + title: Logprob + rank: + anyOf: + - type: integer + - type: 'null' + title: Rank + decoded_token: + anyOf: + - type: string + - type: 'null' + title: Decoded Token + type: object + required: + - logprob + title: Logprob + NIMLLMChatCompletionMessage: + properties: + role: + $ref: '#/components/schemas/Role' + description: The role of the message's author. + content: + anyOf: + - type: string + minLength: 1 + - items: + anyOf: + - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartImage' + - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartText' + - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartVideo' + - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartVideoStreaming' + type: array + title: Content + description: "The contents of the message.\n
To pass images (only\ + \ with role=`user`):\n
- When content is a string, image\ + \ can be passed together with the text with `img` HTML tags that wraps\n\ + \ an image URL (``),\n base64 encoded\ + \ image data (``),\n or an NVCF asset ID (``)\n when the container is hosted in NVCF and the payload exceeds\ + \ 200KB.\n or http link (`https:{image_link}`)\n
\ + \ - When content is a list of objects, images can be passed as objects\ + \ with type=`image_url`.\n
- In both cases, images can\ + \ be PNG, JPG or JPEG.\n
To pass videos (only with role=`user`):\n\ + \
- When content is a string, video can be passed together\ + \ with the text with `video` HTML tags that wraps\n a video URL\ + \ (`

gP@it+=Gpr_;WP0x7`a9)wUyp4W5f!5^J+&RH{! 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ⅆ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 literal 0 HcmV?d00001 diff --git a/tools/inference_builder/builder/tests/frame_sampling/app.yaml b/tools/inference_builder/builder/tests/frame_sampling/app.yaml new file mode 100644 index 00000000..2fba2217 --- /dev/null +++ b/tools/inference_builder/builder/tests/frame_sampling/app.yaml @@ -0,0 +1,42 @@ +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "video_files" + data_type: TYPE_CUSTOM_VIDEO_CHUNK_ASSETS + dims: [ -1 ] + optional: true + - name: "video_streams" + data_type: TYPE_CUSTOM_LONG_VIDEO_ASSETS + dims: [ -1 ] + optional: true + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: media_frames + data_type: TYPE_FP32 + dims: [ -1, -1, -1, -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + preprocessors: + - kind: "custom" + name: "frame-picker" + input: ["video_streams"] + output: ["media_frames"] + config: { "num_frames": 10 } + - kind: "custom" + name: "frame-picker" + input: ["video_files"] + output: ["media_frames"] + config: { "num_frames": 10 } + +routes: { + ':["video_files"]': 'dummy', + ':["video_streams"]': 'dummy', + 'dummy:["output"]': ':' +} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/frame_sampling/processors.py b/tools/inference_builder/builder/tests/frame_sampling/processors.py new file mode 100644 index 00000000..07d5b12e --- /dev/null +++ b/tools/inference_builder/builder/tests/frame_sampling/processors.py @@ -0,0 +1,36 @@ +import torch +import logging + +logger = logging.getLogger(__name__) + +class FramePickerProcessor: + name = "frame-picker" + + def __init__(self, config): + self.num_frames = config['num_frames'] + # Eagerly initialize CUDA to avoid GIL deadlock with GStreamer threads + torch.cuda.init() + + def __call__(self, *args, **kwargs): + if len(args) != 1: + raise ValueError( + "FramePickerProcessor expects exactly one argument" + ) + frame_list = args[0] + if len(frame_list) != self.num_frames: + raise ValueError( + f"FramePickerProcessor expects a list of " + f"{self.num_frames} frames, while got {len(frame_list)}" + ) + torch_tensors = [ + torch.utils.dlpack.from_dlpack(frame.tensor) + for frame in frame_list + ] + + # Log frame dimensions for verification + if torch_tensors: + # Tensor shape is typically (H, W, C) from MediaExtractor + h, w = torch_tensors[0].shape[0], torch_tensors[0].shape[1] + logger.info(f"FramePickerProcessor: received {len(torch_tensors)} frames with dimensions {w}x{h}") + + return torch.stack(torch_tensors) diff --git a/tools/inference_builder/builder/tests/negative/df_1.yaml b/tools/inference_builder/builder/tests/negative/df_1.yaml new file mode 100644 index 00000000..824be9c9 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/df_1.yaml @@ -0,0 +1,50 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "base64" + data_type: TYPE_CUSTOM_BINARY_BASE64 + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +server: + responders: + healthy_ready: + operation: health_ready_v1_health_ready_get + infer: + operation: inference + requests: + InferenceRequest: > + { + "base64": ["hello"] + } + responses: + InferenceResponse: > + { + "data": {{ response.outputs | tojson }} + } + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + +routes: { + ':["base64"]': 'dummy:["inputs"]', + 'dummy:["output"]': ':' +} diff --git a/tools/inference_builder/builder/tests/negative/df_2.yaml b/tools/inference_builder/builder/tests/negative/df_2.yaml new file mode 100644 index 00000000..76db5efe --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/df_2.yaml @@ -0,0 +1,50 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "base64" + data_type: TYPE_CUSTOM_BINARY_BASE64 + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +server: + responders: + healthy_ready: + operation: health_ready_v1_health_ready_get + infer: + operation: inference + requests: + InferenceRequest: > + { + "base64": [1, 2] + } + responses: + InferenceResponse: > + { + "data": {{ response.outputs | tojson }} + } + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + +routes: { + ':["base64"]': 'dummy:["inputs"]', + 'dummy:["output"]': ':' +} diff --git a/tools/inference_builder/builder/tests/negative/df_3 copy.yaml b/tools/inference_builder/builder/tests/negative/df_3 copy.yaml new file mode 100644 index 00000000..4b3d5cf7 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/df_3 copy.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + postprocessors: + - kind: "custom" + name: "pp-output-2" + input: ["output"] + output: ["output_1", "output_2"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/df_3.yaml b/tools/inference_builder/builder/tests/negative/df_3.yaml new file mode 100644 index 00000000..a83bc7e8 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/df_3.yaml @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "video" + data_type: TYPE_CUSTOM_LONG_VIDEO_ASSETS + dims: [ -1 ] + optional: true + - name: "image" + data_type: TYPE_CUSTOM_IMAGE_ASSETS + dims: [ -1 ] + optional: true + - name: "video_chunk" + data_type: TYPE_CUSTOM_VIDEO_CHUNK_ASSETS + dims: [ -1 ] + optional: true + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1 ] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + +routes: { + ':["video"]': 'dummy:["inputs"]', + ':["image"]': 'dummy:["inputs"]', + ':["video_chunk"]': 'dummy:["inputs"]', + 'dummy:["output"]': ':' +} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/image.yaml b/tools/inference_builder/builder/tests/negative/image.yaml new file mode 100644 index 00000000..d9a4f0e6 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/image.yaml @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "image" + data_type: TYPE_CUSTOM_IMAGE_BASE64 + dims: [ -1 ] + optional: true + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: image + data_type: TYPE_UINT8 + dims: [ -1, -1, -1, -1 ] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] diff --git a/tools/inference_builder/builder/tests/negative/mo_1.yaml b/tools/inference_builder/builder/tests/negative/mo_1.yaml new file mode 100644 index 00000000..4b3d5cf7 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/mo_1.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + postprocessors: + - kind: "custom" + name: "pp-output-2" + input: ["output"] + output: ["output_1", "output_2"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/mo_2.yaml b/tools/inference_builder/builder/tests/negative/mo_2.yaml new file mode 100644 index 00000000..f20dc58a --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/mo_2.yaml @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +server: + responders: + healthy_ready: + operation: health_ready_v1_health_ready_get + infer: + operation: inference + requests: + InferenceRequest: > + { + "inputs_not_found": ["hello"] + } + responses: + InferenceResponse: > + { + "output": {{ response.outputs | tojson }} + } +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/model.yaml b/tools/inference_builder/builder/tests/negative/model.yaml new file mode 100644 index 00000000..ce03f7ca --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/model.yaml @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] diff --git a/tools/inference_builder/builder/tests/negative/payloads/payloads.jsonl b/tools/inference_builder/builder/tests/negative/payloads/payloads.jsonl new file mode 100644 index 00000000..63702345 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/payloads/payloads.jsonl @@ -0,0 +1 @@ +{"text": ["hello"]} diff --git a/tools/inference_builder/builder/tests/negative/pp_1.yaml b/tools/inference_builder/builder/tests/negative/pp_1.yaml new file mode 100644 index 00000000..698a2950 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/pp_1.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + postprocessors: + - kind: "custom" + name: "pp-output-2" + input: ["output"] + output: ["output"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/pp_2.yaml b/tools/inference_builder/builder/tests/negative/pp_2.yaml new file mode 100644 index 00000000..2c1d58cb --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/pp_2.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + preprocessors: + - kind: "custom" + name: "pp-output-2" + input: ["inputs"] + output: ["inputs"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/pp_3.yaml b/tools/inference_builder/builder/tests/negative/pp_3.yaml new file mode 100644 index 00000000..fa869b99 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/pp_3.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + preprocessors: + - kind: "custom" + name: "pp-nonexist" + input: ["inputs"] + output: ["inputs"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/processors.py b/tools/inference_builder/builder/tests/negative/processors.py new file mode 100644 index 00000000..9a35c1ab --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/processors.py @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +class InvalidProcessor1: + name = "pp-output-2" + + def __init__(self, config): + pass + + def __call__(self, *args, **kwargs): + return 0, 1 + +class InvalidProcessor2: + name = "pp-output-int" + + def __init__(self, config): + pass + + def __call__(self, *args, **kwargs): + return 0 diff --git a/tools/inference_builder/builder/tests/negative/route_1.yaml b/tools/inference_builder/builder/tests/negative/route_1.yaml new file mode 100644 index 00000000..465caf3e --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/route_1.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + +routes: { + ':["inputs"]:': 'dummy::', + 'dummy:["output"]': ':' +} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/route_2.yaml b/tools/inference_builder/builder/tests/negative/route_2.yaml new file mode 100644 index 00000000..4123eb75 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/route_2.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + +routes: { + ':["inputs"]': 'dummy:', + 'dummy:"output"': ':' +} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/route_3.yaml b/tools/inference_builder/builder/tests/negative/route_3.yaml new file mode 100644 index 00000000..8b18d7b8 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/route_3.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + +routes: { + ':["inputs"]': 'dummy:"inputs"', + 'dummy:["output"]': ':' +} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/route_4.yaml b/tools/inference_builder/builder/tests/negative/route_4.yaml new file mode 100644 index 00000000..71029f9b --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/route_4.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + +routes: { + ':["inputs"]': 'dummy2', + 'dummy:["output"]': ':' +} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/route_5.yaml b/tools/inference_builder/builder/tests/negative/route_5.yaml new file mode 100644 index 00000000..803c66c6 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/route_5.yaml @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "inputs" + data_type: TYPE_STRING + dims: [ -1 ] + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: inputs + data_type: TYPE_STRING + dims: [ -1] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] + +routes: { + ':["inputs"]': 'dummy', + 'dummy2:["output"]': ':' +} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/video.yaml b/tools/inference_builder/builder/tests/negative/video.yaml new file mode 100644 index 00000000..c0987670 --- /dev/null +++ b/tools/inference_builder/builder/tests/negative/video.yaml @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +input: + - name: "video_chunk" + data_type: TYPE_CUSTOM_VIDEO_CHUNK_ASSETS + dims: [ -1 ] + optional: true + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [ 1 ] + +models: +- name: dummy + backend: dummy + max_batch_size: 1 + input: + - name: video_chunk + data_type: TYPE_UINT8 + dims: [ -1, -1, -1, -1 ] + output: + - name: output + data_type: TYPE_FP32 + dims: [ 1 ] diff --git a/tools/inference_builder/builder/tests/output_types/app.yaml b/tools/inference_builder/builder/tests/output_types/app.yaml new file mode 100644 index 00000000..9759e4c5 --- /dev/null +++ b/tools/inference_builder/builder/tests/output_types/app.yaml @@ -0,0 +1,110 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: "test-app" +model_repo: "/workspace/models" + +# Input specification for testing various input types +input: + - name: "text" + data_type: TYPE_STRING + dims: [ -1 ] + optional: true + +# Output specification with multiple numpy array types +output: + - name: "outputs" + data_type: TYPE_STRING + dims: [ -1 ] + +server: + responders: + healthy_ready: + operation: health_ready_v1_health_ready_get + infer: + operation: inference + requests: + InferenceRequest: > + { + {% if request.text is not none %} + "text": [ + {% for item in request.text %} + {{ item|tojson }}{% if not loop.last %}, {% endif %} + {% endfor %} + ] + {% endif %} + } + responses: + InferenceResponse: > + { + "data": {{ response.outputs | tojson }} + } + +models: + - name: output_types_dummy + backend: "dummy" + max_batch_size: 1 + parameters: {} + input: + - name: text + data_type: TYPE_STRING + dims: [ -1 ] + output: + - name: int8_output + data_type: TYPE_INT8 + dims: [5, 4] + - name: int16_output + data_type: TYPE_INT16 + dims: [5, 4] + - name: int32_output + data_type: TYPE_INT32 + dims: [5, 4] + - name: int64_output + data_type: TYPE_INT64 + dims: [5, 4] + - name: uint8_output + data_type: TYPE_UINT8 + dims: [5, 4] + - name: uint16_output + data_type: TYPE_UINT16 + dims: [5, 4] + - name: uint32_output + data_type: TYPE_UINT32 + dims: [5, 4] + - name: uint64_output + data_type: TYPE_UINT64 + dims: [5, 4] + - name: fp16_output + data_type: TYPE_FP16 + dims: [5, 4] + - name: fp32_output + data_type: TYPE_FP32 + dims: [5, 4] + - name: fp64_output + data_type: TYPE_FP64 + dims: [5, 4] + - name: bool_output + data_type: TYPE_BOOL + dims: [5, 4] + - name: string_output + data_type: TYPE_STRING + dims: [5] + postprocessors: + - kind: "custom" + name: "output-types-validator" + input: + - int8_output + - int16_output + - int32_output + - int64_output + - uint8_output + - uint16_output + - uint32_output + - uint64_output + - fp16_output + - fp32_output + - fp64_output + - bool_output + - string_output + output: + - outputs diff --git a/tools/inference_builder/builder/tests/output_types/payloads/payloads.jsonl b/tools/inference_builder/builder/tests/output_types/payloads/payloads.jsonl new file mode 100644 index 00000000..79d79b3d --- /dev/null +++ b/tools/inference_builder/builder/tests/output_types/payloads/payloads.jsonl @@ -0,0 +1,4 @@ +{"text": ["hello-1"]} +{"text": ["hello-2"]} +{"text": ["hello-3"]} + diff --git a/tools/inference_builder/builder/tests/output_types/processors.py b/tools/inference_builder/builder/tests/output_types/processors.py new file mode 100644 index 00000000..dc977f08 --- /dev/null +++ b/tools/inference_builder/builder/tests/output_types/processors.py @@ -0,0 +1,68 @@ +from numpy import int64, uint, uint8 +import numpy as np + + +class Validator: + name = "output-types-validator" + + def __init__(self, config): + pass + + def __call__(self, *args): + int8_outputs = args[0] + int16_outputs = args[1] + int32_outputs = args[2] + int64_outputs = args[3] + uint8_outputs = args[4] + uint16_outputs = args[5] + uint32_outputs = args[6] + uint64_outputs = args[7] + fp16_outputs = args[8] + fp32_outputs = args[9] + fp64_outputs = args[10] + bool_outputs = args[11] + string_outputs = args[12] + + # Type assertions + assert isinstance(int8_outputs, np.ndarray), f"int8_outputs should be ndarray, got {type(int8_outputs)}" + assert int8_outputs.dtype == np.int8, f"int8_outputs should have dtype int8, got {int8_outputs.dtype}" + + assert isinstance(int16_outputs, np.ndarray), f"int16_outputs should be ndarray, got {type(int16_outputs)}" + assert int16_outputs.dtype == np.int16, f"int16_outputs should have dtype int16, got {int16_outputs.dtype}" + + assert isinstance(int32_outputs, np.ndarray), f"int32_outputs should be ndarray, got {type(int32_outputs)}" + assert int32_outputs.dtype == np.int32, f"int32_outputs should have dtype int32, got {int32_outputs.dtype}" + + assert isinstance(int64_outputs, np.ndarray), f"int64_outputs should be ndarray, got {type(int64_outputs)}" + assert int64_outputs.dtype == np.int64, f"int64_outputs should have dtype int64, got {int64_outputs.dtype}" + + assert isinstance(uint8_outputs, np.ndarray), f"uint8_outputs should be ndarray, got {type(uint8_outputs)}" + assert uint8_outputs.dtype == np.uint8, f"uint8_outputs should have dtype uint8, got {uint8_outputs.dtype}" + + assert isinstance(uint16_outputs, np.ndarray), f"uint16_outputs should be ndarray, got {type(uint16_outputs)}" + assert uint16_outputs.dtype == np.uint16, f"uint16_outputs should have dtype uint16, got {uint16_outputs.dtype}" + + assert isinstance(uint32_outputs, np.ndarray), f"uint32_outputs should be ndarray, got {type(uint32_outputs)}" + assert uint32_outputs.dtype == np.uint32, f"uint32_outputs should have dtype uint32, got {uint32_outputs.dtype}" + + assert isinstance(uint64_outputs, np.ndarray), f"uint64_outputs should be ndarray, got {type(uint64_outputs)}" + assert uint64_outputs.dtype == np.uint64, f"uint64_outputs should have dtype uint64, got {uint64_outputs.dtype}" + + assert isinstance(fp16_outputs, np.ndarray), f"fp16_outputs should be ndarray, got {type(fp16_outputs)}" + assert fp16_outputs.dtype == np.float16, f"fp16_outputs should have dtype float16, got {fp16_outputs.dtype}" + + assert isinstance(fp32_outputs, np.ndarray), f"fp32_outputs should be ndarray, got {type(fp32_outputs)}" + assert fp32_outputs.dtype == np.float32, f"fp32_outputs should have dtype float32, got {fp32_outputs.dtype}" + + assert isinstance(fp64_outputs, np.ndarray), f"fp64_outputs should be ndarray, got {type(fp64_outputs)}" + assert fp64_outputs.dtype == np.float64, f"fp64_outputs should have dtype float64, got {fp64_outputs.dtype}" + + assert isinstance(bool_outputs, np.ndarray), f"bool_outputs should be ndarray, got {type(bool_outputs)}" + assert bool_outputs.dtype == np.bool_, f"bool_outputs should have dtype bool_, got {bool_outputs.dtype}" + + assert isinstance(string_outputs, np.ndarray), f"string_outputs should be ndarray, got {type(string_outputs)}" + # String arrays can be np.bytes_ (|S*), np.str_ (U*), or np.object_ + assert np.issubdtype(string_outputs.dtype, np.bytes_) or np.issubdtype(string_outputs.dtype, np.str_) or string_outputs.dtype == np.object_, \ + f"string_outputs should have string-like dtype, got {string_outputs.dtype}" + + return [], diff --git a/tools/inference_builder/builder/tests/run_tests.sh b/tools/inference_builder/builder/tests/run_tests.sh new file mode 100644 index 00000000..8ecb80e4 --- /dev/null +++ b/tools/inference_builder/builder/tests/run_tests.sh @@ -0,0 +1,194 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# Test script wrapper for Docker container builds +# This script provides easy-to-use commands for testing Docker builds + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +TEST_SCRIPT="$SCRIPT_DIR/test_docker_builds.py" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Function to print colored output +print_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +print_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +print_warning() { + echo -e "${YELLOW}[WARNING]${NC} $1" +} + +print_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# Function to show usage +show_usage() { + cat << EOF +Usage: $0 [OPTIONS] + +Run Docker build tests using a configuration file (defaults to test_configs.json). + +Options: + --no-cleanup Don't cleanup Docker images after testing + --output FILE Save test report to specified file + -c, --config FILE Use configuration file (optional, defaults to test_configs.json) + --log-dir DIR Directory to save container logs (default: logs) + -t, --test-case NAME Run only test cases matching this name (partial match). Use '*' for all. + --gpus DEVICES GPU devices to use (default: 'all'). Examples: 'all', 'device=0', 'device=0,1' + +Examples: + $0 + $0 -c my_config.json --output results.json + $0 --no-cleanup --output full_results.json --log-dir test_logs + $0 -t "Frame Sampling" + $0 -t "*" + $0 --test-case "FastAPI" + $0 --gpus "device=0" + $0 --gpus "device=0,1" -t "*" + +EOF +} + +# Function to check prerequisites +check_prerequisites() { + print_info "Checking prerequisites..." + + # Check if Docker is installed and running + if ! command -v docker &> /dev/null; then + print_error "Docker is not installed or not in PATH" + exit 1 + fi + + if ! docker info &> /dev/null; then + print_error "Docker is not running or you don't have permissions" + exit 1 + fi + + # Check if Python script exists + if [ ! -f "$TEST_SCRIPT" ]; then + print_error "Test script not found: $TEST_SCRIPT" + exit 1 + fi + + # Check if Python script is executable + if [ ! -x "$TEST_SCRIPT" ]; then + print_warning "Making test script executable..." + chmod +x "$TEST_SCRIPT" + fi + + print_success "Prerequisites check passed" +} + +# Parse command line arguments +NO_CLEANUP="false" +OUTPUT_FILE="" +CONFIG_FILE="" +LOG_DIR="logs" +TEST_CASE="" +GPUS="all" + +while [[ $# -gt 0 ]]; do + case $1 in + -h|--help) + show_usage + exit 0 + ;; + --no-cleanup) + NO_CLEANUP="true" + shift + ;; + --output) + OUTPUT_FILE="$2" + shift 2 + ;; + -c|--config) + CONFIG_FILE="$2" + shift 2 + ;; + --log-dir) + LOG_DIR="$2" + shift 2 + ;; + -t|--test-case) + TEST_CASE="$2" + shift 2 + ;; + --gpus) + GPUS="$2" + shift 2 + ;; + *) + print_error "Unknown option: $1" + show_usage + exit 1 + ;; + esac +done + +# Change to script directory +cd "$SCRIPT_DIR" + +# Check prerequisites +check_prerequisites + +# Determine configuration file (default to test_configs.json) +if [ -z "$CONFIG_FILE" ]; then + CONFIG_FILE="test_configs.json" + print_info "No configuration file provided, using default: $CONFIG_FILE" +fi + +if [ ! -f "$CONFIG_FILE" ]; then + print_error "Configuration file not found: $CONFIG_FILE" + exit 1 +fi + +print_info "Running tests with configuration: $CONFIG_FILE" + +args=("--dockerfile" "Dockerfile" "--base-dir" "." "--config-file" "$CONFIG_FILE" "--log-dir" "$LOG_DIR") + +if [ "$NO_CLEANUP" = "true" ]; then + args+=("--no-cleanup") +fi + +if [ -n "$OUTPUT_FILE" ]; then + args+=("--output" "$OUTPUT_FILE") +fi + +if [ -n "$TEST_CASE" ]; then + args+=("--test-case" "$TEST_CASE") +fi + +if [ -n "$GPUS" ]; then + args+=("--gpus" "$GPUS") +fi + +python3 "$TEST_SCRIPT" "${args[@]}" + +print_success "Test execution completed" \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/setup_rtsp_server.sh b/tools/inference_builder/builder/tests/setup_rtsp_server.sh new file mode 100644 index 00000000..6f359e5b --- /dev/null +++ b/tools/inference_builder/builder/tests/setup_rtsp_server.sh @@ -0,0 +1,376 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# RTSP Server Setup Script for Testing +# This script sets up an RTSP server using cvlc to stream MP4 videos for testing +# Supports both MP4 files directly and JPEG images (transcoded to MP4) + +set -e + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Function to print colored output +print_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +print_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +print_warning() { + echo -e "${YELLOW}[WARNING]${NC} $1" +} + +print_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# Default configuration +RTSP_PORT=8554 +RTSP_MOUNT_POINT="video-stream" +INPUT_FILE="" +CACHE_TIME=1500 +FRAME_RATE=1 +DURATION=5 +TEMP_DIR="/tmp/rtsp_server" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PID_FILE="${SCRIPT_DIR}/logs/rtsp_server.pid" +LOG_FILE="${SCRIPT_DIR}/logs/rtsp_server.log" + +# Function to show usage +show_usage() { + cat << EOF +Usage: $0 [OPTIONS] + +Options: + -p, --port PORT RTSP port (default: 8554) + -m, --mount MOUNT_POINT RTSP mount point (default: video-stream) + -c, --cache CACHE_TIME Network caching time in ms (default: 1500) + -f, --fps FRAME_RATE Frame rate for JPEG transcoding (default: 1) + -d, --duration DURATION Duration per frame in seconds for JPEG (default: 5) + --daemon Run as daemon in background + -k, --kill Kill existing RTSP server + -s, --status Check RTSP server status + -h, --help Show this help message + +Examples: + $0 sample_video.mp4 + $0 sample_image.jpg + $0 -p 8555 -m test-stream sample_image.jpg + $0 --daemon -f 2 -d 3 sample_image.jpg + $0 --kill + $0 --status + +Environment Variables: + RTSP_PORT Default RTSP port + RTSP_MOUNT_POINT Default mount point + INPUT_FILE Default input file path + FRAME_RATE Default frame rate for JPEG transcoding + DURATION Default duration per frame for JPEG + +EOF +} + +# Function to check prerequisites +check_prerequisites() { + print_info "Checking prerequisites..." + + # Check if cvlc is installed + if ! command -v cvlc &> /dev/null; then + print_error "cvlc (VLC command line) is not installed" + print_info "Install VLC: sudo apt-get install vlc" + exit 1 + fi + + # Check if ffmpeg is installed (for JPEG transcoding) + if ! command -v ffmpeg &> /dev/null; then + print_error "ffmpeg is not installed" + print_info "Install ffmpeg: sudo apt-get install ffmpeg" + exit 1 + fi + + # Check if port is available + if netstat -tuln 2>/dev/null | grep -q ":$RTSP_PORT "; then + print_warning "Port $RTSP_PORT is already in use" + print_info "Use --kill to stop existing server or specify different port" + fi + + # Create temp directory + mkdir -p "$TEMP_DIR" + + print_success "Prerequisites check passed" +} + +# Function to transcode JPEG to MP4 +transcode_jpeg_to_mp4() { + local jpeg_file="$1" + local output_mp4="$2" + local frame_rate="$3" + local duration="$4" + + print_info "Transcoding JPEG to MP4..." + print_info "Input: $jpeg_file" + print_info "Output: $output_mp4" + print_info "Frame rate: $frame_rate fps" + print_info "Duration per frame: $duration seconds" + + # Create a video from JPEG image with specified frame rate and duration + ffmpeg -loop 1 -i "$jpeg_file" -c:v libx264 -tune stillimage -crf 18 -preset ultrafast \ + -r "$frame_rate" -t "$duration" -y "$output_mp4" > /dev/null 2>&1 + + if [ $? -eq 0 ] && [ -f "$output_mp4" ]; then + print_success "JPEG transcoded to MP4 successfully" + return 0 + else + print_error "Failed to transcode JPEG to MP4" + return 1 + fi +} + +# Function to get file type +get_file_type() { + local file="$1" + local file_info=$(file "$file" 2>/dev/null) + + if echo "$file_info" | grep -q "JPEG\|JFIF"; then + echo "jpeg" + elif echo "$file_info" | grep -q "MP4\|MPEG\|AVI\|MOV\|WebM\|video"; then + echo "video" + else + echo "unknown" + fi +} + +# Function to kill existing RTSP server +kill_rtsp_server() { + if [ -f "$PID_FILE" ]; then + local pid=$(cat "$PID_FILE") + if kill -0 "$pid" 2>/dev/null; then + print_info "Killing existing RTSP server (PID: $pid)" + kill "$pid" + sleep 2 + if kill -0 "$pid" 2>/dev/null; then + print_warning "Server still running, force killing..." + kill -9 "$pid" + fi + print_success "RTSP server stopped" + else + print_warning "PID file exists but process not running" + fi + rm -f "$PID_FILE" + else + print_info "No RTSP server PID file found" + fi +} + +# Function to check server status +check_status() { + if [ -f "$PID_FILE" ]; then + local pid=$(cat "$PID_FILE") + if kill -0 "$pid" 2>/dev/null; then + print_success "RTSP server is running (PID: $pid)" + print_info "RTSP URL: rtsp://localhost:$RTSP_PORT/$RTSP_MOUNT_POINT" + return 0 + else + print_warning "PID file exists but process not running" + rm -f "$PID_FILE" + return 1 + fi + else + print_info "RTSP server is not running" + return 1 + fi +} + +# Function to cleanup temp files +cleanup_temp_files() { + if [ -d "$TEMP_DIR" ]; then + rm -rf "$TEMP_DIR" + print_info "Cleaned up temporary files" + fi +} + +# Function to start RTSP server +start_rtsp_server() { + local input_file="$1" + local daemon_mode="$2" + + # Validate input file + if [ ! -f "$input_file" ]; then + print_error "Input file not found: $input_file" + exit 1 + fi + + # Get file type + local file_type=$(get_file_type "$input_file") + local video_file="$input_file" + + if [ "$file_type" = "jpeg" ]; then + print_info "JPEG file detected, transcoding to MP4..." + local output_mp4="$TEMP_DIR/transcoded_$(basename "$input_file" .jpg).mp4" + + if ! transcode_jpeg_to_mp4 "$input_file" "$output_mp4" "$FRAME_RATE" "$DURATION"; then + exit 1 + fi + + video_file="$output_mp4" + print_info "Using transcoded MP4: $video_file" + elif [ "$file_type" = "video" ]; then + print_info "Video file detected, using directly" + else + print_warning "Unknown file type: $input_file" + print_info "Attempting to use as video file..." + fi + + # Kill existing server + kill_rtsp_server + + # Create cvlc command for video streaming + # Use loop to continuously stream the video + # Add headless flags for Docker/CI environments + local cvlc_cmd="vlc-wrapper -I dummy --no-video-title-show --no-xlib --loop \"$video_file\" \":sout=#gather:rtp{sdp=rtsp://:$RTSP_PORT/$RTSP_MOUNT_POINT}\" :network-caching=$CACHE_TIME :sout-all :sout-keep" + + print_info "Starting RTSP server..." + print_info "Input file: $input_file" + print_info "Video file: $video_file" + print_info "RTSP URL: rtsp://localhost:$RTSP_PORT/$RTSP_MOUNT_POINT" + print_info "Command: $cvlc_cmd" + + if [ "$daemon_mode" = "true" ]; then + # Run as daemon + print_info "Running in daemon mode" + nohup bash -c "$cvlc_cmd" > "$LOG_FILE" 2>&1 & + local pid=$! + echo "$pid" > "$PID_FILE" + sleep 2 + + if kill -0 "$pid" 2>/dev/null; then + print_success "RTSP server started in background (PID: $pid)" + print_info "Log file: $LOG_FILE" + print_info "PID file: $PID_FILE" + else + print_error "Failed to start RTSP server" + if [ -f "$LOG_FILE" ]; then + print_error "Log file contents:" + cat "$LOG_FILE" + fi + exit 1 + fi + else + # Run in foreground + print_info "Running in foreground mode (Ctrl+C to stop)" + print_info "RTSP server will be available at: rtsp://localhost:$RTSP_PORT/$RTSP_MOUNT_POINT" + echo "$$" > "$PID_FILE" + + # Set up cleanup on exit + trap cleanup_temp_files EXIT + + exec bash -c "$cvlc_cmd" + fi +} + +# Parse command line arguments +DAEMON_MODE="false" +KILL_SERVER="false" +CHECK_STATUS="false" + +while [[ $# -gt 0 ]]; do + case $1 in + -p|--port) + RTSP_PORT="$2" + shift 2 + ;; + -m|--mount) + RTSP_MOUNT_POINT="$2" + shift 2 + ;; + -c|--cache) + CACHE_TIME="$2" + shift 2 + ;; + -f|--fps) + FRAME_RATE="$2" + shift 2 + ;; + -d|--duration) + DURATION="$2" + shift 2 + ;; + --daemon) + DAEMON_MODE="true" + shift + ;; + -k|--kill) + KILL_SERVER="true" + shift + ;; + -s|--status) + CHECK_STATUS="true" + shift + ;; + -h|--help) + show_usage + exit 0 + ;; + -*) + print_error "Unknown option: $1" + show_usage + exit 1 + ;; + *) + if [ -z "$INPUT_FILE" ]; then + INPUT_FILE="$1" + else + print_error "Multiple input files specified" + exit 1 + fi + shift + ;; + esac +done + +# Handle special commands +if [ "$KILL_SERVER" = "true" ]; then + kill_rtsp_server + cleanup_temp_files + exit 0 +fi + +if [ "$CHECK_STATUS" = "true" ]; then + check_status + exit $? +fi + +# Check if input file is provided +if [ -z "$INPUT_FILE" ]; then + print_error "Input file (JPEG or MP4) is required" + show_usage + exit 1 +fi + +# Check prerequisites +check_prerequisites + +# Start RTSP server +start_rtsp_server "$INPUT_FILE" "$DAEMON_MODE" \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/test_configs.json b/tools/inference_builder/builder/tests/test_configs.json new file mode 100644 index 00000000..a3e697a0 --- /dev/null +++ b/tools/inference_builder/builder/tests/test_configs.json @@ -0,0 +1,504 @@ +[ + { + "name": "frame_sampling_on_files", + "description": "Test with default TensorRT and CUDA versions", + "build_args": { + "TEST_APP_NAME": "frame_sampling", + "CACHE_BUSTER": "default_test" + }, + "test_config": { + "default_enable": true, + "timeout": 30, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes" + }, + "volumes": { + "frame_sampling/models": "/workspace/models" + }, + "cmd": [ + "--video-files", "file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=10&start=0&duration=10000000000" + ], + "prerequisite_script": null + } + }, + { + "name": "frame_sampling_on_streams", + "description": "Test with default TensorRT and CUDA versions", + "build_args": { + "TEST_APP_NAME": "frame_sampling", + "CACHE_BUSTER": "default_test" + }, + "test_config": { + "default_enable": false, + "timeout": 30, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes" + }, + "volumes": { + "frame_sampling/models": "/workspace/models" + }, + "cmd": [ + "--video-streams", "rtsp://localhost:8554/test?frames=10&interval=100000000&chunks=3&scale=640x360" + ], + "prerequisite_script": "./setup_rtsp_server.sh frame.jpg -m test -f 30 --daemon" + } + }, + { + "name": "asset_upload_test", + "description": "Test asset upload", + "build_args": { + "TEST_APP_NAME": "asset_management", + "CACHE_BUSTER": "asset_management", + "SERVER_TYPE": "fastapi", + "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 5, + "env": { + "MODEL_REPO": "/workspace/model-repo" + }, + "volumes": { + "asset_management/models": "/workspace/models" + }, + "ports": { + "8000": "8000" + }, + "test_requests": [ + { + "payload_path": "asset_management/payloads/assets.jsonl", + "method": "POST", + "headers": { + "Content-Type": "multipart/form-data" + } + }, + { + "method": "GET", + "headers": { + "Content-Type": "application/json" + } + } + ], + "endpoint": "/v1/files" + } + }, + { + "name": "Output Types Compatibility Test", + "description": "Test numpy array output type compatibility with simplified dummy backend", + "build_args": { + "TEST_APP_NAME": "output_types", + "CACHE_BUSTER": "output_types_simplified", + "SERVER_TYPE": "fastapi", + "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" + }, + + "test_config": { + "default_enable": true, + "timeout": 10, + "volumes": { + "output_types/models": "/workspace/models" + }, + "env": { + "DEBUG": "0" + }, + "cmd": [] + } + }, + { + "name": "fastapi_concurrency_test", + "description": "Build concurrency app and run threaded client", + "build_args": { + "TEST_APP_NAME": "concurrency", + "CACHE_BUSTER": "concurrency_fastapi", + "SERVER_TYPE": "fastapi", + "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 30, + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [] + } + }, + { + "name": "negative_invalid_route_config_1", + "description": "Negative test: Invalid route configuration should fail with proper error", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_route_test", + "APP_YAML_PATH": "./negative/route_1.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 5, + "expected_error": "ERR_ROUTE_001", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_invalid_route_config_2", + "description": "Negative test: Invalid route configuration should fail with proper error", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_route_test", + "APP_YAML_PATH": "./negative/route_2.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 5, + "expected_error": "ERR_ROUTE_001", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_invalid_route_config_3", + "description": "Negative test: Invalid route configuration should fail with proper error", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_route_test", + "APP_YAML_PATH": "./negative/route_3.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 5, + "expected_error": "ERR_ROUTE_001", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_invalid_route_config_4", + "description": "Negative test: Invalid route configuration should fail with proper error", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_route_test", + "APP_YAML_PATH": "./negative/route_4.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 5, + "expected_error": "ERR_ROUTE_002", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_invalid_route_config_5", + "description": "Negative test: Invalid route configuration should fail with proper error", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_route_test", + "APP_YAML_PATH": "./negative/route_5.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 5, + "expected_error": "ERR_ROUTE_002", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_invalid_model_repo", + "description": "Negative test: Invalid model repository", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_model_test", + "APP_YAML_PATH": "./negative/model.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 5, + "expected_error": "ERR_SYS_001", + "volumes": {}, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_invalid_processor_1", + "description": "Negative test: Invalid post-processor", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_pp_test", + "APP_YAML_PATH": "./negative/pp_1.yaml" + }, + "test_config": { + "default_enable": true, + "timeout":10, + "expected_error": "ERR_PROC_001", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_invalid_processor_2", + "description": "Negative test: Invalid post-processor", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_pp_test", + "APP_YAML_PATH": "./negative/pp_2.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 10, + "expected_error": "ERR_PROC_001", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_invalid_processor_3", + "description": "Negative test: Invalid post-processor", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_pp_test", + "APP_YAML_PATH": "./negative/pp_3.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 10, + "expected_error": "ERR_PROC_004", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_dataflow_test_1", + "description": "Negative test: Invalid base64 input", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_df_test", + "APP_YAML_PATH": "./negative/df_1.yaml", + "SERVER_TYPE": "fastapi", + "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" + }, + + "test_config": { + "default_enable": true, + "timeout": 5, + "volumes": { + "output_types/models": "/workspace/models" + }, + "expected_error": "ERR_DF_002", + "cmd": [] + } + }, + { + "name": "negative_dataflow_test_2", + "description": "Negative test: Invalid base64 input", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_df_test", + "APP_YAML_PATH": "./negative/df_2.yaml", + "SERVER_TYPE": "fastapi", + "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" + }, + + "test_config": { + "default_enable": true, + "timeout": 5, + "volumes": { + "output_types/models": "/workspace/models" + }, + "expected_error": "ERR_DF_002", + "cmd": [] + } + }, + { + "name": "negative_dataflow_test_3", + "description": "Negative test: Invalid asset", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_df_test", + "APP_YAML_PATH": "./negative/df_3.yaml" + }, + + "test_config": { + "default_enable": true, + "timeout": 10, + "volumes": { + "output_types/models": "/workspace/models" + }, + "expected_error": "ERR_DF_003", + "cmd": [ "--video", "hello" ] + } + }, + { + "name": "negative_dataflow_test_4", + "description": "Negative test: Invalid video frame sampling parameters", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_df_test", + "APP_YAML_PATH": "./negative/video.yaml" + }, + + "test_config": { + "default_enable": true, + "timeout": 10, + "volumes": { + "output_types/models": "/workspace/models" + }, + "expected_error": "ERR_VIDEO_001", + "cmd": [ + "--video-chunk", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=10&duration=10000000000", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=10&duration=20000000000" + ] + } + }, + { + "name": "negative_dataflow_test_5", + "description": "Negative test: Invalid video frame sampling parameters", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_df_test", + "APP_YAML_PATH": "./negative/video.yaml" + }, + + "test_config": { + "default_enable": true, + "timeout": 10, + "volumes": { + "output_types/models": "/workspace/models" + }, + "expected_error": "ERR_VIDEO_001", + "cmd": [ + "--video-chunk", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=10&duration=10000000000", + "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=1&duration=10000000000" + ] + } + }, + { + "name": "negative_dataflow_test_6", + "description": "Negative test: Invalid base64 string", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_df_test", + "APP_YAML_PATH": "./negative/image.yaml" + }, + + "test_config": { + "default_enable": true, + "timeout": 10, + "volumes": { + "output_types/models": "/workspace/models" + }, + "expected_error": "ERR_DF_002", + "cmd": [ "--image", "hello" ] + } + }, + { + "name": "negative_model_output_incomplete", + "description": "Negative test: Invalid model output", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_mo_test", + "APP_YAML_PATH": "./negative/mo_1.yaml" + }, + "test_config": { + "default_enable": true, + "timeout": 10, + "expected_error": "ERR_MO_002", + "volumes": { + "concurrency/models": "/workspace/models" + }, + "cmd": [ "--inputs", "string" ] + } + }, + { + "name": "negative_model_input_incomplete", + "description": "Negative test: Invalid base64 input", + "build_args": { + "TEST_APP_NAME": "negative", + "CACHE_BUSTER": "negative_df_test", + "APP_YAML_PATH": "./negative/mo_2.yaml", + "SERVER_TYPE": "fastapi", + "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" + }, + + "test_config": { + "default_enable": true, + "timeout": 5, + "volumes": { + "output_types/models": "/workspace/models" + }, + "expected_error": "ERR_DF_006", + "cmd": [] + } + }, + { + "name": "live_stream_graceful_deletion_test", + "description": "Test graceful deletion of RTSP stream during processing", + "build_args": { + "TEST_APP_NAME": "asset_management", + "CACHE_BUSTER": "live_stream_deletion", + "SERVER_TYPE": "fastapi", + "OPENAPI_SPEC": "builder/tests/asset_management/openapi.yaml" + }, + "test_config": { + "default_enable": false, + "timeout": 120, + "env": { + "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", + "DEBUG": "0", + "HTTP_PORT": "8000" + }, + "volumes": { + "asset_management/models": "/workspace/models" + }, + "ports": { + "8000": "8000" + }, + "assets": [ + { + "assetId": "00000000-0000-4000-8000-000000000001", + "path": "rtsp://localhost:8554/test", + "fileName": "", + "mimeType": "", + "duration": 0, + "username": "", + "password": "", + "description": "Test RTSP stream for graceful deletion", + "size": 0, + "live": true + } + ], + "test_requests": [ + { + "scheduled_time": 10, + "method": "POST", + "endpoint": "/v1/inference", + "payload_path": "asset_management/payloads/start_stream.jsonl", + "async": true + }, + { + "scheduled_time": 15, + "method": "DELETE", + "endpoint": "/v1/live-streams/00000000-0000-4000-8000-000000000001" + } + ], + "prerequisite_script": "./setup_rtsp_server.sh frame.jpg -m test -f 30 --daemon" + } + } +] diff --git a/tools/inference_builder/builder/tests/test_docker_builds.py b/tools/inference_builder/builder/tests/test_docker_builds.py new file mode 100644 index 00000000..fe2d6014 --- /dev/null +++ b/tools/inference_builder/builder/tests/test_docker_builds.py @@ -0,0 +1,2971 @@ +#!/usr/bin/env python3 + +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +""" +Test script for Docker container builds with different arguments. +This script tests the Dockerfile in the tests directory with various configurations. + +Security Features: +- Input validation for app names and script commands to prevent command injection +- File path validation to prevent directory traversal attacks +- Safe subprocess calls using argument lists instead of shell string interpolation +- Logging of all executed commands for audit trails +""" + +import subprocess +import sys +import os +import json +import time +import argparse +from pathlib import Path +import shutil +import socket +from typing import Dict, List, Optional, Tuple +import logging +import re +import urllib.request +import urllib.error +from huggingface_hub import snapshot_download + +# Set up logging +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + + +def validate_app_name(app_name: str) -> bool: + """Validate app name to prevent command injection.""" + # Allow only alphanumeric characters, underscores, and hyphens + return bool(re.match(r'^[a-zA-Z0-9_-]+$', app_name)) + + +def validate_script_command(script_command: str) -> bool: + """Validate script command using a flexible approach that allows legitimate arguments.""" + if not isinstance(script_command, str) or not script_command.strip(): + return False + + script_command = script_command.strip() + + # Split command into parts for analysis + try: + import shlex + parts = shlex.split(script_command) + except ValueError: + # Invalid shell syntax + return False + + if not parts: + return False + + # Check the main command/script + main_command = parts[0] + + # Allow specific known scripts + allowed_script_names = [ + "setup_rtsp_server.sh", + "./setup_rtsp_server.sh", + "prepare_engine.sh", + "./prepare_engine.sh", + ] + + allowed_shell_commands = ["bash", "sh"] + + # Validate main command + if main_command not in allowed_script_names and main_command not in allowed_shell_commands: + return False + + # If it's a shell command, check the script being executed + if main_command in allowed_shell_commands and len(parts) > 1: + script_name = parts[1] + if script_name not in allowed_script_names: + return False + + # Validate all arguments + for arg in parts[1:]: + if not validate_script_arg(arg): + return False + + # Check for dangerous patterns in the full command + dangerous_patterns = [ + r'[;&|`]', # Shell metacharacters (but allow some like spaces) + r'\$\(', # Command substitution + r'`', # Backticks + r'>>?', # Redirections + r'\|\|', # OR operator + r'&&', # AND operator + r'<', # Input redirection + r'\x00', # Null bytes + ] + + for pattern in dangerous_patterns: + if re.search(pattern, script_command): + return False + + return True + + +def validate_script_arg(arg: str) -> bool: + """Validate individual script argument.""" + if not isinstance(arg, str): + return False + + # Check for null bytes and control characters + if '\x00' in arg or any(ord(c) < 32 for c in arg if c not in ['\t']): + return False + + # Allow common script arguments + dangerous_chars = ['`', '$', ';', '|', '>', '<', '(', ')'] + if any(char in arg for char in dangerous_chars): + return False + + # Allow legitimate flags and file arguments + if arg.startswith('-'): + # Allow common flag patterns + if not re.match(r'^-{1,2}[a-zA-Z0-9][a-zA-Z0-9_-]*$', arg): + return False + + # Prevent excessively long arguments + if len(arg) > 1024: + return False + + return True + + +def validate_safe_path(path: str) -> bool: + """Validate file path to prevent directory traversal and command injection.""" + if not path or not isinstance(path, str): + return False + + # Check for double slashes + if '//' in path: + return False + + # Check for absolute paths that could access system directories + if os.path.isabs(path): + system_dirs = ['/etc', '/sys', '/proc', '/dev', '/boot', '/usr/bin', '/usr/sbin', '/root'] + for sys_dir in system_dirs: + if path.startswith(sys_dir): + return False + + # Check for invalid characters + invalid_chars = ['<', '>', ':', '"', '|', '?', '*', '\\'] + if any(char in path for char in invalid_chars): + return False + + return True + +def validate_config_file_path(config_file: str) -> bool: + """Validate configuration file path for security.""" + if not validate_safe_path(config_file): + return False + + # Ensure the filename ends with .json + filename = os.path.basename(config_file) + if not filename.lower().endswith('.json'): + return False + + return True + +def validate_dockerfile_path(dockerfile: str) -> bool: + """Validate Dockerfile path for security.""" + if not validate_safe_path(dockerfile): + return False + + # Ensure the filename is Dockerfile or has .dockerfile extension + filename = os.path.basename(dockerfile) + if not (filename.lower() == 'dockerfile' or filename.lower().endswith('.dockerfile')): + return False + + return True + +def validate_log_directory(log_dir: str) -> bool: + """Validate log directory path for security.""" + if not validate_safe_path(log_dir): + return False + + # Prevent access to system directories + if log_dir.startswith('/') and not log_dir.startswith('./'): + return False + + return True + +def validate_gitlab_token(token: str) -> bool: + """Validate GitLab token format.""" + if not token: + return True # Empty token is allowed + + # Basic validation for GitLab token format + if not isinstance(token, str) or len(token) < 10: + return False + + # Check for suspicious patterns + suspicious_patterns = [' bool: + """Validate docker argument to prevent command injection while allowing legitimate flags.""" + if not isinstance(arg, str): + return False + + # Check for null bytes and control characters + if '\x00' in arg or any(ord(c) < 32 for c in arg if c not in ['\t', '\n', '\r']): + return False + + # Check for dangerous characters and patterns (but allow legitimate usage) + dangerous_patterns = [ + r'[;|`$()]', # Shell metacharacters (removed & for now) + r'\$\(', # Command substitution + r'`', # Backticks + r'>>?', # Redirections + r'\|\|', # OR operator + r'&&', # AND operator for command chaining + r'[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]', # Control characters + ] + + for pattern in dangerous_patterns: + if re.search(pattern, arg): + return False + + # Check for dangerous & usage (but allow in URL query parameters) + if '&' in arg: + # Allow & in URL-like contexts (after ?) + if '?' not in arg: + # & without ? suggests command chaining, not URL parameter + return False + # Check for command chaining patterns even with ? + if ' &' in arg or '& ' in arg or arg.endswith('&'): + return False + + # Additional dangerous characters for docker contexts (be selective) + # Note: Removed '?' to allow URL query parameters, '*' and '!' for legitimate use + dangerous_chars = ['[', ']', '{', '}', '\\'] + if any(char in arg for char in dangerous_chars): + return False + + # Check for wildcard patterns that could be dangerous in specific contexts + if '*' in arg and any(pattern in arg for pattern in ['*.*', '*.sh', '*.py', '*/', '/*']): + return False + + # Allow legitimate command-line flags but prevent injection attempts + if arg.strip().startswith('-'): + # Allow common legitimate patterns + legitimate_flag_patterns = [ + r'^--[a-zA-Z0-9][a-zA-Z0-9_-]*$', # --flag-name + r'^--[a-zA-Z0-9][a-zA-Z0-9_-]*=.*$', # --flag=value + r'^-[a-zA-Z0-9]$', # -f + r'^-[a-zA-Z0-9][a-zA-Z0-9]*$', # -abc + ] + + # Check if it matches any legitimate pattern + is_legitimate = any(re.match(pattern, arg) for pattern in legitimate_flag_patterns) + + if not is_legitimate: + return False + + # Additional checks for flag values (after =) + if '=' in arg: + flag_value = arg.split('=', 1)[1] + # Check flag value for dangerous patterns + if any(char in flag_value for char in ['`', '$', ';', '&', '|', '(', ')']): + return False + + # Prevent excessively long arguments (potential DoS) + if len(arg) > 8192: # Reasonable limit for docker arguments + return False + + # Check for potential escape sequences in non-flag arguments + if not arg.startswith('-') and '\\' in arg: + if any(seq in arg for seq in ['\\n', '\\r', '\\t', '\\x', '\\u']): + return False + + return True + + +def validate_env_var_name(name: str) -> bool: + """Validate environment variable name.""" + if not isinstance(name, str) or not name: + return False + + # Environment variable names should be alphanumeric + underscore, starting with letter or underscore + return bool(re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', name)) + + +def validate_env_var_value(value: str) -> bool: + """Validate environment variable value.""" + if not isinstance(value, str): + return False + + # Check for null bytes + if '\x00' in value: + return False + + # Check for dangerous shell characters + dangerous_chars = ['`', '$', ';', '&', '|', '(', ')', '>', '<'] + if any(char in value for char in dangerous_chars): + return False + + return True + + +def validate_http_method(method: str) -> bool: + """Validate HTTP method.""" + if not isinstance(method, str): + return False + + # Allow common HTTP methods + allowed_methods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'] + return method.upper() in allowed_methods + + +def validate_http_header_name(name: str) -> bool: + """Validate HTTP header name.""" + if not isinstance(name, str) or not name: + return False + + # Header names should be alphanumeric with hyphens + # Follow RFC 7230 field-name = token + if not re.match(r'^[a-zA-Z0-9!#$%&\'*+\-.^_`|~]+$', name): + return False + + # Prevent excessively long header names + if len(name) > 256: + return False + + return True + + +def validate_http_header_value(value: str) -> bool: + """Validate HTTP header value.""" + if not isinstance(value, str): + return False + + # Check for null bytes and control characters (except tab and space) + if '\x00' in value or any(ord(c) < 32 for c in value if c not in ['\t', ' ']): + return False + + # Check for newlines that could cause header injection + if '\n' in value or '\r' in value: + return False + + # Prevent excessively long header values + if len(value) > 8192: + return False + + return True + + +def validate_volume_path(path: str) -> bool: + """Validate volume mount path to prevent injection attacks. + + Note: Allows legitimate relative paths with .. for test configs. + """ + if not isinstance(path, str) or not path: + return False + + # Check for null bytes and control characters + if '\x00' in path or any(ord(c) < 32 for c in path if c not in ['\t']): + return False + + # Check for dangerous path patterns (but allow relative paths) + # Allow: ../tao/, ./models, ../../shared + # Reject: /../../../etc/passwd (absolute path traversal attacks) + + # Check for double slashes (suspicious) + if '//' in path: + return False + + # Check for Windows-style backslashes (not needed in Docker contexts) + if '\\' in path: + return False + + # Check for absolute path traversal attacks (starting with / and going up) + # This would be trying to escape from an absolute path to system directories + if path.startswith('/') and '/../' in path: + # Check if trying to access system directories + system_dirs = ['/../etc', '/../root', '/../sys', '/../proc', '/../dev'] + if any(path.startswith(sys_dir) for sys_dir in system_dirs): + return False + + # Check for dangerous shell characters and command injection attempts + # Allow ~ for home directory expansion at the start of path + dangerous_chars = ['`', '$', ';', '&', '|', '(', ')', '>', '<', '*', '?', '!', '[', ']', '{', '}'] + if any(char in path for char in dangerous_chars): + return False + + # Allow ~ only at the start of path (for home directory expansion) + if '~' in path and not path.startswith('~'): + return False + + # Check for spaces at beginning/end (could be injection attempts) + if path.startswith(' ') or path.endswith(' '): + return False + + # Check for argument injection (starting with dash) + if path.startswith('-'): + return False + + # Ensure path doesn't contain colon (except for Windows drive letters or container paths) + colon_count = path.count(':') + if colon_count > 1: # Allow one colon for Windows drive letters or container paths + return False + if colon_count == 1: + # Allow Windows drive letters (C:) or absolute container paths (/app:) + if not (re.match(r'^[A-Za-z]:', path) or ':' in path[1:]): + return False + + # Additional check: ensure reasonable path length to prevent buffer overflow attacks + if len(path) > 4096: # Most systems limit paths to 4096 characters + return False + + return True + + +def validate_build_arg_name(name: str) -> bool: + """Validate Docker build argument name to prevent injection.""" + if not isinstance(name, str) or not name: + return False + + # Build arg names should be alphanumeric + underscore, no dashes at start + if name.startswith('-'): + return False + + # Allow standard environment variable naming convention + return bool(re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', name)) + + +def validate_build_arg_value(value: str) -> bool: + """Validate Docker build argument value to prevent injection.""" + if not isinstance(value, str): + return False + + # Check for null bytes + if '\x00' in value: + return False + + # Check for dangerous shell characters that could cause issues + dangerous_chars = ['`', '$', ';', '&', '|', '(', ')', '>', '<', '\n', '\r'] + if any(char in value for char in dangerous_chars): + return False + + # Check for argument injection attempts + if value.strip().startswith('-'): + return False + + return True + + +def validate_image_name(image_name: str) -> bool: + """Validate Docker image name to prevent injection.""" + if not isinstance(image_name, str) or not image_name: + return False + + # Check for null bytes + if '\x00' in image_name: + return False + + # Check for dangerous characters + dangerous_chars = ['`', '$', ';', '&', '|', '(', ')', '>', '<', ' ', '\n', '\r'] + if any(char in image_name for char in dangerous_chars): + return False + + # Basic docker image name validation (simplified) + # Allow alphanumeric, hyphens, underscores, slashes, colons, dots + if not re.match(r'^[a-zA-Z0-9._/-]+(?::[a-zA-Z0-9._-]+)?$', image_name): + return False + + return True + + +def validate_test_config(test_config: dict) -> Tuple[bool, str]: + """Validate test configuration to prevent command injection.""" + if not isinstance(test_config, dict): + return False, "Test config must be a dictionary" + + # Validate environment variables + if "env" in test_config: + if not isinstance(test_config["env"], dict): + return False, "env must be a dictionary" + + for key, value in test_config["env"].items(): + if not validate_env_var_name(key): + return False, f"Invalid environment variable name: {key}" + if not validate_env_var_value(str(value)): + return False, f"Invalid environment variable value for {key}: {value}" + + # Validate volume mounts + if "volumes" in test_config: + if not isinstance(test_config["volumes"], dict): + return False, "volumes must be a dictionary" + + for host_path, container_path in test_config["volumes"].items(): + if not validate_volume_path(host_path): + return False, f"Invalid host path in volume mount: {host_path}" + if not validate_volume_path(container_path): + return False, f"Invalid container path in volume mount: {container_path}" + + # Validate command arguments + if "cmd" in test_config: + if not isinstance(test_config["cmd"], list): + return False, "cmd must be a list" + + for arg in test_config["cmd"]: + if not validate_docker_arg(str(arg)): + return False, f"Invalid command argument: {arg}" + + # Validate timeout + if "timeout" in test_config: + if not isinstance(test_config["timeout"], (int, float)) or test_config["timeout"] <= 0: + return False, "timeout must be a positive number" + if test_config["timeout"] > 3600: # Max 1 hour + return False, "timeout cannot exceed 3600 seconds" + + # Validate prerequisite script + if "prerequisite_script" in test_config: + script = test_config["prerequisite_script"] + if script and not validate_script_command(script): + return False, f"Invalid prerequisite script: {script}" + + # Validate auto_validation configuration + if "auto_validation" in test_config: + if not isinstance(test_config["auto_validation"], str): + return False, "auto_validation must be a string path" + if not validate_safe_path(test_config["auto_validation"]): + return False, f"Invalid auto_validation path: {test_config['auto_validation']}" + # Validate test_requests (must be a list of objects with optional payload_path, method, headers) + if "test_requests" in test_config: + test_requests = test_config["test_requests"] + if not isinstance(test_requests, list): + return False, "test_requests must be a list" + + for item in test_requests: + # Must be dict format with payload_path (optional), method (optional), and headers (optional) + if not isinstance(item, dict): + return False, "test_requests items must be dictionaries" + + # Validate payload_path if present (optional for GET requests without body) + if "payload_path" in item: + payload_path = item["payload_path"] + if not isinstance(payload_path, str): + return False, "test_requests 'payload_path' must be a string" + if not validate_safe_path(payload_path): + return False, f"Invalid test_requests payload_path: {payload_path}" + + # Validate method if specified (optional, defaults to POST) + if "method" in item: + method = item["method"] + if not validate_http_method(method): + return False, f"Invalid HTTP method in payload_config: {method}" + + # Validate headers if specified (optional) + if "headers" in item: + headers = item["headers"] + if not isinstance(headers, dict): + return False, "payload_config headers must be a dictionary" + for header_name, header_value in headers.items(): + if not validate_http_header_name(header_name): + return False, f"Invalid HTTP header name in payload_config: {header_name}" + if not validate_http_header_value(str(header_value)): + return False, f"Invalid HTTP header value in payload_config for {header_name}: {header_value}" + + # Validate scheduled_time if specified (optional, for sequential execution) + if "scheduled_time" in item: + if not isinstance(item["scheduled_time"], (int, float)) or item["scheduled_time"] < 0: + return False, "test_requests 'scheduled_time' must be a non-negative number" + + # Validate async if specified (optional, for non-blocking requests) + if "async" in item: + if not isinstance(item["async"], bool): + return False, "test_requests 'async' must be a boolean" + + # Validate endpoint + if "endpoint" in test_config: + endpoint = test_config["endpoint"] + if not isinstance(endpoint, str): + return False, "endpoint must be a string" + # Basic validation for endpoint path format + if not endpoint.startswith("/"): + return False, "endpoint must start with /" + # Check for dangerous characters + if any(char in endpoint for char in ['<', '>', '"', '{', '}', '|', '\\', '^', '`', ' ']): + return False, f"Invalid characters in endpoint: {endpoint}" + + # Validate expected_error for negative tests + if "expected_error" in test_config: + expected_error = test_config["expected_error"] + if not isinstance(expected_error, str): + return False, "expected_error must be a string" + if not expected_error: + return False, "expected_error cannot be empty" + # Basic validation - should be an error code pattern (e.g., ERR_ROUTE_001) + if len(expected_error) > 100: + return False, "expected_error is too long (max 100 characters)" + + return True, "" + + +class DockerBuildTester: + def __init__(self, dockerfile_path: str, base_dir: str, log_dir: Optional[str] = None): + self.dockerfile_path = Path(dockerfile_path) + self.base_dir = Path(base_dir) + self.log_dir = Path(log_dir) if log_dir else Path("logs") + self.test_results = [] + + # Create log directory if it doesn't exist + self.log_dir.mkdir(exist_ok=True) + + def download_models(self, models_config: Dict, config_dir: Path) -> Tuple[bool, str]: + """Download models from NGC based on the models configuration. + + Args: + models_config: Dictionary with model configurations + config_dir: Directory containing the test config (for resolving relative paths) + + Returns: + Tuple of (success, message) + """ + if not models_config: + return True, "No models to download" + + for model_name, model_info in models_config.items(): + try: + source = model_info.get("source", "NGC") + + if source == "HF": + # Handle Hugging Face model download + target_dir = Path(model_info["target"]).expanduser() + model_path = model_info["path"] # e.g., "Qwen/Qwen2.5-VL-3B-Instruct" + + # Final destination + final_model_dir = target_dir / model_name + + # Check if model already exists + if final_model_dir.exists(): + logger.info(f"✅ Model '{model_name}' already exists at {final_model_dir}, skipping download") + continue + + logger.info(f"📥 Downloading model '{model_name}' from Hugging Face...") + logger.info(f" HF path: {model_path}") + logger.info(f" Target: {final_model_dir}") + + # Create target directory + target_dir.mkdir(parents=True, exist_ok=True) + + # Download using huggingface_hub + hf_token = os.environ.get("HF_TOKEN") + try: + snapshot_download( + model_path, + local_dir=str(final_model_dir), + token=hf_token, + ) + except Exception as e: + error_msg = f"Failed to download model '{model_name}' from HF: {e}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + # Execute post-script if specified (for HF models) + post_script = model_info.get("post_script") + if post_script: + logger.info(f"🔧 Executing post-script for '{model_name}': {post_script}") + try: + script_result = subprocess.run( + post_script, + shell=True, + capture_output=True, + text=True, + cwd=str(final_model_dir), + timeout=600 + ) + if script_result.returncode == 0: + logger.info(f"✅ Post-script executed successfully for '{model_name}'") + if script_result.stdout.strip(): + logger.info(f" Output: {script_result.stdout.strip()}") + else: + error_msg = ( + f"Post-script failed for '{model_name}' " + f"(exit code {script_result.returncode}): " + f"{script_result.stderr.strip()}" + ) + logger.error(f"❌ {error_msg}") + return False, error_msg + except subprocess.TimeoutExpired: + error_msg = f"Post-script timed out for '{model_name}' after 600 seconds" + logger.error(f"❌ {error_msg}") + return False, error_msg + except Exception as e: + error_msg = f"Failed to execute post-script for '{model_name}': {str(e)}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + logger.info(f"✅ Successfully downloaded model '{model_name}' from Hugging Face") + continue + + if source != "NGC": + logger.warning(f"⚠️ Unsupported model source '{source}' for {model_name}, skipping") + continue + + # NGC model download logic + target_dir = Path(model_info["target"]).expanduser() + model_path = model_info["path"] + version = model_info["version"] + configs_path = model_info.get("configs", "") + + # Construct the full NGC path + ngc_path = f"{model_path}:{version}" + + # Determine the downloaded folder name (NGC naming convention) + # e.g., "nvidia/tao/grounding_dino:grounding_dino_swin_tiny_commercial_deployable_v1.0" + # becomes "grounding_dino_vgrounding_dino_swin_tiny_commercial_deployable_v1.0" + model_base_name = model_path.split('/')[-1] # e.g., "grounding_dino" + downloaded_folder = f"{model_base_name}_v{version}" + + # Final destination + final_model_dir = target_dir / model_name + + # Check if model already exists + if final_model_dir.exists(): + logger.info(f"✅ Model '{model_name}' already exists at {final_model_dir}, skipping download") + continue + + logger.info(f"📥 Downloading model '{model_name}' from NGC...") + logger.info(f" NGC path: {ngc_path}") + logger.info(f" Target: {final_model_dir}") + + # Create target directory + target_dir.mkdir(parents=True, exist_ok=True) + + # Download from NGC + download_cmd = ["ngc", "registry", "model", "download-version", ngc_path] + logger.info(f" Running: {' '.join(download_cmd)}") + + result = subprocess.run( + download_cmd, + capture_output=True, + text=True, + timeout=600 # 10 minute timeout for download + ) + + if result.returncode != 0: + error_msg = f"Failed to download model '{model_name}': {result.stderr}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + # Move the downloaded folder to the target location + downloaded_path = Path(downloaded_folder) + if not downloaded_path.exists(): + error_msg = f"Downloaded folder not found: {downloaded_path}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + logger.info(f" Moving {downloaded_path} to {final_model_dir}") + shutil.move(str(downloaded_path), str(final_model_dir)) + + # Set permissions + try: + os.chmod(final_model_dir, 0o777) + logger.info(f" Set permissions: chmod 777 {final_model_dir}") + except Exception as e: + logger.warning(f"⚠️ Failed to set permissions on {final_model_dir}: {e}") + + # Copy config files if specified + if configs_path: + # Resolve configs_path relative to test config directory + source_configs = (config_dir / configs_path).resolve() + if source_configs.exists(): + logger.info(f" Copying configs from {source_configs} to {final_model_dir}") + # Copy all files from source_configs to final_model_dir + for item in source_configs.iterdir(): + dest = final_model_dir / item.name + if item.is_file(): + shutil.copy2(str(item), str(dest)) + elif item.is_dir(): + shutil.copytree(str(item), str(dest), dirs_exist_ok=True) + logger.info(f" ✅ Copied config files") + else: + logger.warning(f"⚠️ Config path not found: {source_configs}") + + # Execute post-script if specified + post_script = model_info.get("post_script") + if post_script: + logger.info(f"🔧 Executing post-script for '{model_name}': {post_script}") + try: + script_result = subprocess.run( + post_script, + shell=True, + capture_output=True, + text=True, + cwd=str(final_model_dir), + timeout=600 + ) + if script_result.returncode == 0: + logger.info(f"✅ Post-script executed successfully for '{model_name}'") + if script_result.stdout.strip(): + logger.info(f" Output: {script_result.stdout.strip()}") + else: + error_msg = ( + f"Post-script failed for '{model_name}' " + f"(exit code {script_result.returncode}): " + f"{script_result.stderr.strip()}" + ) + logger.error(f"❌ {error_msg}") + return False, error_msg + except subprocess.TimeoutExpired: + error_msg = f"Post-script timed out for '{model_name}' after 600 seconds" + logger.error(f"❌ {error_msg}") + return False, error_msg + except Exception as e: + error_msg = f"Failed to execute post-script for '{model_name}': {str(e)}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + logger.info(f"✅ Successfully downloaded and setup model '{model_name}'") + + except KeyError as e: + error_msg = f"Missing required field in model config for '{model_name}': {e}" + logger.error(f"❌ {error_msg}") + return False, error_msg + except subprocess.TimeoutExpired: + error_msg = f"Model download timed out for '{model_name}'" + logger.error(f"❌ {error_msg}") + return False, error_msg + except Exception as e: + error_msg = f"Exception during model download for '{model_name}': {str(e)}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + return True, "All models downloaded successfully" + + def get_service_host(self) -> str: + """ + Determine the appropriate host to use for connecting to Docker + containers. In CI environments (like GitLab CI with + Docker-in-Docker), 127.0.0.1 won't work because each container has + its own localhost. Use Docker gateway IP instead. + """ + # Check if running in CI environment + if os.environ.get('CI') or os.environ.get('GITLAB_CI'): + logger.info( + "🔍 CI environment detected, using Docker gateway IP " + "for service connectivity" + ) + # Try to get docker gateway IP from bridge network + try: + result = subprocess.run( + [ + "docker", "network", "inspect", "bridge", "-f", + "{{range .IPAM.Config}}{{.Gateway}}{{end}}" + ], + capture_output=True, + text=True, + timeout=5 + ) + if result.returncode == 0 and result.stdout.strip(): + gateway_ip = result.stdout.strip() + logger.info(f"📡 Using Docker gateway IP: {gateway_ip}") + return gateway_ip + except Exception as e: + logger.warning(f"⚠️ Failed to get Docker gateway IP: {e}") + + # Fallback to default Docker bridge gateway + logger.info( + "📡 Using default Docker bridge gateway: 172.17.0.1" + ) + return "172.17.0.1" + + # Local development environment - use localhost + logger.info("📡 Using localhost for service connectivity") + return "127.0.0.1" + + def generate_inference_code(self, build_args: Dict[str, str], test_config: Dict = None) -> Tuple[bool, str]: + """Generate inference code (codegen) without building or testing Docker images. + + This runs the same pre-build code generation step used by build_image(), + including optional OPENAPI_SPEC staging, but skips Docker build. + + Supports flexible path configuration via build_args: + - APP_YAML_PATH: Custom path to app.yaml (overrides {TEST_APP_NAME}/app.yaml) + - OUTPUT_DIR: Custom output directory (overrides {TEST_APP_NAME}) + - PROCESSORS_PATH: Custom processors.py path (overrides auto-detection) + + Args: + build_args: Build arguments for code generation + test_config: Optional test configuration. If present and contains 'auto_validation', + the validation directory will be passed to code generation via -v flag. + """ + try: + # Validate all build arguments to prevent command injection + for key, value in build_args.items(): + if not validate_build_arg_name(key): + error_msg = f"Invalid build arg name: {key}. Only alphanumeric characters and underscores allowed." + logger.error(f"❌ {error_msg}") + return False, error_msg + if not validate_build_arg_value(str(value)): + error_msg = f"Invalid build arg value for {key}: {value}. Value contains dangerous characters." + logger.error(f"❌ {error_msg}") + return False, error_msg + + # Determine parameters for code generation + test_app_name = build_args.get("TEST_APP_NAME", "frame_sampling") + if not validate_app_name(test_app_name): + error_msg = ( + f"Invalid app name: {test_app_name}. Only alphanumeric characters, underscores, and hyphens are allowed." + ) + logger.error(f"❌ {error_msg}") + return False, error_msg + + server_type = build_args.get("SERVER_TYPE", "serverless") + openapi_spec = build_args.get("OPENAPI_SPEC") + + # Support flexible paths via build_args + app_yaml_path = build_args.get("APP_YAML_PATH", f"{test_app_name}/app.yaml") + output_dir = build_args.get("OUTPUT_DIR", test_app_name) + processors_path_arg = build_args.get("PROCESSORS_PATH", "") + + # Find main.py relative to this script (in builder/main.py) + main_py_path = Path(__file__).parent.parent / "main.py" + if not main_py_path.exists(): + error_msg = f"Cannot find main.py at {main_py_path}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + pre_build_command = [ + "python", str(main_py_path), app_yaml_path, + "-o", output_dir + ] + + # Add processors.py if specified or auto-detect + if processors_path_arg: + processors_path = Path(processors_path_arg) + if processors_path.exists(): + pre_build_command.extend(["-c", processors_path_arg]) + else: + logger.warning(f"⚠️ Specified PROCESSORS_PATH not found: {processors_path_arg}") + else: + # Auto-detect in output directory + processors_path = Path(f"{test_app_name}/processors.py") + if processors_path.exists(): + pre_build_command.extend(["-c", f"{test_app_name}/processors.py"]) + + # Add validation directory if specified in test_config + if test_config and "auto_validation" in test_config: + validation_folder = test_config["auto_validation"] + # Resolve path relative to config directory if it's relative + config_dir = test_config.get("_config_dir") + if config_dir: + validation_path = (Path(config_dir) / validation_folder).resolve() + else: + validation_path = Path(validation_folder).resolve() + + if validation_path.exists(): + pre_build_command.extend(["--validation-dir", str(validation_path), "--no-docker"]) + logger.info(f"📁 Adding validation directory for build: {validation_path}") + else: + logger.warning(f"⚠️ Auto validation folder not found: {validation_path}") + + pre_build_command.extend(["--server-type", server_type, "-t"]) + + if openapi_spec: + # Resolve provided spec relative to project root, copy into local app folder to avoid unsafe paths + project_root = Path(__file__).resolve().parents[2] + resolved_spec = None + candidates = [] + spec_path = Path(openapi_spec) + if spec_path.is_absolute(): + candidates.append(spec_path) + else: + candidates.append((project_root / openapi_spec).resolve()) + candidates.append((project_root / "builder" / openapi_spec).resolve()) + + for cand in candidates: + try: + if cand.exists() and str(cand).startswith(str(project_root)): + resolved_spec = cand + break + except Exception: + continue + + if not resolved_spec: + error_msg = f"Invalid OPENAPI_SPEC path: {openapi_spec}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + local_spec_path = Path(output_dir) / "openapi.yaml" + + # Only copy if source and destination are different + if resolved_spec.resolve() != local_spec_path.resolve(): + try: + shutil.copyfile(str(resolved_spec), str(local_spec_path)) + logger.info(f"📄 Staged OPENAPI_SPEC: {resolved_spec} -> {local_spec_path}") + except Exception as e: + error_msg = f"Failed to stage OPENAPI_SPEC: {e}" + logger.error(f"❌ {error_msg}") + return False, error_msg + else: + logger.info(f"📄 OPENAPI_SPEC already in output directory: {local_spec_path}") + + pre_build_command[3:3] = ["-a", str(local_spec_path)] + + logger.info(f"🔧 Executing codegen command: {' '.join(pre_build_command)}") + pre_build_result = subprocess.run( + pre_build_command, + capture_output=True, + text=True, + timeout=600 + ) + + if pre_build_result.returncode != 0: + error_msg = f"Code generation failed: {pre_build_result.stderr}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + logger.info("✅ Code generation completed successfully") + if pre_build_result.stdout: + logger.info(f"Codegen output: {pre_build_result.stdout}") + return True, pre_build_result.stdout + + except subprocess.TimeoutExpired: + error_msg = "Code generation timed out" + logger.error(f"❌ {error_msg}") + return False, error_msg + except Exception as e: + error_msg = f"Exception during code generation: {str(e)}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + def build_image(self, build_args: Dict[str, str], image_name: str, dockerfile: Optional[str] = None, base_dir: Optional[str] = None, test_config: Dict = None) -> Tuple[bool, str]: + """Build Docker image with given arguments. + + Supports flexible path configuration via build_args: + - APP_YAML_PATH: Custom path to app.yaml (overrides {TEST_APP_NAME}/app.yaml) + - OUTPUT_DIR: Custom output directory (overrides {TEST_APP_NAME}) + - PROCESSORS_PATH: Custom processors.py path (overrides auto-detection) + + Args: + build_args: Build arguments for the Docker image + image_name: Name for the Docker image + dockerfile: Optional path to Dockerfile (overrides self.dockerfile_path) + base_dir: Optional Docker build context directory (overrides self.base_dir) + test_config: Optional test configuration. If present and contains 'auto_validation', + the validation directory will be passed to code generation via -v flag. + """ + try: + # Use provided paths or fall back to instance defaults + dockerfile_path = Path(dockerfile) if dockerfile else self.dockerfile_path + build_context = Path(base_dir) if base_dir else self.base_dir + # Validate image name to prevent command injection + if not validate_image_name(image_name): + error_msg = f"Invalid image name: {image_name}. Image name contains invalid characters." + logger.error(f"❌ {error_msg}") + return False, error_msg + + # Validate all build arguments to prevent command injection + for key, value in build_args.items(): + if not validate_build_arg_name(key): + error_msg = f"Invalid build arg name: {key}. Only alphanumeric characters and underscores allowed." + logger.error(f"❌ {error_msg}") + return False, error_msg + if not validate_build_arg_value(str(value)): + error_msg = f"Invalid build arg value for {key}: {value}. Value contains dangerous characters." + logger.error(f"❌ {error_msg}") + return False, error_msg + + # Execute pre-build command using TEST_APP_NAME + test_app_name = build_args.get("TEST_APP_NAME", "frame_sampling") + + # Validate app name to prevent command injection + if not validate_app_name(test_app_name): + error_msg = f"Invalid app name: {test_app_name}. Only alphanumeric characters, underscores, and hyphens are allowed." + logger.error(f"❌ {error_msg}") + return False, error_msg + + # Determine server type from build args (fallback to 'serverless') + server_type = build_args.get("SERVER_TYPE", "serverless") + + # Optional: OpenAPI spec path (to pass -a) + openapi_spec = build_args.get("OPENAPI_SPEC") + + # Require OpenAPI spec for non-serverless builds + if server_type != "serverless" and not openapi_spec: + error_msg = ( + "OPENAPI_SPEC is required in build_args when SERVER_TYPE is not 'serverless'" + ) + logger.error(f"❌ {error_msg}") + return False, error_msg + + # Support flexible paths via build_args + app_yaml_path = build_args.get("APP_YAML_PATH", f"{test_app_name}/app.yaml") + output_dir = build_args.get("OUTPUT_DIR", test_app_name) + processors_path_arg = build_args.get("PROCESSORS_PATH", "") + + # Find main.py relative to this script (in builder/main.py) + main_py_path = Path(__file__).parent.parent / "main.py" + if not main_py_path.exists(): + error_msg = f"Cannot find main.py at {main_py_path}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + # Use safer subprocess call without shell=True + pre_build_command = [ + "python", str(main_py_path), app_yaml_path, + "-o", output_dir + ] + + # Add processors.py if specified or auto-detect + if processors_path_arg: + processors_path = Path(processors_path_arg) + if processors_path.exists(): + pre_build_command.extend(["-c", processors_path_arg]) + else: + logger.warning(f"⚠️ Specified PROCESSORS_PATH not found: {processors_path_arg}") + else: + # Auto-detect in test_app_name directory + processors_path = Path(f"{test_app_name}/processors.py") + if processors_path.exists(): + pre_build_command.extend(["-c", f"{test_app_name}/processors.py"]) + + # Add validation directory if specified in test_config + if test_config and "auto_validation" in test_config: + validation_folder = test_config["auto_validation"] + # Resolve path relative to config directory if it's relative + config_dir = test_config.get("_config_dir") + if config_dir: + validation_path = (Path(config_dir) / validation_folder).resolve() + else: + validation_path = Path(validation_folder).resolve() + + if validation_path.exists(): + pre_build_command.extend(["--validation-dir", str(validation_path), "--no-docker"]) + logger.info(f"📁 Adding validation directory for build: {validation_path}") + else: + logger.warning(f"⚠️ Auto validation folder not found: {validation_path}") + + pre_build_command.extend(["--server-type", server_type, "-t"]) + + if openapi_spec: + # Resolve provided spec relative to project root, copy into local app folder to avoid unsafe paths + project_root = Path(__file__).resolve().parents[2] + resolved_spec = None + candidates = [] + spec_path = Path(openapi_spec) + if spec_path.is_absolute(): + candidates.append(spec_path) + else: + candidates.append((project_root / openapi_spec).resolve()) + candidates.append((project_root / "builder" / openapi_spec).resolve()) + + for cand in candidates: + try: + if cand.exists() and str(cand).startswith(str(project_root)): + resolved_spec = cand + break + except Exception: + continue + + if not resolved_spec: + error_msg = f"Invalid OPENAPI_SPEC path: {openapi_spec}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + local_spec_path = Path(output_dir) / "openapi.yaml" + + # Only copy if source and destination are different + if resolved_spec.resolve() != local_spec_path.resolve(): + try: + shutil.copyfile(str(resolved_spec), str(local_spec_path)) + logger.info(f"📄 Staged OPENAPI_SPEC: {resolved_spec} -> {local_spec_path}") + except Exception as e: + error_msg = f"Failed to stage OPENAPI_SPEC: {e}" + logger.error(f"❌ {error_msg}") + return False, error_msg + else: + logger.info(f"📄 OPENAPI_SPEC already in output directory: {local_spec_path}") + + pre_build_command[3:3] = ["-a", str(local_spec_path)] + + logger.info(f"🔧 Executing pre-build command: {' '.join(pre_build_command)}") + pre_build_result = subprocess.run( + pre_build_command, + capture_output=True, + text=True, + timeout=600 # 10 minute timeout for pre-build + ) + + if pre_build_result.returncode != 0: + error_msg = f"Pre-build command failed: {pre_build_result.stderr}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + logger.info("✅ Pre-build command completed successfully") + if pre_build_result.stdout: + logger.info(f"Pre-build output: {pre_build_result.stdout}") + + cmd = [ + "docker", "build", + "-f", str(dockerfile_path), + "-t", image_name + ] + + # Add build arguments + for key, value in build_args.items(): + cmd.extend(["--build-arg", f"{key}={value}"]) + + # Add context directory + cmd.append(str(build_context)) + + logger.info(f"Building image: {image_name}") + logger.info(f"Command: {' '.join(cmd)}") + + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=3600 # 1 hour timeout + ) + + if result.returncode == 0: + logger.info(f"✅ Successfully built image: {image_name}") + return True, result.stdout + else: + logger.error(f"❌ Failed to build image: {image_name}") + logger.error(f"Error: {result.stderr}") + return False, result.stderr + + except subprocess.TimeoutExpired: + error_msg = f"Build timed out for image: {image_name}" + logger.error(f"❌ {error_msg}") + return False, error_msg + except Exception as e: + error_msg = f"Exception during build: {str(e)}" + logger.error(f"❌ {error_msg}") + return False, error_msg + + def run_prerequisite_script(self, script_command: str, test_id: int, image_name: str = "", cwd: str = None) -> Tuple[bool, str]: + """Run a prerequisite script before testing the docker container. + + Supports {image_name} placeholder in script_command, which is replaced + with the built Docker image name before execution. + """ + if not script_command: + return True, "No prerequisite script specified" + + # Substitute {image_name} placeholder + if image_name: + script_command = script_command.replace("{image_name}", image_name) + + # Validate script command to prevent command injection + if not validate_script_command(script_command): + error_msg = f"Invalid script command: {script_command}. Command contains potentially dangerous characters." + logger.error(f"❌ {error_msg}") + return False, error_msg + + log_file = self.log_dir / f"prerequisite_{test_id}.log" + + try: + logger.info(f"🔧 Running prerequisite script: {script_command}") + logger.info(f"📄 Prerequisite logs will be saved to: {log_file}") + + # Use safer command execution - split command into arguments when possible + import shlex + try: + # Attempt to parse command safely first + cmd_args = shlex.split(script_command) + if len(cmd_args) == 1 and cmd_args[0].endswith('.sh'): + # Single script file - use direct execution without shell + result = subprocess.run( + cmd_args, + capture_output=True, + text=True, + timeout=1800, + cwd=cwd, + shell=False # Safer execution without shell + ) + else: + # Complex command - use shell with additional validation + # Double-check validation before shell execution + if not validate_script_command(script_command): + raise ValueError("Command failed security validation") + + result = subprocess.run( + script_command, + shell=True, # Only when necessary and after validation + capture_output=True, + text=True, + timeout=1800, + cwd=cwd + ) + except ValueError as e: + if "failed security validation" in str(e): + raise e + # Fall back to shell execution for complex commands (with validation) + result = subprocess.run( + script_command, + shell=True, + capture_output=True, + text=True, + timeout=1800, + cwd=cwd + ) + + # Save prerequisite script logs + with open(log_file, 'w') as f: + f.write("=== Prerequisite Script Execution ===\n") + f.write(f"Command: {script_command}\n") + f.write(f"Return Code: {result.returncode}\n") + f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") + f.write("\n=== STDOUT ===\n") + f.write(result.stdout) + f.write("\n=== STDERR ===\n") + f.write(result.stderr) + f.write("\n=== END LOG ===\n") + + if result.returncode == 0: + logger.info(f"✅ Prerequisite script completed successfully") + if result.stdout: + logger.info(f"Prerequisite output: {result.stdout}") + return True, result.stdout + else: + error_msg = f"Prerequisite script failed with return code {result.returncode}" + logger.error(f"❌ {error_msg}") + logger.error(f"Prerequisite stderr: {result.stderr}") + return False, error_msg + + except subprocess.TimeoutExpired: + error_msg = f"Prerequisite script timed out after 1800 seconds" + logger.error(f"❌ {error_msg}") + + # Save timeout log + with open(log_file, 'w') as f: + f.write("=== Prerequisite Script Execution ===\n") + f.write(f"Command: {script_command}\n") + f.write(f"Status: TIMEOUT\n") + f.write(f"Timeout: 1800 seconds\n") + f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") + f.write("\n=== ERROR ===\n") + f.write(error_msg) + f.write("\n=== END LOG ===\n") + + return False, error_msg + except Exception as e: + error_msg = f"Exception during prerequisite script execution: {str(e)}" + logger.error(f"❌ {error_msg}") + + # Save exception log + with open(log_file, 'w') as f: + f.write("=== Prerequisite Script Execution ===\n") + f.write(f"Command: {script_command}\n") + f.write(f"Status: EXCEPTION\n") + f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") + f.write("\n=== ERROR ===\n") + f.write(error_msg) + f.write("\n=== END LOG ===\n") + + return False, error_msg + + def test_image(self, image_name: str, test_config: Dict, test_id: int, gpus: str = "all") -> Tuple[bool, str, str]: + """Test the built image by running it and capture logs. + + Args: + image_name: Name of the Docker image to test + test_config: Test configuration dictionary + test_id: Unique test identifier + gpus: GPU devices to use (default: 'all') + """ + log_file = self.log_dir / f"test_{test_id}_{image_name.replace(':', '_')}.log" + + # Validate image name to prevent command injection + if not validate_image_name(image_name): + error_msg = f"Invalid image name: {image_name}. Image name contains invalid characters." + logger.error(f"❌ {error_msg}") + return False, error_msg, "" + + # Validate test configuration to prevent command injection + config_valid, config_error = validate_test_config(test_config) + if not config_valid: + error_msg = f"Invalid test configuration: {config_error}" + logger.error(f"❌ {error_msg}") + return False, error_msg, "" + + # Get timeout from test config, default to 10 seconds + timeout = test_config.get("timeout", 10) + + try: + # Check if image exists + result = subprocess.run( + ["docker", "image", "inspect", image_name], + capture_output=True, + text=True + ) + + if result.returncode != 0: + return False, f"Image {image_name} not found", "" + + # Run prerequisite script if specified + prerequisite_script = test_config.get("prerequisite_script") + if prerequisite_script: + config_dir = str(Path(test_config.get("_config_dir", ".")).resolve()) + prerequisite_success, prerequisite_output = self.run_prerequisite_script( + prerequisite_script, test_id, image_name=image_name, cwd=config_dir + ) + if not prerequisite_success: + return False, f"Prerequisite script failed: {prerequisite_output}", "" + + # Detect server type to choose test strategy + server_type = test_config.get("SERVER_TYPE", "serverless") + is_serverless = server_type == "serverless" + + # Prepare assets if specified + asset_ids = [] + asset_temp_dir = None + if "assets" in test_config: + import tempfile + + assets_config = test_config["assets"] + logger.info(f"📦 Preparing {len(assets_config)} asset(s)...") + + # Create temp directory for asset info.json files + asset_temp_dir = Path(tempfile.mkdtemp(prefix=f"test_assets_{test_id}_")) + + for idx, asset_data in enumerate(assets_config): + # Use the provided assetId + asset_id = asset_data["assetId"] + asset_ids.append(asset_id) + + # Create asset directory structure + asset_dir = asset_temp_dir / asset_id + asset_dir.mkdir(parents=True) + + # Write asset data to info.json inside the directory + info_file = asset_dir / "info.json" + with info_file.open("w") as f: + json.dump(asset_data, f, indent=2) + + logger.info(f"✅ Created asset {idx}: {asset_id} ({asset_data['path']})") + + # Run the container with test configuration + # Use host network for serverless; use port mapping for non-serverless to avoid port conflicts + # Use --ipc=host to share host's /dev/shm with the container; + # Docker's default 64MB /dev/shm is insufficient for PyTorch/TensorRT-LLM + # multiprocessing which shares tensors via shared memory, causing SIGBUS + # (Bus error: nonexistent physical address) when /dev/shm is exhausted. + cmd = ["docker", "run", "--ipc=host", "--gpus", gpus] + + # Add environment variables if specified + if "env" in test_config: + for key, value in test_config["env"].items(): + # Double-check validation to prevent injection + if not validate_env_var_name(key) or not validate_env_var_value(str(value)): + error_msg = f"Invalid environment variable: {key}={value}" + logger.error(f"❌ {error_msg}") + return False, error_msg, "" + cmd.extend(["-e", f"{key}={value}"]) + + # Get the test config directory for resolving relative paths + config_dir = Path(test_config.get("_config_dir", ".")).resolve() + + # Automatically add ERROR_EXPORT_PATH for error file collection + # Use unique error file names for different test cases + error_export_dir = Path("/tmp/error") + error_export_dir.mkdir(parents=True, exist_ok=True) + error_filename = f"inference_errors_{test_id}_{int(time.time())}.json" + error_export_file = error_export_dir / error_filename + container_error_path = f"/tmp/error/{error_filename}" + cmd.extend(["-e", f"ERROR_EXPORT_PATH={container_error_path}"]) + cmd.extend(["-v", f"{error_export_dir}:{error_export_dir}"]) + logger.info(f"📄 Error export: {error_export_file} -> {container_error_path}") + + # Add volume mounts if specified + if "volumes" in test_config: + logger.info(f"📁 Processing volumes: {test_config['volumes']}") + + for host_path, container_path in test_config["volumes"].items(): + # Double-check validation to prevent injection + if not validate_volume_path(host_path) or not validate_volume_path(container_path): + error_msg = f"Invalid volume path: {host_path}:{container_path}" + logger.error(f"❌ {error_msg}") + return False, error_msg, "" + + # Resolve host path to absolute path + # Priority: 1) Expand ~ for home directory, 2) Resolve relative to config dir, 3) Use as-is if absolute + expanded_path = os.path.expanduser(host_path) + + if not os.path.isabs(expanded_path): + # Relative path - resolve relative to test config directory + abs_host_path = str((config_dir / expanded_path).resolve()) + logger.info(f"📁 Resolved relative path: {host_path} -> {abs_host_path} (relative to config dir)") + else: + # Already absolute path + abs_host_path = expanded_path + logger.info(f"📁 Using absolute path: {host_path} -> {abs_host_path}") + + # Verify the resolved path exists (optional warning, not error) + if not os.path.exists(abs_host_path): + logger.warning(f"⚠️ Volume path does not exist yet: {abs_host_path}") + logger.warning(f"⚠️ This is OK if the path will be created by model download or other setup") + + volume_arg = f"{abs_host_path}:{container_path}" + cmd.extend(["-v", volume_arg]) + logger.info(f"📁 Adding volume mount: {volume_arg}") + else: + logger.info("📁 No additional volumes specified in test config") + + # Give the container a name for logging/cleanup purposes + expected_error = test_config.get("expected_error") + container_name = f"test-{test_id}-{int(time.time())}" + cmd.extend(["--name", container_name]) + logger.info(f"🏷️ Container name: {container_name}") + + # For FastAPI (or any non-serverless), run detached on host network (DinD friendly) + if not is_serverless: + cmd.insert(2, "--network=host") + cmd.insert(2, "-d") # run detached + else: + cmd.insert(2, "--network=host") + + # For serverless non-negative tests, save inference results for validation + result_export_file = None + if is_serverless and not expected_error: + result_export_dir = Path("/tmp/result") + result_export_dir.mkdir(parents=True, exist_ok=True) + result_filename = f"result_{test_id}_{int(time.time())}.json" + result_export_file = result_export_dir / result_filename + container_result_path = f"/tmp/result/{result_filename}" + cmd.extend(["-v", f"{result_export_dir}:{result_export_dir}"]) + logger.info(f"📄 Result export: {result_export_file} -> {container_result_path}") + + cmd.append(image_name) + + # Add command arguments if specified (serverless only) + if server_type == "serverless" and "cmd" in test_config: + cmd_args = test_config["cmd"] + + # Double-check validation for each command argument + for arg in cmd_args: + if not validate_docker_arg(str(arg)): + error_msg = f"Invalid command argument: {arg}" + logger.error(f"❌ {error_msg}") + return False, error_msg, "" + cmd.extend(cmd_args) + + # Append -s flag for serverless non-negative tests + if result_export_file: + cmd.extend(["-s", container_result_path]) + + logger.info(f"Testing image: {image_name}") + logger.info(f"Command: {' '.join(cmd)}") + logger.info(f"Timeout: {timeout} seconds") + logger.info(f"Logs will be saved to: {log_file}") + + # Log the complete command for debugging + logger.info("🔍 Complete docker run command:") + logger.info(f" {' '.join(cmd)}") + + if is_serverless: + # For serverless with assets, we need to start detached, copy assets, then wait + if asset_temp_dir: + # Insert -d flag to run detached + cmd.insert(2, "-d") + logger.info("🔍 Starting container in detached mode to copy assets...") + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=30 + ) + if result.returncode != 0: + logger.error(f"❌ Failed to start container: {result.stderr}") + return False, f"Container start failed: {result.stderr}", "" + + # Container ID is in stdout + container_id = result.stdout.strip() + logger.info(f"✅ Container started: {container_id[:12]}") + + # Create /tmp/assets directory in container + logger.info("📁 Creating /tmp/assets directory in container...") + mkdir_result = subprocess.run( + ["docker", "exec", container_name, "mkdir", "-p", "/tmp/assets"], + capture_output=True, + text=True, + timeout=10 + ) + if mkdir_result.returncode != 0: + logger.error(f"❌ Failed to create /tmp/assets: {mkdir_result.stderr}") + subprocess.run(["docker", "stop", container_name], capture_output=True, timeout=10) + subprocess.run(["docker", "rm", container_name], capture_output=True, timeout=10) + return False, f"Failed to create /tmp/assets: {mkdir_result.stderr}", "" + + # Copy assets into container + for idx, asset_id in enumerate(asset_ids): + src_path = asset_temp_dir / asset_id + dest_path = f"{container_name}:/tmp/assets/{asset_id}" + + logger.info(f"📦 Copying asset {idx} to container: {asset_id}") + copy_result = subprocess.run( + ["docker", "cp", str(src_path), dest_path], + capture_output=True, + text=True, + timeout=30 + ) + if copy_result.returncode != 0: + logger.error(f"❌ Failed to copy asset: {copy_result.stderr}") + subprocess.run(["docker", "stop", container_name], capture_output=True, timeout=10) + subprocess.run(["docker", "rm", container_name], capture_output=True, timeout=10) + return False, f"Asset copy failed: {copy_result.stderr}", "" + logger.info(f"✅ Asset {idx} copied successfully") + + # Now wait for container to complete + logger.info("⏳ Waiting for container to complete...") + wait_result = subprocess.run( + ["docker", "wait", container_name], + capture_output=True, + text=True, + timeout=timeout + ) + + # Get logs + logs_result = subprocess.run( + ["docker", "logs", container_name], + capture_output=True, + text=True, + timeout=30 + ) + stdout_output = logs_result.stdout + stderr_output = logs_result.stderr + + # Clean up the temp asset directory + import shutil as shutil_module + shutil_module.rmtree(asset_temp_dir, ignore_errors=True) + logger.info("🧹 Cleaned up temporary asset directory") + else: + # Run container normally and capture output + logger.info("🔍 Running container and capturing output...") + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=timeout + ) + stdout_output = result.stdout + stderr_output = result.stderr + + # Clean up the container + subprocess.run(["docker", "rm", container_name], capture_output=True, text=True, timeout=10) + + # Check if error export file was created + error_copy_failed = False + error_copy_msg = "" + if error_export_file.exists(): + file_size = error_export_file.stat().st_size + logger.info(f"📄 Found error export file: {error_export_file} (size: {file_size} bytes)") + else: + error_copy_failed = True + error_copy_msg = f"Error export file not found: {error_export_file}" + logger.warning(f"⚠️ {error_copy_msg}") + else: + # FastAPI-like server flow: start container detached, poll readiness, run client, then stop and collect logs + logger.info("🚀 Starting server container in detached mode") + start_proc = subprocess.run( + cmd, + capture_output=True, + text=True + ) + if start_proc.returncode != 0: + error_msg = f"Failed to start server container: {start_proc.stderr}" + logger.error(f"❌ {error_msg}") + return False, error_msg, "" + container_id = start_proc.stdout.strip() + logger.info(f"🆔 Container ID: {container_id}") + + # Copy assets into container if specified + if asset_temp_dir: + # Create /tmp/assets directory in container + logger.info("📁 Creating /tmp/assets directory in container...") + mkdir_result = subprocess.run( + ["docker", "exec", container_name, "mkdir", "-p", "/tmp/assets"], + capture_output=True, + text=True, + timeout=10 + ) + if mkdir_result.returncode != 0: + logger.error(f"❌ Failed to create /tmp/assets: {mkdir_result.stderr}") + subprocess.run(["docker", "stop", container_name], capture_output=True, timeout=10) + subprocess.run(["docker", "rm", container_name], capture_output=True, timeout=10) + return False, f"Failed to create /tmp/assets: {mkdir_result.stderr}", "" + + for idx, asset_id in enumerate(asset_ids): + src_path = asset_temp_dir / asset_id + dest_path = f"{container_name}:/tmp/assets/{asset_id}" + + logger.info(f"📦 Copying asset {idx} to container: {asset_id}") + copy_result = subprocess.run( + ["docker", "cp", str(src_path), dest_path], + capture_output=True, + text=True, + timeout=30 + ) + if copy_result.returncode != 0: + logger.error(f"❌ Failed to copy asset: {copy_result.stderr}") + subprocess.run(["docker", "stop", container_name], capture_output=True, timeout=10) + subprocess.run(["docker", "rm", container_name], capture_output=True, timeout=10) + return False, f"Asset copy failed: {copy_result.stderr}", "" + logger.info(f"✅ Asset {idx} copied successfully") + + # Clean up the temp asset directory + import shutil as shutil_module + shutil_module.rmtree(asset_temp_dir, ignore_errors=True) + logger.info("🧹 Cleaned up temporary asset directory") + + # Readiness probe + ready = False + http_error_status = None # Track if we got an HTTP error + ready_deadline = time.time() + max(1, timeout) + service_host = self.get_service_host() + # Get HTTP port from test config env, default to 8000 + http_port = test_config.get("env", {}).get("HTTP_PORT", "8000") + health_url = f"http://{service_host}:{http_port}/v1/health/ready" + logger.info(f"🔎 Probing readiness: {health_url}") + while time.time() < ready_deadline: + try: + with urllib.request.urlopen(health_url, timeout=2) as resp: + if resp.status == 200: + ready = True + break + else: + logger.info(f"Health probe returned non-200 status: {resp.status}") + except urllib.error.HTTPError as e: + http_error_status = e.code + logger.error(f"❌ Health probe HTTPError: status={e.code} - server returned error, stopping retry") + break # No retry on HTTP errors - server is responding but not healthy + except urllib.error.URLError as e: + if isinstance(e.reason, socket.timeout): + logger.warning("Health probe request timed out") + else: + logger.info(f"Health probe URLError: {e.reason}, retrying...") + except (TimeoutError, socket.timeout): + logger.warning("Health probe request timed out, retrying...") + time.sleep(2) + + client_stdout = "" + client_stderr = "" + client_rc = 1 + + if not ready: + if http_error_status: + logger.error(f"❌ Server health check failed with HTTP error {http_error_status}") + else: + logger.error("❌ Server did not become ready within timeout") + # Collect logs to see what went wrong during initialization + logger.info("📋 Collecting container logs for failed readiness...") + logs_proc = subprocess.run(["docker", "logs", container_id], capture_output=True, text=True) + if logs_proc.stdout: + logger.info("🔍 Container initialization logs:") + for line in logs_proc.stdout.split('\n')[-20:]: # Show last 20 lines + if line.strip(): + logger.info(f" {line}") + if logs_proc.stderr: + logger.error("🔍 Container error logs:") + for line in logs_proc.stderr.split('\n')[-10:]: # Show last 10 error lines + if line.strip(): + logger.error(f" {line}") + else: + # Check if auto_validation is specified - run directly on host + auto_validation_path = test_config.get("auto_validation") + if auto_validation_path: + logger.info("✅ Server is ready. Running validation script on host...") + + try: + # Resolve validation folder path relative to config directory + config_dir = Path(test_config.get("_config_dir", ".")).resolve() + validation_folder = (config_dir / auto_validation_path).resolve() + + # Fixed script name is test_runner.py (generated during build via -v flag) + # It's located in the validation folder subdirectories (e.g., gdino/.tmp/test_runner.py) + # Determine which subdirectory based on TAO_MODEL_NAME + tao_model_name = test_config.get("env", {}).get("TAO_MODEL_NAME", "") + if not tao_model_name: + logger.error("❌ TAO_MODEL_NAME not specified in test_config.env") + client_rc = 1 + client_stdout = "" + client_stderr = "TAO_MODEL_NAME not specified" + else: + validation_script_path = validation_folder / ".tmp" / "test_runner.py" + + if not validation_script_path.exists(): + logger.error(f"❌ Validation script not found: {validation_script_path}") + client_rc = 1 + client_stdout = "" + client_stderr = f"Validation script not found: {validation_script_path}" + else: + logger.info(f"🔧 Running validation script: {validation_script_path}") + + # Set up environment variables for validation script + validation_env = os.environ.copy() + if "env" in test_config: + validation_env.update({k: str(v) for k, v in test_config["env"].items()}) + + # Add service host for validation script to connect to server + # The validation script expects TEST_HOST environment variable + # Use HTTP_PORT from test config env, default to 8000 + validation_env["TEST_HOST"] = f"http://{service_host}:{http_port}" + + # Run validation script with Python + validation_proc = subprocess.run( + ["python", str(validation_script_path)], + capture_output=True, + text=True, + timeout=max(60, timeout), + cwd=str(validation_script_path.parent), + env=validation_env + ) + client_rc = validation_proc.returncode + client_stdout = validation_proc.stdout + client_stderr = validation_proc.stderr + + if client_rc == 0: + logger.info("✅ Validation script completed successfully") + if client_stdout: + logger.info(f"Validation output:\n{client_stdout}") + else: + logger.error(f"❌ Validation script failed with return code {client_rc}") + if client_stderr: + logger.error(f"Validation stderr:\n{client_stderr}") + if client_stdout: + logger.error(f"Validation stdout:\n{client_stdout}") + except subprocess.TimeoutExpired: + logger.error("❌ Validation script timed out") + client_rc = 1 + client_stdout = "" + client_stderr = "Validation script timed out" + except Exception as e: + logger.error(f"❌ Exception running validation script: {e}") + client_rc = 1 + client_stdout = "" + client_stderr = str(e) + else: + logger.info("✅ Server is ready. Launching concurrent curl requests...") + # Read NDJSON files and launch curl for each line + # Get test_requests from test_config, with a default fallback based on app name + test_app_name = test_config.get("TEST_APP_NAME") or None + default_test_requests = [{"payload_path": f"{test_app_name}/payloads/payloads.jsonl"}] + test_requests_list = test_config.get("test_requests", default_test_requests) + + # Ensure test_requests is a list + if not isinstance(test_requests_list, list): + logger.error(f"❌ test_requests must be a list, got: {type(test_requests_list)}") + client_rc = 1 + client_stdout = "" + client_stderr = "test_requests must be a list" + else: + # Check if any request has scheduled_time (for sequential execution) + has_scheduled = any("scheduled_time" in item for item in test_requests_list) + + # Resolve payloads_path relative to config directory + config_dir = Path(test_config.get("_config_dir", ".")).resolve() + + # Get endpoint from test_config, default to /v1/inference + endpoint = test_config.get("endpoint", "/v1/inference") + logger.info(f"🎯 Using endpoint: {endpoint}") + + if has_scheduled: + # Sequential execution with timing + logger.info("⏰ Using sequential execution with scheduled times") + + # Sort requests by scheduled_time + sorted_requests = sorted(test_requests_list, key=lambda x: x.get("scheduled_time", 0)) + + start_time = time.time() + all_succeeded = True + async_processes = [] # Track async processes for later status check + + for request_item in sorted_requests: + scheduled_time = request_item.get("scheduled_time", 0) + elapsed = time.time() - start_time + + # Wait until scheduled time + if scheduled_time > elapsed: + wait_time = scheduled_time - elapsed + logger.info(f"⏳ Waiting {wait_time:.1f}s until scheduled time {scheduled_time}s...") + time.sleep(wait_time) + + # Extract request config + http_method = request_item.get("method", "POST").upper() + http_headers = request_item.get("headers", {"Content-Type": "application/json"}) + request_endpoint = request_item.get("endpoint", endpoint) + + # Get payload + payload_data = None + if "payload_path" in request_item: + payload_path = (config_dir / request_item["payload_path"]).resolve() + if payload_path.exists(): + with payload_path.open("r") as f: + first_line = f.readline().strip() + if first_line: + payload_data = first_line + else: + logger.error(f"❌ Payload file not found: {payload_path}") + all_succeeded = False + continue + + # Build curl command + url = f"http://{service_host}:{http_port}{request_endpoint}" + curl_cmd = ["curl", "-sS", "-X", http_method, "-w", "\\n%{http_code}"] + + for header_name, header_value in http_headers.items(): + curl_cmd.extend(["-H", f"{header_name}: {header_value}"]) + + if payload_data and http_method in ["POST", "PUT", "PATCH", "DELETE"]: + curl_cmd.extend(["-d", payload_data]) + + curl_cmd.append(url) + + logger.info(f"🌐 [{scheduled_time}s] {http_method} {request_endpoint}") + if payload_data: + logger.info(f"📦 Payload: {payload_data[:200]}{'...' if len(payload_data) > 200 else ''}") + + # Check if this is an async request + is_async = request_item.get("async", False) + + if is_async: + # Launch async request without waiting for response + logger.info(f"🚀 Launching async request") + try: + proc = subprocess.Popen( + curl_cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True + ) + async_processes.append((proc, http_method, request_endpoint)) + logger.info(f"✅ Async request launched (PID: {proc.pid})") + except Exception as e: + logger.error(f"❌ Failed to launch async request: {e}") + all_succeeded = False + else: + # Execute synchronous request + try: + result = subprocess.run(curl_cmd, capture_output=True, text=True, timeout=30) + response_output = result.stdout.strip() + + # Split response body and status code + lines = response_output.split('\n') + status_code = int(lines[-1]) if lines and lines[-1].isdigit() else 0 + response_body = '\n'.join(lines[:-1]) if len(lines) > 1 else "" + + logger.info(f"📡 Status: {status_code}") + if response_body: + logger.info(f"✅ Response: {response_body[:300]}{'...' if len(response_body) > 300 else ''}") + + if status_code < 200 or status_code >= 300: + logger.error(f"❌ Request failed with status {status_code}") + all_succeeded = False + except subprocess.TimeoutExpired: + logger.error(f"❌ Request timed out") + all_succeeded = False + except Exception as e: + logger.error(f"❌ Request failed: {e}") + all_succeeded = False + + # Wait for async processes and check their results + if async_processes: + logger.info(f"\n⏳ Waiting for {len(async_processes)} async request(s) to complete...") + for proc, method, endpoint in async_processes: + try: + stdout, stderr = proc.communicate(timeout=30) + response_output = stdout.strip() + + # Split response body and status code + lines = response_output.split('\n') + status_code = int(lines[-1]) if lines and lines[-1].isdigit() else 0 + response_body = '\n'.join(lines[:-1]) if len(lines) > 1 else "" + + logger.info(f"📡 Async {method} {endpoint} - Status: {status_code}") + if response_body: + logger.info(f" Response: {response_body[:200]}{'...' if len(response_body) > 200 else ''}") + + if status_code < 200 or status_code >= 300: + logger.error(f"❌ Async request failed with status {status_code}") + all_succeeded = False + except subprocess.TimeoutExpired: + logger.error(f"❌ Async {method} {endpoint} timed out") + proc.kill() + all_succeeded = False + except Exception as e: + logger.error(f"❌ Async {method} {endpoint} failed: {e}") + all_succeeded = False + + # Set final result + if all_succeeded: + logger.info("\n✅ All scheduled requests completed successfully") + client_rc = 0 + client_stdout = "All requests succeeded" + client_stderr = "" + else: + logger.error("\n❌ Some requests failed") + client_rc = 1 + client_stdout = "" + client_stderr = "One or more requests failed" + else: + # Parallel execution (existing logic) + logger.info("🚀 Using parallel execution") + + # Collect all payload lines from all files with their configs + # Each entry: (payload_line, method, headers) + all_payloads = [] + for request_item in test_requests_list: + # Parse test request (must be dict) + if not isinstance(request_item, dict): + logger.error(f"❌ Invalid test_requests item (must be dict): {request_item}") + continue + + # Extract config with defaults + http_method = request_item.get("method", "POST").upper() + http_headers = request_item.get("headers", {"Content-Type": "application/json"}) + + # Check if payload_path is provided + if "payload_path" not in request_item: + # No payload_path - single request with no payload (useful for GET) + logger.info(f"📄 No payload file specified") + logger.info(f" Method: {http_method}, Headers: {http_headers}") + all_payloads.append(("", http_method, http_headers)) + else: + # Path provided - load payloads from file + payload_path_str = request_item["payload_path"] + payload_path = (config_dir / payload_path_str).resolve() + logger.info(f"📄 Resolved payload path: {payload_path_str} -> {payload_path}") + logger.info(f" Method: {http_method}, Headers: {http_headers}") + + if not payload_path.exists(): + logger.error(f"❌ Payload file not found: {payload_path}") + else: + with payload_path.open("r") as f: + payload_lines = [line.strip() for line in f if line.strip()] + # Associate each payload with its method and headers + for line in payload_lines: + all_payloads.append((line, http_method, http_headers)) + logger.info(f"📋 Loaded {len(payload_lines)} payloads from {payload_path.name}") + + if not all_payloads: + logger.error(f"❌ No payloads found in any file") + client_rc = 1 + client_stdout = "" + client_stderr = "No payloads found" + else: + logger.info(f"📋 Total payloads to process: {len(all_payloads)}") + + procs: List[subprocess.Popen] = [] + for payload_line, method, headers in all_payloads: + # Check if this is a multipart/form-data upload + content_type = headers.get("Content-Type", "").lower() + is_multipart = "multipart/form-data" in content_type + + # Build curl command with method and headers from payload config + curl_cmd = ["curl", "-sS", "-X", method, "-w", "%{http_code}"] + + if is_multipart and method in ["POST", "PUT", "PATCH"] and payload_line: + # Multipart upload: parse JSON to get file field and use -F + try: + payload_data = json.loads(payload_line) + + # Add non-Content-Type headers (curl -F sets Content-Type automatically) + for header_name, header_value in headers.items(): + if header_name.lower() != "content-type": + curl_cmd.extend(["-H", f"{header_name}: {header_value}"]) + + # Add form fields with -F + for field_name, field_value in payload_data.items(): + if isinstance(field_value, str): + # Try to resolve as a file path (relative to config dir) + file_path = Path(field_value) + if not file_path.is_absolute(): + # Try relative to config dir + resolved_path = (config_dir / field_value).resolve() + else: + # Already absolute + resolved_path = file_path.resolve() + + # Check if the resolved path exists and is a file + if resolved_path.exists() and resolved_path.is_file(): + # Use @ prefix for file upload + curl_cmd.extend(["-F", f"{field_name}=@{resolved_path}"]) + logger.info(f" 📎 Uploading file: {field_name}={resolved_path}") + else: + # Not a valid file path, send as string value + curl_cmd.extend(["-F", f"{field_name}={field_value}"]) + if field_value: + logger.debug(f" 📝 Form field: {field_name}={field_value}") + else: + # Non-string value (number, bool, etc.) + curl_cmd.extend(["-F", f"{field_name}={field_value}"]) + except json.JSONDecodeError as e: + logger.error(f"❌ Failed to parse payload as JSON for multipart upload: {e}") + logger.error(f" Payload: {payload_line}") + continue + else: + # Regular JSON request + # Add headers + for header_name, header_value in headers.items(): + curl_cmd.extend(["-H", f"{header_name}: {header_value}"]) + + # Add data for methods that support body (only if payload is not empty) + if method in ["POST", "PUT", "PATCH"] and payload_line: + curl_cmd.extend(["--data", payload_line]) + + # Add URL + curl_cmd.append(f"http://{service_host}:{http_port}{endpoint}") + + procs.append(subprocess.Popen( + curl_cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True + )) + + outs: List[str] = [] + errs: List[str] = [] + client_rc = 0 + http_status_errors = [] + for i, p in enumerate(procs): + out, err = p.communicate(timeout=max(5, timeout)) + outs.append(out or "") + errs.append(err or "") + if p.returncode != 0: + client_rc = p.returncode + else: + # For non-serverless, check HTTP status is 200 + # curl -w "%{http_code}" appends status to stdout + if out and len(out) >= 3: + # Extract last 3 chars as HTTP status code + http_status = out[-3:] + if http_status != "200": + http_status_errors.append( + f"Request {i+1}: HTTP {http_status}" + ) + client_rc = 1 # Mark as failed + + client_stdout = "\n".join(outs) + client_stderr = "\n".join(errs) + + # Log HTTP status errors for non-serverless + if http_status_errors: + error_msg = ( + f"Non-serverless server returned non-200 status " + f"codes: {'; '.join(http_status_errors)}" + ) + logger.error("❌ %s", error_msg) + client_stderr += f"\n{error_msg}" + + # Always attempt to stop and collect logs + logger.info("🛑 Stopping server container") + + # Collect logs BEFORE stopping container (while it's still running) + logger.info("📋 Collecting container logs...") + logs_proc = subprocess.run(["docker", "logs", container_id], capture_output=True, text=True) + server_logs = logs_proc.stdout + if logs_proc.stderr: + server_logs += "\n=== STDERR ===\n" + logs_proc.stderr + + # Check if error export file was created + error_copy_failed = False + error_copy_msg = "" + if error_export_file.exists(): + file_size = error_export_file.stat().st_size + logger.info(f"📄 Found error export file: {error_export_file} (size: {file_size} bytes)") + else: + error_copy_failed = True + error_copy_msg = f"Error export file not found: {error_export_file}" + logger.warning(f"⚠️ {error_copy_msg}") + + # Now stop and remove container + subprocess.run(["docker", "stop", container_id], capture_output=True, text=True) + subprocess.run(["docker", "rm", container_id], capture_output=True, text=True) + + # Prepare a Result-like object + class Result: + def __init__(self, returncode, stdout, stderr): + self.returncode = returncode + self.stdout = stdout + self.stderr = stderr + + combined_stdout = "".join([ + "=== SERVER LOGS ===\n", server_logs or "", + "\n=== CLIENT STDOUT ===\n", client_stdout or "", + ]) + combined_stderr = client_stderr or "" + # For non-serverless flows, we care about HTTP responses and validation status, + # not the container's own exit code. Track client failure separately and + # keep Result.returncode neutral (0) so final status can branch by server type. + client_failed = not (ready and client_rc == 0) + result = Result(0, combined_stdout, combined_stderr) + + # Save logs to file + with open(log_file, 'w') as f: + f.write("=== Test Configuration ===\n") + f.write(f"Image: {image_name}\n") + f.write(f"Command: {' '.join(cmd)}\n") + f.write(f"Return Code: {result.returncode}\n") + f.write(f"Timeout: {timeout} seconds\n") + f.write("Error Detection: Enabled (via JSON export)\n") + f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") + f.write("\n=== STDOUT ===\n") + f.write(result.stdout) + f.write("\n=== STDERR ===\n") + f.write(result.stderr) + f.write("\n=== END LOG ===\n") + + # Check for expected_error (negative test) using exported error JSON + expected_error = test_config.get("expected_error") + if expected_error: + # This is a negative test - fail immediately if error file not found + if error_copy_failed or error_export_file is None: + error_msg = f"Negative test FAILED: Could not find error export file: {error_copy_msg}" + logger.error(f"❌ {error_msg}") + logger.info(f"📄 Logs saved to: {log_file}") + return False, error_msg, str(log_file) + + # Try to read the exported error file + matched_error = None # Will hold the error that matches expected_error exactly + + if error_export_file.exists(): + try: + with open(error_export_file, 'r') as f: + error_data = json.load(f) + + stats = error_data.get("stats", {}) + total_errors = stats.get("total_errors", 0) + errors = error_data.get("errors", []) + collected_codes = [err.get("error_code") for err in errors] + + # Search for EXACT match of expected error code + for err in errors: + if err.get("error_code") == expected_error: + matched_error = err + break + + if matched_error is not None: + # EXACT match found - test passes + logger.info(f"✅ Negative test PASSED: Error code '{expected_error}' matches exactly") + logger.info(f" Error message: {matched_error.get('message', 'N/A')[:200]}") + logger.info(f" Component: {matched_error.get('component', 'N/A')}") + logger.info(f" Operation: {matched_error.get('operation', 'N/A')}") + logger.info(f" Total errors collected: {total_errors}") + logger.info(f"📄 Logs saved to: {log_file}") + return True, result.stdout, str(log_file) + else: + # No exact match - test fails + error_msg = f"Negative test FAILED: Expected error '{expected_error}' not found" + logger.error(f"❌ {error_msg}") + logger.error(f" Collected error codes: {collected_codes}") + logger.error(f" Total errors: {total_errors}") + logger.info(f"📄 Logs saved to: {log_file}") + return False, error_msg, str(log_file) + except json.JSONDecodeError as e: + error_msg = f"Negative test FAILED: Failed to parse error export file: {e}" + logger.error(f"❌ {error_msg}") + logger.info(f"📄 Logs saved to: {log_file}") + return False, error_msg, str(log_file) + except Exception as e: + error_msg = f"Negative test FAILED: Failed to read error export file: {e}" + logger.error(f"❌ {error_msg}") + logger.info(f"📄 Logs saved to: {log_file}") + return False, error_msg, str(log_file) + else: + # Error export file doesn't exist + error_msg = f"Negative test FAILED: Error export file not found: {error_export_file}" + logger.error(f"❌ {error_msg}") + logger.info(f"📄 Logs saved to: {log_file}") + return False, error_msg, str(log_file) + + # For serverless non-negative tests, check that the result file exists and is non-empty + if result_export_file: + if not result_export_file.exists(): + error_msg = f"Result file not found: {result_export_file}" + logger.error(f"❌ {error_msg}") + logger.info(f"📄 Logs saved to: {log_file}") + return False, error_msg, str(log_file) + file_size = result_export_file.stat().st_size + if file_size == 0: + error_msg = f"Result file is empty: {result_export_file}" + logger.error(f"❌ {error_msg}") + logger.info(f"📄 Logs saved to: {log_file}") + return False, error_msg, str(log_file) + logger.info(f"📄 Result file OK: {result_export_file} ({file_size} bytes)") + + # Check for errors using the exported error JSON file (if ERROR_EXPORT_PATH was configured) + has_errors = False + error_details = [] + + if error_export_file and error_export_file.exists(): + try: + with open(error_export_file, 'r') as f: + error_data = json.load(f) + + stats = error_data.get("stats", {}) + total_errors = stats.get("total_errors", 0) + errors = error_data.get("errors", []) + + if total_errors > 0: + has_errors = True + for err in errors: + error_details.append({ + "code": err.get("error_code", "UNKNOWN"), + "message": err.get("message", "N/A"), + "severity": err.get("severity", "unknown"), + "component": err.get("component", "N/A") + }) + except json.JSONDecodeError as e: + logger.warning(f"⚠️ Failed to parse error export file: {e}") + except Exception as e: + logger.warning(f"⚠️ Failed to read error export file: {e}") + + # Determine overall success: + # - For serverless flows, rely on container return code and error exports. + # - For non-serverless HTTP server flows, rely on HTTP/client status (client_failed) + # and error exports; ignore the container's own exit code. + if is_serverless: + rc_failed = result.returncode < 0 + else: + # client_failed is only set in non-serverless branch; default to False otherwise + rc_failed = 'client_failed' in locals() and client_failed + + if not rc_failed and not has_errors: + logger.info(f"✅ Successfully tested image: {image_name}") + logger.info(f"📄 Logs saved to: {log_file}") + return True, result.stdout, str(log_file) + elif has_errors: + error_msg = f"Test failed: {len(error_details)} error(s) detected in image: {image_name}" + logger.error(f"❌ {error_msg}") + logger.error("Errors found:") + for err in error_details[:10]: # Show first 10 errors + logger.error(f" [{err['severity'].upper()}] {err['code']}: {err['message'][:100]}") + if len(error_details) > 10: + logger.error(f" ... and {len(error_details) - 10} more errors") + logger.info(f"📄 Logs saved to: {log_file}") + logger.info(f"📄 Error export: {error_export_file}") + return False, error_msg, str(log_file) + else: + if is_serverless: + logger.error( + f"❌ Test failed with negative return code for image: {image_name}" + ) + logger.error(f"Return code: {result.returncode}") + failure_reason = f"Test failed with negative return code {result.returncode}" + else: + logger.error( + f"❌ Test failed due to client/HTTP errors for image: {image_name}" + ) + failure_reason = "Test failed due to client/HTTP errors" + logger.info(f"📄 Logs saved to: {log_file}") + return False, failure_reason, str(log_file) + + except subprocess.TimeoutExpired as timeout_ex: + error_msg = f"Test timed out after {timeout} seconds for image: {image_name}" + logger.error(f"❌ {error_msg}") + + # Try to collect container logs if this was a detached container + container_logs = "" + if server_type != "serverless": + # For non-serverless, we have a detached container that needs cleanup + try: + # Check if container_id was defined (container was started) + if 'container_id' in locals(): + logger.info(f"📋 Collecting logs from timed-out container: {container_id}") + logs_proc = subprocess.run( + ["docker", "logs", container_id], + capture_output=True, + text=True, + timeout=10 + ) + container_logs = logs_proc.stdout + if logs_proc.stderr: + container_logs += "\n=== STDERR ===\n" + logs_proc.stderr + + # Stop and remove the container + logger.info(f"🛑 Stopping timed-out container: {container_id}") + subprocess.run(["docker", "stop", container_id], capture_output=True, text=True, timeout=30) + subprocess.run(["docker", "rm", container_id], capture_output=True, text=True, timeout=10) + except Exception as cleanup_error: + logger.warning(f"⚠️ Failed to collect logs or cleanup container: {cleanup_error}") + container_logs += f"\n\n[Error during log collection: {cleanup_error}]\n" + + # Save timeout log with container logs if available + with open(log_file, 'w') as f: + f.write("=== Test Configuration ===\n") + f.write(f"Image: {image_name}\n") + f.write(f"Command: {' '.join(cmd)}\n") + f.write(f"Status: TIMEOUT\n") + f.write(f"Timeout: {timeout} seconds\n") + f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") + f.write("\n=== ERROR ===\n") + f.write(error_msg) + if container_logs: + f.write("\n\n=== CONTAINER LOGS ===\n") + f.write(container_logs) + f.write("\n=== END LOG ===\n") + + return False, error_msg, str(log_file) + except Exception as e: + error_msg = f"Exception during test: {str(e)}" + logger.error(f"❌ {error_msg}") + + # Add full traceback for debugging + import traceback + full_traceback = traceback.format_exc() + logger.error(f"Traceback:\n{full_traceback}") + + # Try to collect container logs if this was a detached container + container_logs = "" + if server_type != "serverless": + # For non-serverless, we have a detached container that needs cleanup + try: + # Check if container_id was defined (container was started) + if 'container_id' in locals(): + logger.info(f"📋 Collecting logs from failed container: {container_id}") + logs_proc = subprocess.run( + ["docker", "logs", container_id], + capture_output=True, + text=True, + timeout=10 + ) + container_logs = logs_proc.stdout + if logs_proc.stderr: + container_logs += "\n=== STDERR ===\n" + logs_proc.stderr + + # Stop and remove the container + logger.info(f"🛑 Stopping failed container: {container_id}") + subprocess.run(["docker", "stop", container_id], capture_output=True, text=True, timeout=30) + subprocess.run(["docker", "rm", container_id], capture_output=True, text=True, timeout=10) + except Exception as cleanup_error: + logger.warning(f"⚠️ Failed to collect logs or cleanup container: {cleanup_error}") + container_logs += f"\n\n[Error during log collection: {cleanup_error}]\n" + + # Save exception log + with open(log_file, 'w') as f: + f.write("=== Test Configuration ===\n") + f.write(f"Image: {image_name}\n") + f.write(f"Status: EXCEPTION\n") + f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") + f.write("\n=== ERROR ===\n") + f.write(error_msg) + f.write("\n\n=== TRACEBACK ===\n") + f.write(full_traceback) + if container_logs: + f.write("\n\n=== CONTAINER LOGS ===\n") + f.write(container_logs) + f.write("\n=== END LOG ===\n") + + return False, error_msg, str(log_file) + + def cleanup_prerequisite_script(self, test_config: Dict, test_id: int) -> bool: + """Clean up resources created by prerequisite scripts.""" + prerequisite_script = test_config.get("prerequisite_script") + if not prerequisite_script: + return True + + try: + # Check if the script is the RTSP server setup script + if "setup_rtsp_server.sh" in prerequisite_script: + logger.info("🧹 Cleaning up RTSP server...") + # Use secure command execution for cleanup + cleanup_command = ["./setup_rtsp_server.sh", "--kill"] + cleanup_result = subprocess.run( + cleanup_command, + shell=False, # Safer execution without shell + capture_output=True, + text=True, + timeout=30 + ) + + if cleanup_result.returncode == 0: + logger.info("✅ RTSP server cleanup completed") + return True + else: + logger.warning(f"⚠️ RTSP server cleanup failed: {cleanup_result.stderr}") + return False + + # Add more cleanup logic for other prerequisite scripts here + logger.info("🧹 No specific cleanup needed for prerequisite script") + return True + + except Exception as e: + logger.warning(f"⚠️ Exception during prerequisite cleanup: {str(e)}") + return False + + def cleanup_image(self, image_name: str) -> bool: + """Remove the test image.""" + try: + result = subprocess.run( + ["docker", "rmi", image_name], + capture_output=True, + text=True + ) + + if result.returncode == 0: + logger.info(f"🧹 Cleaned up image: {image_name}") + return True + else: + logger.warning(f"⚠️ Failed to cleanup image: {image_name}") + return False + + except Exception as e: + logger.warning(f"⚠️ Exception during cleanup: {str(e)}") + return False + + def run_test_suite(self, test_configs: List[Dict], cleanup: bool = True, gitlab_token: Optional[str] = None, force_full_flow: bool = False, gpus: str = "all") -> Dict: + """Run a suite of tests with different configurations. + + Args: + test_configs: List of test configurations + cleanup: Whether to cleanup Docker images after testing + gitlab_token: GitLab token for authentication + force_full_flow: Force full build+test flow even for disabled tests + gpus: GPU devices to use (default: 'all') + """ + results = { + "total_tests": len(test_configs), + "passed": 0, + "failed": 0, + "results": [] + } + + for i, config in enumerate(test_configs, 1): + logger.info(f"\n{'='*60}") + logger.info(f"Running test {i}/{len(test_configs)}") + logger.info(f"{'='*60}") + + # Generate unique image name + image_name = f"test-inference_builder-{i}-{int(time.time())}" + + build_args = config.get("build_args", {}).copy() + test_cfg = config.get("test_config", {}).copy() + + # Add _config_dir to test_cfg so paths can be resolved correctly + if "_config_dir" in config: + test_cfg["_config_dir"] = config["_config_dir"] + + # Note: auto_validation is passed directly to build_image via test_config + # No need to add it to build_args + + # Debug logging for flow decision + default_enable = test_cfg.get("default_enable", True) + logger.info(f"🔍 Test flow decision: default_enable={default_enable}, force_full_flow={force_full_flow}") + + # If default_enable is False, skip Docker build/test but run codegen, + # unless full flow is forced by selection (e.g., --test-case provided) + if not default_enable and not force_full_flow: + logger.info("⚙️ Test disabled via default_enable=false. Running code generation only (skipping model download)...") + codegen_success, codegen_output = self.generate_inference_code(build_args, test_cfg) + + status = "SKIPPED" + test_result = { + "test_id": i, + "config": config, + "status": status, + "build_success": False, + "test_success": False, + "build_output": codegen_output, + "test_output": "", + "log_file": "", + "image_name": image_name + } + results["results"].append(test_result) + logger.info(f"Test {i} result: {status} (codegen_only)") + # Do not increment passed/failed counters for skipped tests + continue + + # Download models if specified in test config (only for full build+test flow) + models_config = test_cfg.get("models", {}) + if models_config: + logger.info(f"📦 Checking and downloading models (full build+test flow)...") + config_dir = Path(config.get("_config_dir", ".")) + download_success, download_msg = self.download_models(models_config, config_dir) + if not download_success: + logger.error(f"❌ Model download failed: {download_msg}") + results["failed"] += 1 + test_result = { + "test_id": i, + "config": config, + "status": "FAILED", + "build_success": False, + "test_success": False, + "build_output": "", + "test_output": download_msg, + "log_file": "", + "image_name": image_name + } + results["results"].append(test_result) + logger.info(f"Test {i} result: FAILED (model download)") + continue + + # Build image with resolved dockerfile and base_dir + dockerfile_to_use = config.get("_resolved_dockerfile") + base_dir_to_use = config.get("_resolved_base_dir") + build_success, build_output = self.build_image(build_args, image_name, dockerfile_to_use, base_dir_to_use, test_cfg) + + if build_success: + # Test image - pass server type and config dir to test_config + test_config = config.get("test_config", {}).copy() + if "SERVER_TYPE" in build_args: + test_config["SERVER_TYPE"] = build_args["SERVER_TYPE"] + # Pass config directory for relative path resolution + if "_config_dir" in config: + test_config["_config_dir"] = config["_config_dir"] + if "TEST_APP_NAME" in build_args: + test_config["TEST_APP_NAME"] = build_args["TEST_APP_NAME"] + test_success, test_output, log_file = self.test_image( + image_name, + test_config, + i, + gpus=gpus + ) + + if test_success: + results["passed"] += 1 + status = "PASSED" + else: + results["failed"] += 1 + status = "FAILED" + else: + results["failed"] += 1 + test_success = False + test_output = "" + log_file = "" + status = "FAILED" + + # Cleanup (run cleanup for full-flow tests; skip if codegen-only path was taken) + if cleanup: + self.cleanup_image(image_name) + # Clean up prerequisite scripts + self.cleanup_prerequisite_script(config.get("test_config", {}), i) + + # Store result + test_result = { + "test_id": i, + "config": config, + "status": status, + "build_success": build_success, + "test_success": test_success, + "build_output": build_output, + "test_output": test_output, + "log_file": log_file, + "image_name": image_name + } + + results["results"].append(test_result) + + logger.info(f"Test {i} result: {status}") + + return results + + def generate_report(self, results: Dict, output_file: Optional[str] = None): + """Generate a test report.""" + report = { + "summary": { + "total_tests": results["total_tests"], + "passed": results["passed"], + "failed": results["failed"], + "success_rate": f"{(results['passed'] / results['total_tests'] * 100):.1f}%" if results["total_tests"] > 0 else "0%" + }, + "results": results["results"] + } + + if output_file: + with open(output_file, 'w') as f: + json.dump(report, f, indent=2) + logger.info(f"📄 Report saved to: {output_file}") + + # Print summary + logger.info(f"\n{'='*60}") + logger.info("TEST SUMMARY") + logger.info(f"{'='*60}") + logger.info(f"Total tests: {results['total_tests']}") + logger.info(f"Passed: {results['passed']}") + logger.info(f"Failed: {results['failed']}") + logger.info(f"Success rate: {report['summary']['success_rate']}") + + # Print test results with log file locations + logger.info(f"\n{'='*60}") + logger.info("TEST RESULTS") + logger.info(f"{'='*60}") + for result in results["results"]: + test_name = result["config"].get("name", f"Test {result['test_id']}") + status = result.get("status", "UNKNOWN") + log_file = result.get("log_file", "") + + if status == "PASSED": + status_icon = "✅" + elif status == "FAILED": + status_icon = "❌" + elif status == "SKIPPED": + status_icon = "⏭️" + else: + status_icon = "❓" + + if log_file: + logger.info(f"{status_icon} [{result['test_id']}] {test_name}: {log_file}") + else: + logger.info(f"{status_icon} [{result['test_id']}] {test_name}") + + return report + + +def main(): + parser = argparse.ArgumentParser(description="Test Docker builds with different arguments") + parser.add_argument("--dockerfile", default="Dockerfile", help="Path to Dockerfile") + parser.add_argument("--base-dir", default=".", help="Base directory for Docker build context") + parser.add_argument("--config-file", required=True, help="JSON file with test configurations") + parser.add_argument("--output", help="Output file for test report") + parser.add_argument("--log-dir", default="logs", help="Directory to save container logs") + parser.add_argument("--no-cleanup", action="store_true", help="Don't cleanup images after testing") + parser.add_argument("--gitlab-token", help="GitLab token for authentication") + parser.add_argument("--test-case", help="Run only the test case with this name (partial match supported). Supplying this forces full flow (build+test) even if disabled.") + parser.add_argument("--gpus", default="all", help="GPU devices to use for Docker containers (default: 'all'). Examples: 'all', 'device=0', 'device=0,1', '\"device=0,1\"'") + + # Parse arguments with security validation + try: + args = parser.parse_args() + except Exception as e: + logger.error(f"❌ Argument parsing failed: {str(e)}") + sys.exit(1) + + # Comprehensive security validation + validation_errors = [] + + # Validate dockerfile path + if not validate_dockerfile_path(args.dockerfile): + validation_errors.append(f"Invalid Dockerfile path: {args.dockerfile}") + + # Validate base directory + if not validate_safe_path(args.base_dir): + validation_errors.append(f"Invalid base directory path: {args.base_dir}") + + # Validate config file + if not validate_config_file_path(args.config_file): + validation_errors.append(f"Invalid config file path: {args.config_file}") + + # Validate output file if provided + if args.output and not validate_safe_path(args.output): + validation_errors.append(f"Invalid output file path: {args.output}") + + # Validate log directory + if not validate_log_directory(args.log_dir): + validation_errors.append(f"Invalid log directory path: {args.log_dir}") + + # Validate GitLab token if provided + if args.gitlab_token and not validate_gitlab_token(args.gitlab_token): + validation_errors.append("Invalid GitLab token format") + + # Exit if any validation errors + if validation_errors: + logger.error("❌ Security validation failed:") + for error in validation_errors: + logger.error(f" - {error}") + sys.exit(1) + + # Additional file existence checks with security + try: + # Validate config file first (required) + if not os.path.isfile(args.config_file): + logger.error(f"❌ Config file not found: {args.config_file}") + sys.exit(1) + + # Dockerfile and base-dir are optional - they'll be resolved from config file if not found + # Only warn if they're explicitly specified but don't exist + dockerfile_exists = os.path.isfile(args.dockerfile) + base_dir_exists = os.path.isdir(args.base_dir) + + if not dockerfile_exists: + logger.info(f"ℹ️ Dockerfile not found at command-line path: {args.dockerfile}") + logger.info(f"ℹ️ Will use Dockerfile from test config or config directory") + + if not base_dir_exists: + logger.info(f"ℹ️ Base directory not found at command-line path: {args.base_dir}") + logger.info(f"ℹ️ Will use base directory from test config or config directory") + + # Validate log directory path (prevent directory traversal) + log_dir_path = Path(args.log_dir).resolve() + current_dir = Path.cwd().resolve() + try: + log_dir_path.relative_to(current_dir) + except ValueError: + logger.error(f"❌ Log directory path is outside current directory: {args.log_dir}") + sys.exit(1) + + except Exception as e: + logger.error(f"❌ File validation failed: {str(e)}") + sys.exit(1) + + # Initialize tester with validated arguments + try: + tester = DockerBuildTester(args.dockerfile, args.base_dir, args.log_dir) + except Exception as e: + logger.error(f"❌ Failed to initialize DockerBuildTester: {str(e)}") + sys.exit(1) + + # Load test configurations from file with security validation + try: + with open(args.config_file, 'r') as f: + test_configs = json.load(f) + + # Validate JSON structure + if not isinstance(test_configs, list): + logger.error("❌ Config file must contain a list of test configurations") + sys.exit(1) + + # Get the directory containing the config file for resolving relative paths + config_dir = Path(args.config_file).parent.resolve() + logger.info(f"📁 Config file directory: {config_dir}") + + # Validate each test configuration for security + for i, config in enumerate(test_configs): + if not isinstance(config, dict): + logger.error(f"❌ Test configuration {i+1} must be a dictionary") + sys.exit(1) + + # Handle dockerfile specification + # Priority: 1) dockerfile in test_config, 2) Dockerfile in config dir, 3) command-line arg + if "dockerfile" in config: + # User explicitly specified dockerfile in config + dockerfile_path = (config_dir / config["dockerfile"]).resolve() + if not dockerfile_path.exists(): + logger.error(f"❌ Dockerfile specified in test config not found: {dockerfile_path}") + sys.exit(1) + config["_resolved_dockerfile"] = str(dockerfile_path) + logger.info(f"🔗 Using Dockerfile from config: {config['dockerfile']} -> {dockerfile_path}") + else: + # Check for Dockerfile in same directory as config + default_dockerfile = config_dir / "Dockerfile" + if default_dockerfile.exists(): + config["_resolved_dockerfile"] = str(default_dockerfile) + logger.info(f"🔗 Using default Dockerfile from config directory: {default_dockerfile}") + else: + # Fall back to command-line specified dockerfile + config["_resolved_dockerfile"] = args.dockerfile + logger.info(f"🔗 Using Dockerfile from command-line: {args.dockerfile}") + + # Base directory is ALWAYS the directory containing the test config JSON + # This makes test configs self-contained and portable + config["_resolved_base_dir"] = str(config_dir) + config["_config_dir"] = str(config_dir) # Store for model downloads + logger.info(f"🔗 Using base_dir (config directory): {config_dir}") + + # Validate build_args if present + if "build_args" in config: + if not isinstance(config["build_args"], dict): + logger.error(f"❌ build_args in test configuration {i+1} must be a dictionary") + sys.exit(1) + + # Resolve paths relative to config file directory + path_args = ["APP_YAML_PATH", "OUTPUT_DIR", "PROCESSORS_PATH", "OPENAPI_SPEC"] + for path_arg in path_args: + if path_arg in config["build_args"]: + original_path = config["build_args"][path_arg] + # Resolve relative to config file directory + resolved_path = (config_dir / original_path).resolve() + # Convert back to relative path from current working directory + try: + rel_path = resolved_path.relative_to(Path.cwd().resolve()) + config["build_args"][path_arg] = str(rel_path) + logger.info(f"🔗 Resolved {path_arg}: {original_path} -> {rel_path}") + except ValueError: + # If can't make relative, use absolute path + config["build_args"][path_arg] = str(resolved_path) + logger.info(f"🔗 Resolved {path_arg}: {original_path} -> {resolved_path}") + + for key, value in config["build_args"].items(): + if not validate_build_arg_name(key): + logger.error(f"❌ Invalid build arg name in test configuration {i+1}: {key}") + sys.exit(1) + if not isinstance(value, str) or not validate_build_arg_value(value): + logger.error(f"❌ Invalid build arg value in test configuration {i+1}: {value}") + sys.exit(1) + + # Validate test_config if present + if "test_config" in config: + test_config = config["test_config"] + config_valid, config_error = validate_test_config(test_config) + if not config_valid: + logger.error(f"❌ Test configuration {i+1} validation failed: {config_error}") + sys.exit(1) + + # Filter test configurations by test case name if specified + if args.test_case: + original_count = len(test_configs) + if args.test_case == "*": + logger.info("--test-case '*' specified: selecting all tests (including disabled).") + else: + test_configs = [ + config for config in test_configs + if args.test_case.lower() in config.get("name", "").lower() + ] + + if not test_configs: + logger.error(f"❌ No test cases found matching '{args.test_case}'") + logger.info("Available test cases:") + # Reload original configs to show available names + with open(args.config_file, 'r') as f: + original_configs = json.load(f) + for i, config in enumerate(original_configs, 1): + logger.info(f" {i}. {config.get('name', f'Unnamed test {i}')}") + sys.exit(1) + + logger.info(f"Filtered {original_count} test configurations to {len(test_configs)} matching '{args.test_case}'") + for i, config in enumerate(test_configs, 1): + logger.info(f" {i}. {config.get('name', f'Test {i}')}") + else: + # Include disabled tests; they will run codegen-only path unless -c/--test-case forces full flow. + logger.info("Including disabled tests (default_enable=false). They will run codegen-only unless --test-case is provided.") + + except json.JSONDecodeError as e: + logger.error(f"❌ Invalid JSON in config file: {str(e)}") + sys.exit(1) + except Exception as e: + logger.error(f"❌ Failed to load config file: {str(e)}") + sys.exit(1) + + # Run tests with error handling + try: + logger.info(f"Starting test suite with {len(test_configs)} configurations") + logger.info(f"Logs will be saved to: {args.log_dir}") + logger.info(f"Using GPU devices: {args.gpus}") + # Force full flow if --test-case provided (including "*") + force_full_flow = args.test_case is not None and len(args.test_case) > 0 + logger.info(f"🔍 Test suite settings: test_case={args.test_case}, force_full_flow={force_full_flow}") + results = tester.run_test_suite(test_configs, cleanup=not args.no_cleanup, gitlab_token=args.gitlab_token, force_full_flow=force_full_flow, gpus=args.gpus) + except Exception as e: + logger.error(f"❌ Test suite execution failed: {str(e)}") + sys.exit(1) + + # Generate report with error handling + try: + tester.generate_report(results, args.output) + except Exception as e: + logger.error(f"❌ Report generation failed: {str(e)}") + sys.exit(1) + + # Exit with appropriate code + if results["failed"] > 0: + sys.exit(1) + else: + sys.exit(0) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/inference_builder/builder/triton/__init__.py b/tools/inference_builder/builder/triton/__init__.py new file mode 100644 index 00000000..3159bfe6 --- /dev/null +++ b/tools/inference_builder/builder/triton/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tools/inference_builder/builder/triton/model_config_pb2.py b/tools/inference_builder/builder/triton/model_config_pb2.py new file mode 100644 index 00000000..fb8e904e --- /dev/null +++ b/tools/inference_builder/builder/triton/model_config_pb2.py @@ -0,0 +1,195 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: model_config.proto +# Protobuf Python Version: 5.27.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 3, + '', + 'model_config.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12model_config.proto\x12\tinference\"\x96\x01\n\x10ModelRateLimiter\x12\x37\n\tresources\x18\x01 \x03(\x0b\x32$.inference.ModelRateLimiter.Resource\x12\x10\n\x08priority\x18\x02 \x01(\r\x1a\x37\n\x08Resource\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06global\x18\x02 \x01(\x08\x12\r\n\x05\x63ount\x18\x03 \x01(\r\"\x87\x04\n\x12ModelInstanceGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x30\n\x04kind\x18\x04 \x01(\x0e\x32\".inference.ModelInstanceGroup.Kind\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\x12\x31\n\x0crate_limiter\x18\x06 \x01(\x0b\x32\x1b.inference.ModelRateLimiter\x12\x0c\n\x04gpus\x18\x03 \x03(\x05\x12H\n\x11secondary_devices\x18\x08 \x03(\x0b\x32-.inference.ModelInstanceGroup.SecondaryDevice\x12\x0f\n\x07profile\x18\x05 \x03(\t\x12\x0f\n\x07passive\x18\x07 \x01(\x08\x12\x13\n\x0bhost_policy\x18\t \x01(\t\x1a\x9c\x01\n\x0fSecondaryDevice\x12O\n\x04kind\x18\x01 \x01(\x0e\x32\x41.inference.ModelInstanceGroup.SecondaryDevice.SecondaryDeviceKind\x12\x11\n\tdevice_id\x18\x02 \x01(\x03\"%\n\x13SecondaryDeviceKind\x12\x0e\n\nKIND_NVDLA\x10\x00\"A\n\x04Kind\x12\r\n\tKIND_AUTO\x10\x00\x12\x0c\n\x08KIND_GPU\x10\x01\x12\x0c\n\x08KIND_CPU\x10\x02\x12\x0e\n\nKIND_MODEL\x10\x03\"#\n\x12ModelTensorReshape\x12\r\n\x05shape\x18\x01 \x03(\x03\"\xd3\x02\n\nModelInput\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\tdata_type\x18\x02 \x01(\x0e\x32\x13.inference.DataType\x12,\n\x06\x66ormat\x18\x03 \x01(\x0e\x32\x1c.inference.ModelInput.Format\x12\x0c\n\x04\x64ims\x18\x04 \x03(\x03\x12.\n\x07reshape\x18\x05 \x01(\x0b\x32\x1d.inference.ModelTensorReshape\x12\x17\n\x0fis_shape_tensor\x18\x06 \x01(\x08\x12\x1a\n\x12\x61llow_ragged_batch\x18\x07 \x01(\x08\x12\x10\n\x08optional\x18\x08 \x01(\x08\x12\x1f\n\x17is_non_linear_format_io\x18\t \x01(\x08\";\n\x06\x46ormat\x12\x0f\n\x0b\x46ORMAT_NONE\x10\x00\x12\x0f\n\x0b\x46ORMAT_NHWC\x10\x01\x12\x0f\n\x0b\x46ORMAT_NCHW\x10\x02\"\xd3\x01\n\x0bModelOutput\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\tdata_type\x18\x02 \x01(\x0e\x32\x13.inference.DataType\x12\x0c\n\x04\x64ims\x18\x03 \x03(\x03\x12.\n\x07reshape\x18\x05 \x01(\x0b\x32\x1d.inference.ModelTensorReshape\x12\x16\n\x0elabel_filename\x18\x04 \x01(\t\x12\x17\n\x0fis_shape_tensor\x18\x06 \x01(\x08\x12\x1f\n\x17is_non_linear_format_io\x18\x07 \x01(\x08\"\xd9\x02\n\nBatchInput\x12(\n\x04kind\x18\x01 \x01(\x0e\x32\x1a.inference.BatchInput.Kind\x12\x13\n\x0btarget_name\x18\x02 \x03(\t\x12&\n\tdata_type\x18\x03 \x01(\x0e\x32\x13.inference.DataType\x12\x14\n\x0csource_input\x18\x04 \x03(\t\"\xcd\x01\n\x04Kind\x12\x17\n\x13\x42\x41TCH_ELEMENT_COUNT\x10\x00\x12#\n\x1f\x42\x41TCH_ACCUMULATED_ELEMENT_COUNT\x10\x01\x12-\n)BATCH_ACCUMULATED_ELEMENT_COUNT_WITH_ZERO\x10\x02\x12$\n BATCH_MAX_ELEMENT_COUNT_AS_SHAPE\x10\x03\x12\x14\n\x10\x42\x41TCH_ITEM_SHAPE\x10\x04\x12\x1c\n\x18\x42\x41TCH_ITEM_SHAPE_FLATTEN\x10\x05\"\x8f\x01\n\x0b\x42\x61tchOutput\x12\x13\n\x0btarget_name\x18\x01 \x03(\t\x12)\n\x04kind\x18\x02 \x01(\x0e\x32\x1b.inference.BatchOutput.Kind\x12\x14\n\x0csource_input\x18\x03 \x03(\t\"*\n\x04Kind\x12\"\n\x1e\x42\x41TCH_SCATTER_WITH_INPUT_SHAPE\x10\x00\"\x90\x02\n\x12ModelVersionPolicy\x12\x36\n\x06latest\x18\x01 \x01(\x0b\x32$.inference.ModelVersionPolicy.LatestH\x00\x12\x30\n\x03\x61ll\x18\x02 \x01(\x0b\x32!.inference.ModelVersionPolicy.AllH\x00\x12:\n\x08specific\x18\x03 \x01(\x0b\x32&.inference.ModelVersionPolicy.SpecificH\x00\x1a\x1e\n\x06Latest\x12\x14\n\x0cnum_versions\x18\x01 \x01(\r\x1a\x05\n\x03\x41ll\x1a\x1c\n\x08Specific\x12\x10\n\x08versions\x18\x01 \x03(\x03\x42\x0f\n\rpolicy_choice\"\xfd\r\n\x17ModelOptimizationPolicy\x12\x37\n\x05graph\x18\x01 \x01(\x0b\x32(.inference.ModelOptimizationPolicy.Graph\x12\x42\n\x08priority\x18\x02 \x01(\x0e\x32\x30.inference.ModelOptimizationPolicy.ModelPriority\x12\x35\n\x04\x63uda\x18\x03 \x01(\x0b\x32\'.inference.ModelOptimizationPolicy.Cuda\x12X\n\x16\x65xecution_accelerators\x18\x04 \x01(\x0b\x32\x38.inference.ModelOptimizationPolicy.ExecutionAccelerators\x12R\n\x13input_pinned_memory\x18\x05 \x01(\x0b\x32\x35.inference.ModelOptimizationPolicy.PinnedMemoryBuffer\x12S\n\x14output_pinned_memory\x18\x06 \x01(\x0b\x32\x35.inference.ModelOptimizationPolicy.PinnedMemoryBuffer\x12&\n\x1egather_kernel_buffer_threshold\x18\x07 \x01(\r\x12\x16\n\x0e\x65\x61ger_batching\x18\x08 \x01(\x08\x1a\x16\n\x05Graph\x12\r\n\x05level\x18\x01 \x01(\x05\x1a\xba\x05\n\x04\x43uda\x12\x0e\n\x06graphs\x18\x01 \x01(\x08\x12\x18\n\x10\x62usy_wait_events\x18\x02 \x01(\x08\x12\x45\n\ngraph_spec\x18\x03 \x03(\x0b\x32\x31.inference.ModelOptimizationPolicy.Cuda.GraphSpec\x12\x1a\n\x12output_copy_stream\x18\x04 \x01(\x08\x1a\xa4\x04\n\tGraphSpec\x12\x12\n\nbatch_size\x18\x01 \x01(\x05\x12K\n\x05input\x18\x02 \x03(\x0b\x32<.inference.ModelOptimizationPolicy.Cuda.GraphSpec.InputEntry\x12W\n\x11graph_lower_bound\x18\x03 \x01(\x0b\x32<.inference.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound\x1a\x14\n\x05Shape\x12\x0b\n\x03\x64im\x18\x01 \x03(\x03\x1a\xdf\x01\n\nLowerBound\x12\x12\n\nbatch_size\x18\x01 \x01(\x05\x12V\n\x05input\x18\x02 \x03(\x0b\x32G.inference.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound.InputEntry\x1a\x65\n\nInputEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.inference.ModelOptimizationPolicy.Cuda.GraphSpec.Shape:\x02\x38\x01\x1a\x65\n\nInputEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.inference.ModelOptimizationPolicy.Cuda.GraphSpec.Shape:\x02\x38\x01\x1a\xa4\x03\n\x15\x45xecutionAccelerators\x12g\n\x19gpu_execution_accelerator\x18\x01 \x03(\x0b\x32\x44.inference.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator\x12g\n\x19\x63pu_execution_accelerator\x18\x02 \x03(\x0b\x32\x44.inference.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator\x1a\xb8\x01\n\x0b\x41\x63\x63\x65lerator\x12\x0c\n\x04name\x18\x01 \x01(\t\x12h\n\nparameters\x18\x02 \x03(\x0b\x32T.inference.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator.ParametersEntry\x1a\x31\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a$\n\x12PinnedMemoryBuffer\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"I\n\rModelPriority\x12\x14\n\x10PRIORITY_DEFAULT\x10\x00\x12\x10\n\x0cPRIORITY_MAX\x10\x01\x12\x10\n\x0cPRIORITY_MIN\x10\x02\"\xdb\x01\n\x10ModelQueuePolicy\x12\x41\n\x0etimeout_action\x18\x01 \x01(\x0e\x32).inference.ModelQueuePolicy.TimeoutAction\x12$\n\x1c\x64\x65\x66\x61ult_timeout_microseconds\x18\x02 \x01(\x04\x12\x1e\n\x16\x61llow_timeout_override\x18\x03 \x01(\x08\x12\x16\n\x0emax_queue_size\x18\x04 \x01(\r\"&\n\rTimeoutAction\x12\n\n\x06REJECT\x10\x00\x12\t\n\x05\x44\x45LAY\x10\x01\"\x9b\x03\n\x14ModelDynamicBatching\x12\x1c\n\x14preferred_batch_size\x18\x01 \x03(\x05\x12$\n\x1cmax_queue_delay_microseconds\x18\x02 \x01(\x04\x12\x19\n\x11preserve_ordering\x18\x03 \x01(\x08\x12\x17\n\x0fpriority_levels\x18\x04 \x01(\x04\x12\x1e\n\x16\x64\x65\x66\x61ult_priority_level\x18\x05 \x01(\x04\x12\x39\n\x14\x64\x65\x66\x61ult_queue_policy\x18\x06 \x01(\x0b\x32\x1b.inference.ModelQueuePolicy\x12W\n\x15priority_queue_policy\x18\x07 \x03(\x0b\x32\x38.inference.ModelDynamicBatching.PriorityQueuePolicyEntry\x1aW\n\x18PriorityQueuePolicyEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.inference.ModelQueuePolicy:\x02\x38\x01\"\xee\n\n\x15ModelSequenceBatching\x12\x41\n\x06\x64irect\x18\x03 \x01(\x0b\x32/.inference.ModelSequenceBatching.StrategyDirectH\x00\x12\x41\n\x06oldest\x18\x04 \x01(\x0b\x32/.inference.ModelSequenceBatching.StrategyOldestH\x00\x12&\n\x1emax_sequence_idle_microseconds\x18\x01 \x01(\x04\x12\x44\n\rcontrol_input\x18\x02 \x03(\x0b\x32-.inference.ModelSequenceBatching.ControlInput\x12\x35\n\x05state\x18\x05 \x03(\x0b\x32&.inference.ModelSequenceBatching.State\x12\x1a\n\x12iterative_sequence\x18\x06 \x01(\x08\x1a\xb1\x02\n\x07\x43ontrol\x12;\n\x04kind\x18\x01 \x01(\x0e\x32-.inference.ModelSequenceBatching.Control.Kind\x12\x18\n\x10int32_false_true\x18\x02 \x03(\x05\x12\x17\n\x0f\x66p32_false_true\x18\x03 \x03(\x02\x12\x17\n\x0f\x62ool_false_true\x18\x05 \x03(\x08\x12&\n\tdata_type\x18\x04 \x01(\x0e\x32\x13.inference.DataType\"u\n\x04Kind\x12\x1a\n\x16\x43ONTROL_SEQUENCE_START\x10\x00\x12\x1a\n\x16\x43ONTROL_SEQUENCE_READY\x10\x01\x12\x18\n\x14\x43ONTROL_SEQUENCE_END\x10\x02\x12\x1b\n\x17\x43ONTROL_SEQUENCE_CORRID\x10\x03\x1aW\n\x0c\x43ontrolInput\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x39\n\x07\x63ontrol\x18\x02 \x03(\x0b\x32(.inference.ModelSequenceBatching.Control\x1a\x8a\x01\n\x0cInitialState\x12&\n\tdata_type\x18\x01 \x01(\x0e\x32\x13.inference.DataType\x12\x0c\n\x04\x64ims\x18\x02 \x03(\x03\x12\x13\n\tzero_data\x18\x03 \x01(\x08H\x00\x12\x13\n\tdata_file\x18\x04 \x01(\tH\x00\x12\x0c\n\x04name\x18\x05 \x01(\tB\x0c\n\nstate_data\x1a\xf3\x01\n\x05State\x12\x12\n\ninput_name\x18\x01 \x01(\t\x12\x13\n\x0boutput_name\x18\x02 \x01(\t\x12&\n\tdata_type\x18\x03 \x01(\x0e\x32\x13.inference.DataType\x12\x0c\n\x04\x64ims\x18\x04 \x03(\x03\x12\x44\n\rinitial_state\x18\x05 \x03(\x0b\x32-.inference.ModelSequenceBatching.InitialState\x12(\n use_same_buffer_for_input_output\x18\x06 \x01(\x08\x12\x1b\n\x13use_growable_memory\x18\x07 \x01(\x08\x1aX\n\x0eStrategyDirect\x12$\n\x1cmax_queue_delay_microseconds\x18\x01 \x01(\x04\x12 \n\x18minimum_slot_utilization\x18\x02 \x01(\x02\x1a\x90\x01\n\x0eStrategyOldest\x12\x1f\n\x17max_candidate_sequences\x18\x01 \x01(\x05\x12\x1c\n\x14preferred_batch_size\x18\x02 \x03(\x05\x12$\n\x1cmax_queue_delay_microseconds\x18\x03 \x01(\x04\x12\x19\n\x11preserve_ordering\x18\x04 \x01(\x08\x42\x11\n\x0fstrategy_choice\"\xf6\x02\n\x0fModelEnsembling\x12-\n\x04step\x18\x01 \x03(\x0b\x32\x1f.inference.ModelEnsembling.Step\x1a\xb3\x02\n\x04Step\x12\x12\n\nmodel_name\x18\x01 \x01(\t\x12\x15\n\rmodel_version\x18\x02 \x01(\x03\x12@\n\tinput_map\x18\x03 \x03(\x0b\x32-.inference.ModelEnsembling.Step.InputMapEntry\x12\x42\n\noutput_map\x18\x04 \x03(\x0b\x32..inference.ModelEnsembling.Step.OutputMapEntry\x12\x17\n\x0fmodel_namespace\x18\x05 \x01(\t\x1a/\n\rInputMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x30\n\x0eOutputMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"&\n\x0eModelParameter\x12\x14\n\x0cstring_value\x18\x01 \x01(\t\"\xd9\x02\n\x0bModelWarmup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nbatch_size\x18\x02 \x01(\r\x12\x32\n\x06inputs\x18\x03 \x03(\x0b\x32\".inference.ModelWarmup.InputsEntry\x12\r\n\x05\x63ount\x18\x04 \x01(\r\x1a\x97\x01\n\x05Input\x12&\n\tdata_type\x18\x01 \x01(\x0e\x32\x13.inference.DataType\x12\x0c\n\x04\x64ims\x18\x02 \x03(\x03\x12\x13\n\tzero_data\x18\x03 \x01(\x08H\x00\x12\x15\n\x0brandom_data\x18\x04 \x01(\x08H\x00\x12\x19\n\x0finput_data_file\x18\x05 \x01(\tH\x00\x42\x11\n\x0finput_data_type\x1aK\n\x0bInputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.inference.ModelWarmup.Input:\x02\x38\x01\".\n\x0fModelOperations\x12\x1b\n\x13op_library_filename\x18\x01 \x03(\t\"+\n\x16ModelTransactionPolicy\x12\x11\n\tdecoupled\x18\x01 \x01(\x08\"\xe6\x01\n\x15ModelRepositoryAgents\x12\x36\n\x06\x61gents\x18\x01 \x03(\x0b\x32&.inference.ModelRepositoryAgents.Agent\x1a\x94\x01\n\x05\x41gent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12J\n\nparameters\x18\x02 \x03(\x0b\x32\x36.inference.ModelRepositoryAgents.Agent.ParametersEntry\x1a\x31\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"$\n\x12ModelResponseCache\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"\xc3\n\n\x0bModelConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08platform\x18\x02 \x01(\t\x12\x0f\n\x07\x62\x61\x63kend\x18\x11 \x01(\t\x12\x0f\n\x07runtime\x18\x19 \x01(\t\x12\x35\n\x0eversion_policy\x18\x03 \x01(\x0b\x32\x1d.inference.ModelVersionPolicy\x12\x16\n\x0emax_batch_size\x18\x04 \x01(\x05\x12$\n\x05input\x18\x05 \x03(\x0b\x32\x15.inference.ModelInput\x12&\n\x06output\x18\x06 \x03(\x0b\x32\x16.inference.ModelOutput\x12*\n\x0b\x62\x61tch_input\x18\x14 \x03(\x0b\x32\x15.inference.BatchInput\x12,\n\x0c\x62\x61tch_output\x18\x15 \x03(\x0b\x32\x16.inference.BatchOutput\x12\x38\n\x0coptimization\x18\x0c \x01(\x0b\x32\".inference.ModelOptimizationPolicy\x12;\n\x10\x64ynamic_batching\x18\x0b \x01(\x0b\x32\x1f.inference.ModelDynamicBatchingH\x00\x12=\n\x11sequence_batching\x18\r \x01(\x0b\x32 .inference.ModelSequenceBatchingH\x00\x12\x39\n\x13\x65nsemble_scheduling\x18\x0f \x01(\x0b\x32\x1a.inference.ModelEnsemblingH\x00\x12\x35\n\x0einstance_group\x18\x07 \x03(\x0b\x32\x1d.inference.ModelInstanceGroup\x12\x1e\n\x16\x64\x65\x66\x61ult_model_filename\x18\x08 \x01(\t\x12H\n\x12\x63\x63_model_filenames\x18\t \x03(\x0b\x32,.inference.ModelConfig.CcModelFilenamesEntry\x12;\n\x0bmetric_tags\x18\n \x03(\x0b\x32&.inference.ModelConfig.MetricTagsEntry\x12:\n\nparameters\x18\x0e \x03(\x0b\x32&.inference.ModelConfig.ParametersEntry\x12,\n\x0cmodel_warmup\x18\x10 \x03(\x0b\x32\x16.inference.ModelWarmup\x12\x34\n\x10model_operations\x18\x12 \x01(\x0b\x32\x1a.inference.ModelOperations\x12\x43\n\x18model_transaction_policy\x18\x13 \x01(\x0b\x32!.inference.ModelTransactionPolicy\x12\x41\n\x17model_repository_agents\x18\x17 \x01(\x0b\x32 .inference.ModelRepositoryAgents\x12\x35\n\x0eresponse_cache\x18\x18 \x01(\x0b\x32\x1d.inference.ModelResponseCache\x1a\x37\n\x15\x43\x63ModelFilenamesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x31\n\x0fMetricTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aL\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.inference.ModelParameter:\x02\x38\x01\x42\x13\n\x11scheduling_choice*\xfa\x01\n\x08\x44\x61taType\x12\x10\n\x0cTYPE_INVALID\x10\x00\x12\r\n\tTYPE_BOOL\x10\x01\x12\x0e\n\nTYPE_UINT8\x10\x02\x12\x0f\n\x0bTYPE_UINT16\x10\x03\x12\x0f\n\x0bTYPE_UINT32\x10\x04\x12\x0f\n\x0bTYPE_UINT64\x10\x05\x12\r\n\tTYPE_INT8\x10\x06\x12\x0e\n\nTYPE_INT16\x10\x07\x12\x0e\n\nTYPE_INT32\x10\x08\x12\x0e\n\nTYPE_INT64\x10\t\x12\r\n\tTYPE_FP16\x10\n\x12\r\n\tTYPE_FP32\x10\x0b\x12\r\n\tTYPE_FP64\x10\x0c\x12\x0f\n\x0bTYPE_STRING\x10\r\x12\r\n\tTYPE_BF16\x10\x0e\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'model_config_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND_INPUTENTRY']._loaded_options = None + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND_INPUTENTRY']._serialized_options = b'8\001' + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_INPUTENTRY']._loaded_options = None + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_INPUTENTRY']._serialized_options = b'8\001' + _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR_PARAMETERSENTRY']._loaded_options = None + _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR_PARAMETERSENTRY']._serialized_options = b'8\001' + _globals['_MODELDYNAMICBATCHING_PRIORITYQUEUEPOLICYENTRY']._loaded_options = None + _globals['_MODELDYNAMICBATCHING_PRIORITYQUEUEPOLICYENTRY']._serialized_options = b'8\001' + _globals['_MODELENSEMBLING_STEP_INPUTMAPENTRY']._loaded_options = None + _globals['_MODELENSEMBLING_STEP_INPUTMAPENTRY']._serialized_options = b'8\001' + _globals['_MODELENSEMBLING_STEP_OUTPUTMAPENTRY']._loaded_options = None + _globals['_MODELENSEMBLING_STEP_OUTPUTMAPENTRY']._serialized_options = b'8\001' + _globals['_MODELWARMUP_INPUTSENTRY']._loaded_options = None + _globals['_MODELWARMUP_INPUTSENTRY']._serialized_options = b'8\001' + _globals['_MODELREPOSITORYAGENTS_AGENT_PARAMETERSENTRY']._loaded_options = None + _globals['_MODELREPOSITORYAGENTS_AGENT_PARAMETERSENTRY']._serialized_options = b'8\001' + _globals['_MODELCONFIG_CCMODELFILENAMESENTRY']._loaded_options = None + _globals['_MODELCONFIG_CCMODELFILENAMESENTRY']._serialized_options = b'8\001' + _globals['_MODELCONFIG_METRICTAGSENTRY']._loaded_options = None + _globals['_MODELCONFIG_METRICTAGSENTRY']._serialized_options = b'8\001' + _globals['_MODELCONFIG_PARAMETERSENTRY']._loaded_options = None + _globals['_MODELCONFIG_PARAMETERSENTRY']._serialized_options = b'8\001' + _globals['_DATATYPE']._serialized_start=8371 + _globals['_DATATYPE']._serialized_end=8621 + _globals['_MODELRATELIMITER']._serialized_start=34 + _globals['_MODELRATELIMITER']._serialized_end=184 + _globals['_MODELRATELIMITER_RESOURCE']._serialized_start=129 + _globals['_MODELRATELIMITER_RESOURCE']._serialized_end=184 + _globals['_MODELINSTANCEGROUP']._serialized_start=187 + _globals['_MODELINSTANCEGROUP']._serialized_end=706 + _globals['_MODELINSTANCEGROUP_SECONDARYDEVICE']._serialized_start=483 + _globals['_MODELINSTANCEGROUP_SECONDARYDEVICE']._serialized_end=639 + _globals['_MODELINSTANCEGROUP_SECONDARYDEVICE_SECONDARYDEVICEKIND']._serialized_start=602 + _globals['_MODELINSTANCEGROUP_SECONDARYDEVICE_SECONDARYDEVICEKIND']._serialized_end=639 + _globals['_MODELINSTANCEGROUP_KIND']._serialized_start=641 + _globals['_MODELINSTANCEGROUP_KIND']._serialized_end=706 + _globals['_MODELTENSORRESHAPE']._serialized_start=708 + _globals['_MODELTENSORRESHAPE']._serialized_end=743 + _globals['_MODELINPUT']._serialized_start=746 + _globals['_MODELINPUT']._serialized_end=1085 + _globals['_MODELINPUT_FORMAT']._serialized_start=1026 + _globals['_MODELINPUT_FORMAT']._serialized_end=1085 + _globals['_MODELOUTPUT']._serialized_start=1088 + _globals['_MODELOUTPUT']._serialized_end=1299 + _globals['_BATCHINPUT']._serialized_start=1302 + _globals['_BATCHINPUT']._serialized_end=1647 + _globals['_BATCHINPUT_KIND']._serialized_start=1442 + _globals['_BATCHINPUT_KIND']._serialized_end=1647 + _globals['_BATCHOUTPUT']._serialized_start=1650 + _globals['_BATCHOUTPUT']._serialized_end=1793 + _globals['_BATCHOUTPUT_KIND']._serialized_start=1751 + _globals['_BATCHOUTPUT_KIND']._serialized_end=1793 + _globals['_MODELVERSIONPOLICY']._serialized_start=1796 + _globals['_MODELVERSIONPOLICY']._serialized_end=2068 + _globals['_MODELVERSIONPOLICY_LATEST']._serialized_start=1984 + _globals['_MODELVERSIONPOLICY_LATEST']._serialized_end=2014 + _globals['_MODELVERSIONPOLICY_ALL']._serialized_start=2016 + _globals['_MODELVERSIONPOLICY_ALL']._serialized_end=2021 + _globals['_MODELVERSIONPOLICY_SPECIFIC']._serialized_start=2023 + _globals['_MODELVERSIONPOLICY_SPECIFIC']._serialized_end=2051 + _globals['_MODELOPTIMIZATIONPOLICY']._serialized_start=2071 + _globals['_MODELOPTIMIZATIONPOLICY']._serialized_end=3860 + _globals['_MODELOPTIMIZATIONPOLICY_GRAPH']._serialized_start=2601 + _globals['_MODELOPTIMIZATIONPOLICY_GRAPH']._serialized_end=2623 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA']._serialized_start=2626 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA']._serialized_end=3324 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC']._serialized_start=2776 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC']._serialized_end=3324 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_SHAPE']._serialized_start=2975 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_SHAPE']._serialized_end=2995 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND']._serialized_start=2998 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND']._serialized_end=3221 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND_INPUTENTRY']._serialized_start=3120 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND_INPUTENTRY']._serialized_end=3221 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_INPUTENTRY']._serialized_start=3120 + _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_INPUTENTRY']._serialized_end=3221 + _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS']._serialized_start=3327 + _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS']._serialized_end=3747 + _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR']._serialized_start=3563 + _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR']._serialized_end=3747 + _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR_PARAMETERSENTRY']._serialized_start=3698 + _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR_PARAMETERSENTRY']._serialized_end=3747 + _globals['_MODELOPTIMIZATIONPOLICY_PINNEDMEMORYBUFFER']._serialized_start=3749 + _globals['_MODELOPTIMIZATIONPOLICY_PINNEDMEMORYBUFFER']._serialized_end=3785 + _globals['_MODELOPTIMIZATIONPOLICY_MODELPRIORITY']._serialized_start=3787 + _globals['_MODELOPTIMIZATIONPOLICY_MODELPRIORITY']._serialized_end=3860 + _globals['_MODELQUEUEPOLICY']._serialized_start=3863 + _globals['_MODELQUEUEPOLICY']._serialized_end=4082 + _globals['_MODELQUEUEPOLICY_TIMEOUTACTION']._serialized_start=4044 + _globals['_MODELQUEUEPOLICY_TIMEOUTACTION']._serialized_end=4082 + _globals['_MODELDYNAMICBATCHING']._serialized_start=4085 + _globals['_MODELDYNAMICBATCHING']._serialized_end=4496 + _globals['_MODELDYNAMICBATCHING_PRIORITYQUEUEPOLICYENTRY']._serialized_start=4409 + _globals['_MODELDYNAMICBATCHING_PRIORITYQUEUEPOLICYENTRY']._serialized_end=4496 + _globals['_MODELSEQUENCEBATCHING']._serialized_start=4499 + _globals['_MODELSEQUENCEBATCHING']._serialized_end=5889 + _globals['_MODELSEQUENCEBATCHING_CONTROL']._serialized_start=4852 + _globals['_MODELSEQUENCEBATCHING_CONTROL']._serialized_end=5157 + _globals['_MODELSEQUENCEBATCHING_CONTROL_KIND']._serialized_start=5040 + _globals['_MODELSEQUENCEBATCHING_CONTROL_KIND']._serialized_end=5157 + _globals['_MODELSEQUENCEBATCHING_CONTROLINPUT']._serialized_start=5159 + _globals['_MODELSEQUENCEBATCHING_CONTROLINPUT']._serialized_end=5246 + _globals['_MODELSEQUENCEBATCHING_INITIALSTATE']._serialized_start=5249 + _globals['_MODELSEQUENCEBATCHING_INITIALSTATE']._serialized_end=5387 + _globals['_MODELSEQUENCEBATCHING_STATE']._serialized_start=5390 + _globals['_MODELSEQUENCEBATCHING_STATE']._serialized_end=5633 + _globals['_MODELSEQUENCEBATCHING_STRATEGYDIRECT']._serialized_start=5635 + _globals['_MODELSEQUENCEBATCHING_STRATEGYDIRECT']._serialized_end=5723 + _globals['_MODELSEQUENCEBATCHING_STRATEGYOLDEST']._serialized_start=5726 + _globals['_MODELSEQUENCEBATCHING_STRATEGYOLDEST']._serialized_end=5870 + _globals['_MODELENSEMBLING']._serialized_start=5892 + _globals['_MODELENSEMBLING']._serialized_end=6266 + _globals['_MODELENSEMBLING_STEP']._serialized_start=5959 + _globals['_MODELENSEMBLING_STEP']._serialized_end=6266 + _globals['_MODELENSEMBLING_STEP_INPUTMAPENTRY']._serialized_start=6169 + _globals['_MODELENSEMBLING_STEP_INPUTMAPENTRY']._serialized_end=6216 + _globals['_MODELENSEMBLING_STEP_OUTPUTMAPENTRY']._serialized_start=6218 + _globals['_MODELENSEMBLING_STEP_OUTPUTMAPENTRY']._serialized_end=6266 + _globals['_MODELPARAMETER']._serialized_start=6268 + _globals['_MODELPARAMETER']._serialized_end=6306 + _globals['_MODELWARMUP']._serialized_start=6309 + _globals['_MODELWARMUP']._serialized_end=6654 + _globals['_MODELWARMUP_INPUT']._serialized_start=6426 + _globals['_MODELWARMUP_INPUT']._serialized_end=6577 + _globals['_MODELWARMUP_INPUTSENTRY']._serialized_start=6579 + _globals['_MODELWARMUP_INPUTSENTRY']._serialized_end=6654 + _globals['_MODELOPERATIONS']._serialized_start=6656 + _globals['_MODELOPERATIONS']._serialized_end=6702 + _globals['_MODELTRANSACTIONPOLICY']._serialized_start=6704 + _globals['_MODELTRANSACTIONPOLICY']._serialized_end=6747 + _globals['_MODELREPOSITORYAGENTS']._serialized_start=6750 + _globals['_MODELREPOSITORYAGENTS']._serialized_end=6980 + _globals['_MODELREPOSITORYAGENTS_AGENT']._serialized_start=6832 + _globals['_MODELREPOSITORYAGENTS_AGENT']._serialized_end=6980 + _globals['_MODELREPOSITORYAGENTS_AGENT_PARAMETERSENTRY']._serialized_start=3698 + _globals['_MODELREPOSITORYAGENTS_AGENT_PARAMETERSENTRY']._serialized_end=3747 + _globals['_MODELRESPONSECACHE']._serialized_start=6982 + _globals['_MODELRESPONSECACHE']._serialized_end=7018 + _globals['_MODELCONFIG']._serialized_start=7021 + _globals['_MODELCONFIG']._serialized_end=8368 + _globals['_MODELCONFIG_CCMODELFILENAMESENTRY']._serialized_start=8163 + _globals['_MODELCONFIG_CCMODELFILENAMESENTRY']._serialized_end=8218 + _globals['_MODELCONFIG_METRICTAGSENTRY']._serialized_start=8220 + _globals['_MODELCONFIG_METRICTAGSENTRY']._serialized_end=8269 + _globals['_MODELCONFIG_PARAMETERSENTRY']._serialized_start=8271 + _globals['_MODELCONFIG_PARAMETERSENTRY']._serialized_end=8347 +# @@protoc_insertion_point(module_scope) diff --git a/tools/inference_builder/builder/triton/utils.py b/tools/inference_builder/builder/triton/utils.py new file mode 100644 index 00000000..27aa8e1b --- /dev/null +++ b/tools/inference_builder/builder/triton/utils.py @@ -0,0 +1,80 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .model_config_pb2 import DataType, ModelConfig, ModelParameter, ModelTensorReshape +from google.protobuf import text_format +from typing import Dict + +datatype_mapping = { + "TYPE_INVALID": DataType.TYPE_INVALID, + "TYPE_BOOL": DataType.TYPE_BOOL, + "TYPE_UINT8": DataType.TYPE_UINT8, + "TYPE_UINT16": DataType.TYPE_UINT16, + "TYPE_UINT32": DataType.TYPE_UINT32, + "TYPE_UINT64": DataType.TYPE_UINT64, + "TYPE_INT8": DataType.TYPE_INT8, + "TYPE_INT16": DataType.TYPE_INT16, + "TYPE_INT32": DataType.TYPE_INT32, + "TYPE_INT64": DataType.TYPE_INT64, + "TYPE_FP16": DataType.TYPE_FP16, + "TYPE_FP32": DataType.TYPE_FP32, + "TYPE_FP64": DataType.TYPE_FP64, + "TYPE_STRING": DataType.TYPE_STRING, + "TYPE_BF16": DataType.TYPE_BF16 +} + +def generate_pbtxt(model_config: Dict, backend:str): + triton_model_config = ModelConfig() + for key, value in model_config.items(): + if hasattr(triton_model_config, key): + # only pick the standard triton model configuration items to the pbtxt + if key == "input" or key == "output": + for i in value: + entry = triton_model_config.input.add() if key == "input" else triton_model_config.output.add() + for k, v in i.items(): + if hasattr(entry, k): + if k == "data_type": + setattr(entry, k, datatype_mapping[v]) + elif k == "dims": + for dim in v: + entry.dims.append(dim) + elif k == "reshape": + if len(v['shape']) == 0: + # WAR: force generating reshape + entry.reshape.shape.append(-1) + else: + for s in v['shape']: + entry.reshape.shape.append(s) + else: + setattr(entry, k, v) + elif key == "parameters": + for k, p in value.items(): + triton_model_config.parameters[k].string_value = p + elif key == "instance_group": + for i in value: + entry = triton_model_config.instance_group.add() + for k, v in i.items(): + if k == "gpus": + entry.gpus.extend(v) + else: + setattr(entry, k, v) + elif key == "model_transaction_policy": + for k, v in value.items(): + setattr(triton_model_config.model_transaction_policy, k, v) + else: + setattr(triton_model_config, key, value) + # set the triton backend + setattr(triton_model_config, "backend", backend) + return text_format.MessageToString(triton_model_config, use_short_repeated_primitives=True).replace('shape: [-1]', 'shape: [ ]') \ No newline at end of file diff --git a/tools/inference_builder/builder/utils.py b/tools/inference_builder/builder/utils.py new file mode 100644 index 00000000..f0fd292a --- /dev/null +++ b/tools/inference_builder/builder/utils.py @@ -0,0 +1,172 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pathlib import Path +import os +import shutil +from typing import Callable +import tarfile +import mimetypes +import base64 + +class PayloadBuilder: + """ + Builder class for constructing the payload with required and optional fields + + Example: + >>> builder = PayloadBuilder(files=["image1.jpg"], model="nvdino-v2") + >>> payload = builder.add_text(["cat,dog"]).build() + { + "input": ["data:image/jpeg;base64,/9j/4AAQSkZJRg..."], + "model": "nvidia/nvdino-v2", + "text": [["cat", "dog"]] + } + """ + @staticmethod + def prepare_image_inputs(files): + """ + Prepare base64 encoded image inputs for the payload + Args: + files: List of file paths, e.g. ["path/to/image1.jpg", "path/to/image2.png"] + Returns: + list: List of encoded image strings in format "data:mime_type;base64,..." + + Example: + >>> prepare_image_inputs(["image1.jpg", "image2.png"]) + [ + "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRX...", + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7..." + ] + """ + encoded_inputs = [] + for file in files: + mime_type = mimetypes.guess_type(file)[0] + with open(file, "rb") as f: + b64_image = base64.b64encode(f.read()).decode() + encoded_inputs.append(f"data:{mime_type};base64,{b64_image}") + return encoded_inputs + + @staticmethod + def prepare_text_input(text): + """ + Prepare text input for the payload + Args: + text: List of comma-separated text strings, e.g. ["cat,dog", "person,car"] + Returns: + list: List of text arrays split by comma, or None if text is None + + Example: + >>> prepare_text_input(["cat,dog", "person,car"]) + [["cat", "dog"], ["person", "car"]] + + >>> prepare_text_input(None) + None + """ + return [t.split(",") for t in text] if text else None + + @staticmethod + def prepare_text_input_from_file(txt_file_path): + """ + Prepare text input from a .txt file + Args: + txt_file_path: Path to .txt file containing comma-separated text + Returns: + list: List of text arrays split by comma, or None if file not found/empty + + Example: + >>> prepare_text_input_from_file("labels.txt") + # For a file containing "cat,car,truck" + [["cat", "car", "truck"]] + + >>> prepare_text_input_from_file("nonexistent.txt") + None + """ + try: + with open(txt_file_path, 'r') as f: + content = f.read().strip() + return PayloadBuilder.prepare_text_input([content]) if content else None + except FileNotFoundError: + print(f"Warning: Text file not found: {txt_file_path}") + return None + except Exception as e: + print(f"Warning: Error reading text file: {e}") + return None + + @staticmethod + def prepare_model_name(model): + """ + Prepare model name for the payload + Args: + model: Base model name, e.g. "nvdino-v2" + Returns: + str: Full model name with nvidia prefix + + Example: + >>> prepare_model_name("nvdino-v2") + "nvidia/nvdino-v2" + """ + return f"nvidia/{model}" + + def __init__(self, files, model): + """Initialize with required fields""" + self.payload = { + "input": self.prepare_image_inputs(files), + "model": self.prepare_model_name(model) + } + + def add_text(self, text): + """Add optional text field if provided""" + if text: + text_input = self.prepare_text_input(text) + if text_input: + self.payload["text"] = text_input + return self + + def add_more_field(self, key, value): + """Add more field to the payload""" + if key is not None and value is not None: + self.payload[key] = value + return self + + def build(self): + """Return the constructed payload""" + return self.payload + +def get_resource_path(relative_path): + """ Get absolute path to resource, works for dev and for PyInstaller """ + base_path = Path(__file__).absolute().parent.parent + return str(Path(base_path, relative_path)) + +def copy_files(source_dir, destination_dir, filter: Callable[[str], bool]=None): + # Ensure destination directory exists + if not os.path.exists(destination_dir): + os.makedirs(destination_dir) + + # List all files in the source directory + files = os.listdir(source_dir) + + for file in files: + if filter and not filter(file): + continue + # Full path to the source file + full_file_name = os.path.join(source_dir, file) + + # Check if it's a file (not a directory) + if os.path.isfile(full_file_name): + shutil.copy(full_file_name, destination_dir) + +def create_tar_gz(output_filename, source_dir): + with tarfile.open(output_filename, "w:gz") as tar: + tar.add(source_dir, arcname=".") \ No newline at end of file diff --git a/tools/inference_builder/builder/validate.py b/tools/inference_builder/builder/validate.py new file mode 100644 index 00000000..d05819b7 --- /dev/null +++ b/tools/inference_builder/builder/validate.py @@ -0,0 +1,1012 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import json +import math +import os +import sys +import subprocess +import base64 +import importlib +from pathlib import Path +from typing import List, Dict, Union, Any +from jinja2 import Environment, FileSystemLoader +from utils import get_resource_path +import shutil +import yaml +from utils import PayloadBuilder + +# Common paths - single source of truth +OUT_DIR = ".tmp" +GENERATED_CLIENT_DIR = "generated_client" +TEST_CASES_FILE = "test_cases.yaml" + +# Setup paths and generate OpenAPI client +def check_client_exists() -> bool: + """Check if OpenAPI client exists and is importable. + + Returns: + bool: True if client exists and can be imported, False otherwise + """ + # Check if the module can be imported + try: + importlib.import_module('openapi_client') + print("Able to import OpenAPI client") + return True + except ImportError: + print("Not able to import OpenAPI client") + return False + +def setup_environment(generated_client_path: Path) -> bool: + """Setup environment for client import.""" + try: + # First check if client directory exists + if not generated_client_path.exists(): + print(f"Generated client directory not found at: {generated_client_path}") + return False + + # Add to PYTHONPATH if needed + if str(generated_client_path) not in sys.path: + sys.path.insert(0, str(generated_client_path)) # Insert at beginning of path + print(f"✓ Added to PYTHONPATH: {generated_client_path}") + + # Try importing to verify setup + importlib.import_module('openapi_client') + print("✓ Successfully imported OpenAPI client") + return True + + except ImportError as e: + print(f"Failed to import OpenAPI client: {e}") + print(f"Directory contents: {os.listdir(generated_client_path)}") + return False + except Exception as e: + print(f"Unexpected error setting up environment: {e}") + return False + + +def check_client_valid(client_dir: Path) -> bool: + """Check if existing OpenAPI client is valid. + + Args: + client_dir: Path to generated client directory + + Returns: + bool: True if client exists and is valid, False otherwise + """ + try: + # Check if directory exists and has key files + if not client_dir.exists(): + return False + + required_files = [ + "setup.py", + "openapi_client/__init__.py", + "openapi_client/api/nvidiametropolisinferenceapi_api.py", + "openapi_client/models/inference_request.py", + "openapi_client/models/inference_response.py" + ] + + for file in required_files: + if not (client_dir / file).exists(): + print(f"Missing required file: {file}") + return False + + # Try importing to validate + sys_path_modified = False + if str(client_dir) not in sys.path: + sys.path.insert(0, str(client_dir)) + sys_path_modified = True + + try: + import openapi_client + from openapi_client.models.inference_request import InferenceRequest + from openapi_client.models.inference_response import InferenceResponse + print(f"✓ Found valid existing client at: {client_dir}") + return True + except ImportError as e: + print(f"Client validation failed: {e}") + return False + finally: + if sys_path_modified: + sys.path.remove(str(client_dir)) + + except Exception as e: + print(f"Error checking client: {e}") + return False + +def generate_openapi_client(openapi_spec_path: Path, output_dir: Path, use_docker: bool = True) -> bool: + """Generate OpenAPI client using Docker or local OpenAPI Generator. + + Args: + openapi_spec_path: Path to OpenAPI specification file + output_dir: Target output directory for generated client + use_docker: Whether to use Docker for generation (default: True) + """ + try: + # Check if valid client already exists + if check_client_valid(output_dir): + print("Using existing OpenAPI client") + return True + + print("Generating new OpenAPI client...") + # Get absolute paths + abs_spec_path = openapi_spec_path.resolve() + abs_output_dir = output_dir.resolve() + + tmp_client = "tmp_generated_client" + tmp_client_path = abs_spec_path.parent / tmp_client + + if use_docker: + # Construct docker command + # docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \ + # -i /local/openapi.yaml \ + # -g python \ + # -o /local/generated_client + generator_cmd = [ + "docker", "run", "--rm", + "-v", f"{abs_spec_path.parent}:/local", + "--user", f"{os.getuid()}:{os.getgid()}", # Use current user's UID/GID + "openapitools/openapi-generator-cli", "generate", + "-i", f"/local/{abs_spec_path.name}", + "-g", "python", + "-o", f"/local/{tmp_client}" + ] + print(f"Generating OpenAPI client using Docker...") + else: + # Use local OpenAPI Generator + generator_cmd = [ + "openapi-generator-cli", "generate", + "-i", str(abs_spec_path), + "-g", "python", + "-o", str(tmp_client_path) + ] + print(f"Generating OpenAPI client using local OpenAPI Generator...") + print(f"Using OpenAPI spec: {abs_spec_path}") + print(f"Temporary directory: {tmp_client_path}") + print(f"Final output directory: {output_dir.resolve()}") + + result = subprocess.run(generator_cmd, + check=True, + capture_output=True, + text=True) + + if result.stdout: + print(result.stdout) + + # Move generated files to target directory + output_dir.mkdir(parents=True, exist_ok=True) + try: + # Use shutil.copytree to copy the contents + shutil.copytree(tmp_client_path, output_dir, dirs_exist_ok=True) + # Clean up temp directory + shutil.rmtree(tmp_client_path) + return True + except Exception as e: + print(f"Failed to move generated client: {e}") + return False + + return True + + except subprocess.CalledProcessError as e: + print(f"✗ Docker command failed: {e}") + if e.stdout: + print("stdout:", e.stdout) + if e.stderr: + print("stderr:", e.stderr) + return False + except Exception as e: + print(f"✗ Failed to generate client: {e}") + return False + finally: + # Ensure temp directory is cleaned up + if 'temp_client_dir' in locals() and tmp_client_path.exists(): + shutil.rmtree(tmp_client_path) + + + + +def prepare_image_input(image_path: Path) -> str: + """Prepare image for inference by converting to base64 format. + + Examples: + image_input = tester.prepare_image_input("path/to/image.jpg") + # image_input = "data:image/jpg;base64,/9j/4AAQSkZJRg..." + + Args: + image_path: Path to image file (jpg, jpeg, or png) + + Returns: + str: Base64 encoded image with data URI scheme + + Raises: + ValueError: If file doesn't exist or has unsupported format + IOError: If file can't be read + """ + if not os.path.exists(image_path): + raise ValueError(f"Image file not found: {image_path}") + + ext = os.path.splitext(image_path)[1][1:].lower() + if ext not in ['jpg', 'jpeg', 'png']: + raise ValueError(f"Unsupported image format: {ext}. Use jpg, jpeg or png") + + with open(image_path, "rb") as f: + image_data = f.read() + b64_image = base64.b64encode(image_data).decode() + return f"data:image/{ext};base64,{b64_image}" + + +def get_test_cases(validation_dir: Path) -> List[Dict[str, str]]: + """Discover test cases by scanning validation directory for images. + + Args: + validation_dir: Path to validation directory + + Returns: + List of test cases with image and expected response paths + """ + test_cases = [] + supported_formats = {'.jpg', '.jpeg', '.png'} + + # Find all image files + for idx, file_path in enumerate(validation_dir.iterdir()): + if file_path.suffix.lower() in supported_formats: + image_name = file_path.stem + expected_path = validation_dir / f"expected.{image_name}.json" + text_path = validation_dir / f"{image_name}.txt" + + if expected_path.exists(): + test_cases.append({ + "name": image_name + f"_{idx}", + "input": file_path.name, + "text": text_path.name if text_path.exists() else None, + "expected": expected_path.name, + }) + else: + print(f"Warning: Found image {file_path.name} but missing expected response: {expected_path.name}") + + print(f"Discovered {len(test_cases)} test cases:") + for test in test_cases: + print(f" • {test['name']}: {test['input']} → {test['expected']}") + + return test_cases + +def generate_default_test_cases(validation_dir: Path) -> List[Dict[str, str]]: + """Generate default test cases when no test cases are found in validation directory. + + Creates a test case with: + - A predefined base64 encoded image data (saved as a temporary PNG file) + - A predefined text "describe the picture" + - An empty expected result + + Args: + validation_dir: Path to validation directory + + Returns: + List of default test cases with predefined image and text + """ + # Predefined base64 encoded PNG image (1x1 transparent pixel) + # This is the same as used in lib/codec.py + predefined_image_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAEElEQVR4nGK6HcwNCAAA//8DTgE8HuxwEQAAAABJRU5ErkJggg==" + + # Create the image file with predefined base64 data + image_path = validation_dir / "default_test.png" + if not image_path.exists(): + try: + # Decode the base64 data and write to file + image_data = base64.b64decode(predefined_image_data) + with open(image_path, "wb") as f: + f.write(image_data) + print(f"✓ Created default image file: {image_path}") + except Exception as e: + print(f"Warning: Failed to create default image file: {e}") + return [] + + # Create the expected result file (empty result) + expected_path = validation_dir / "expected.default_test.json" + if not expected_path.exists(): + with open(expected_path, "w") as f: + json.dump({}, f, indent=2) + print(f"✓ Created default expected result file: {expected_path}") + + # Create the text file + text_path = validation_dir / "default_test.txt" + if not text_path.exists(): + with open(text_path, "w") as f: + f.write("describe the picture") + print(f"✓ Created default text file: {text_path}") + + # Create the test case structure + test_cases = [{ + "name": "default_test_0", + "input": "default_test.png", + "text": "default_test.txt", + "expected": "expected.default_test.json" + }] + + print(f"Generated {len(test_cases)} default test cases:") + for test in test_cases: + print(f" • {test['name']}: {test['input']} → {test['expected']}") + + return test_cases + + +def get_request_template(client_dir: Path) -> Dict: + """Generate request template from OpenAPI client models. + + Args: + client_dir: Path to generated OpenAPI client directory + + Returns: + Dict containing request template + """ + try: + # Temporarily add client to path + if str(client_dir) not in sys.path: + sys.path.insert(0, str(client_dir)) + + # Import the request model + try: + from openapi_client.models.input_inner import InputInner + + # Create request using the model class + input_data = [InputInner("")] # Create Input instance first + except ImportError: + from openapi_client.models.inference_request_input_inner import InferenceRequestInputInner + input_data = [InferenceRequestInputInner("")] + from openapi_client.models.inference_request import InferenceRequest + request = InferenceRequest( + model='nvidia/nvdino-v2', # First allowed value from model_validate_enum + input=input_data + ) + + # Convert to dict for JSON serialization + template = request.to_dict() + print("Generated request template from OpenAPI client models") + return template + + except ImportError as e: + print(f"Failed to import OpenAPI client models: {e}") + raise + except Exception as e: + print(f"Failed to generate request template: {e}") + raise + finally: + # Clean up sys.path + if str(client_dir) in sys.path: + sys.path.remove(str(client_dir)) + + +def build_requests(validation_dir: Path, out_dir: Path, client_dir: Path, test_cases_abs_path: bool = False) -> bool: + """Build request payloads from template and config. + + Args: + validation_dir: Directory containing validation data + out_dir: Directory to write generated files + client_dir: Directory containing OpenAPI client + test_cases_abs_path: Whether to use absolute paths in test_cases.yaml (default: False) + """ + try: + print("\nBuilding request payloads...") + # Get request template from OpenAPI client models + template = get_request_template(client_dir) + + # Get test cases from directory scan + test_cases = get_test_cases(validation_dir) + if not test_cases: + test_cases = generate_default_test_cases(validation_dir) + + # Store request-response mapping + request_response_map = [] + + # Generate request for each test case + for test in test_cases: + request = template.copy() + image_path = validation_dir / test["input"] + request["input"] = PayloadBuilder.prepare_image_inputs([image_path]) + if test["text"]: + request["text"] = PayloadBuilder.prepare_text_input_from_file(validation_dir / test["text"]) + + # write request file + request_path = out_dir / f"request.{test['name']}.json" + with open(request_path, "w") as f: + json.dump(request, f, indent=2) + print(f"✓ Generated request for test '{test['name']}': {request_path}") + + expected_path = validation_dir / test["expected"] + + # Add to mapping with either absolute or relative paths + if test_cases_abs_path: + request_path_str = str(request_path.resolve()) + expected_path_str = str(expected_path.resolve()) + else: + # Make paths relative to validation directory + request_path_str = os.path.relpath(request_path, out_dir) + expected_path_str = os.path.relpath(expected_path, out_dir) + + # Add to mapping + request_response_map.append({ + "name": test["name"], + "request": request_path_str, + "expected": expected_path_str + }) + + # Write request-response mapping + test_cases_file_path = out_dir / TEST_CASES_FILE + with open(test_cases_file_path, "w") as f: + yaml.safe_dump(request_response_map, f, default_flow_style=False) + print(f"✓ Generated test cases file: {test_cases_file_path}") + print("✓ Successfully built all request payloads") + return True + except Exception as e: + print(f"✗ Failed to build requests: {e}") + return False + +def build_test_runner(out_dir: Path) -> bool: + """Generate test runner from template.""" + try: + print("\nBuilding test runner...") + + tpl_dir = get_resource_path("templates") + print(f"Using template directory: {tpl_dir}") + + jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) + test_tpl = jinja_env.get_template("client/test_runner.jinja.py") + output_path = out_dir / "test_runner.py" + with open(output_path, 'w') as f: + validator_dir = Path(__file__).parent.resolve() + f.write(test_tpl.render(validator_dir=validator_dir)) + print(f"✓ Generated test runner: {output_path}") + return True + except Exception as e: + print(f"✗ Failed to build test runner: {e}") + return False + +def copy_test_runner_dep_tree(out_dir: Path) -> bool: + """Copy test runner dependency tree.""" + try: + print("\nCopying test runner dependency tree...") + # Copy all local dependencies + builder_dir = Path(__file__).parent + files_to_copy = { + builder_dir / "validate.py": out_dir / "validate.py", + builder_dir / "utils.py": out_dir / "utils.py", + # Add any other dependencies here + } + + for src, dest in files_to_copy.items(): + shutil.copy2(src, dest) + print(f"✓ Copied {src.name} to: {dest}") + return True + except Exception as e: + print(f"✗ Failed to copy test runner dependency tree: {e}") + return False + +def build_validation(openapi_spec_path: Path, validation_dir: Path, use_docker: bool = True, test_cases_abs_path: bool = False) -> bool: + """Generate validation components.""" + try: + print("\n=== Building Validator ===") + + # Create temp directory + out_dir = validation_dir / OUT_DIR + out_dir.mkdir(parents=True, exist_ok=True) + print(f"Created temporary directory: {out_dir}") + + # 1. Generate OpenAPI client + print("\n1. Generating OpenAPI client...") + client_dir = out_dir / GENERATED_CLIENT_DIR + if not generate_openapi_client(openapi_spec_path, client_dir, use_docker): + raise Exception("Failed to generate OpenAPI client") + + # 2. Build request payloads + print("\n2. Building request payloads...") + if not build_requests(validation_dir, out_dir, client_dir, test_cases_abs_path): + raise Exception("Failed to build requests") + + # 3. Generate test runner + print("\n3. Generating test runner...") + if not build_test_runner(out_dir): + raise Exception("Failed to build test runner") + + # 4. Copy test runner deps like validate.py to out_dir (.tmp) + print("\n4. Copying validate.py to out_dir...") + if not copy_test_runner_dep_tree(out_dir): + raise Exception("Failed to copy test runner dependency tree") + + print("\n✓ Successfully built all validation components") + return True + except Exception as e: + print(f"\n✗ Failed to build validation: {e}") + return False + + +class CvValidator: + """Class for validating CV inference results""" + + @staticmethod + def is_float_equal(a: float, b: float, tolerance: float = 1e-5) -> bool: + """Compare floats with relative and absolute tolerance, similar to numpy.isclose + + Uses both relative and absolute tolerance for robust comparison: + - Relative tolerance scales with the magnitude of the values + - Absolute tolerance handles cases where values are close to zero + - With large tolerance values, most comparisons will pass + + Formula: abs(a - b) <= (atol + rtol * max(abs(a), abs(b))) + + Args: + a: First float value + b: Second float value + tolerance: Relative tolerance parameter (default: 1e-5). + Also used as absolute tolerance scaled down by 1000x + + Returns: + bool: True if values are close within tolerance + + Examples: + # Basic usage + is_float_equal(1.0, 1.00001, 1e-4) # True + + # Scales with magnitude (relative tolerance) + is_float_equal(1000.0, 1000.01, 1e-4) # True + is_float_equal(0.001, 0.00100001, 1e-4) # True + + # Handles near-zero values (absolute tolerance) + is_float_equal(1e-10, 2e-10, 1e-5) # True + + # Large tolerance passes most cases + is_float_equal(1.0, 2.0, 1.0) # True + """ + # Use tolerance as relative tolerance (rtol) + rtol = tolerance + # Use much smaller absolute tolerance to handle near-zero values + atol = tolerance * 1e-3 + + return abs(a - b) <= (atol + rtol * max(abs(a), abs(b))) + + @staticmethod + def compute_iou(box1: List, box2: List) -> float: + """Compute Intersection over Union between two bounding boxes. + + Args: + box1: First bounding box as [x1, y1, x2, y2] + box2: Second bounding box as [x1, y1, x2, y2] + + Returns: + float: IoU value in [0.0, 1.0] + """ + x1 = max(box1[0], box2[0]) + y1 = max(box1[1], box2[1]) + x2 = min(box1[2], box2[2]) + y2 = min(box1[3], box2[3]) + + intersection = max(0, x2 - x1) * max(0, y2 - y1) + + area1 = (box1[2] - box1[0]) * (box1[3] - box1[1]) + area2 = (box2[2] - box2[0]) * (box2[3] - box2[1]) + union = area1 + area2 - intersection + + if union == 0: + return 0.0 + return intersection / union + + @staticmethod + def tolerance_to_iou_params(tolerance: float) -> tuple: + """Project numeric tolerance to IoU matching parameters. + + Uses two mathematical projections: + + 1. iou_threshold = 1 / (1 + sqrt(tolerance)) + Inverse-sqrt decay — maps tolerance to the (0, 1] range. + The square root softens the curve so that moderate tolerances + still produce workable IoU thresholds for small objects, where + even 1-pixel shifts cause large IoU drops. + At tolerance=1.0 this yields 0.5, the standard PASCAL VOC threshold. + + 2. max_unmatched = floor(log2(1 + tolerance)) + Logarithmic growth — allows more unmatched detections as tolerance + increases, but grows slowly to prevent over-permissiveness. + + Reference table: + tolerance iou_threshold max_unmatched + 0 1.000 0 + 1e-5 ≈1.000 0 + 0.01 ≈0.909 0 + 0.1 ≈0.760 0 + 0.5 ≈0.586 0 + 1.0 0.500 1 + 3.0 ≈0.366 2 + 7.0 ≈0.274 3 + + Args: + tolerance: The numeric float-comparison tolerance + + Returns: + Tuple of (iou_threshold, max_unmatched) + """ + iou_threshold = 1.0 / (1.0 + math.sqrt(tolerance)) + max_unmatched = int(math.floor(math.log2(1.0 + tolerance))) if tolerance > 0 else 0 + return iou_threshold, max_unmatched + + @classmethod + def compare_lists(cls, list1: List[Any], list2: List[Any], tolerance: float) -> bool: + """Compare two lists with tolerance for float values. + For nested lists (list of lists): + - Outer list order doesn't matter (will be sorted) + - Inner list order DOES matter (will not be sorted) + For regular lists (non-nested): + - Order doesn't matter (will be sorted) + + Examples: + # These are equal (outer order doesn't matter): + list1 = [[1, 2], [3, 4]] + list2 = [[3, 4], [1, 2]] # True + + # These are NOT equal (inner order matters): + list1 = [[1, 2], [3, 4]] + list2 = [[2, 1], [3, 4]] # False + + # These are equal (floats within tolerance): + list1 = [[1.001, 2.002], [3.003, 4.004]] + list2 = [[3.004, 4.003], [1.002, 2.001]] # True + + # Regular lists (order doesn't matter): + list1 = [1.0, 2.0, 3.0] + list2 = [3.0, 1.0, 2.0] # True + + # Regular lists with tolerance: + list1 = [1.001, 2.002] + list2 = [2.001, 1.000] # True (within tolerance) + + Args: + list1: First list to compare + list2: Second list to compare + tolerance: Float tolerance for comparing float values + + Returns: + bool: True if lists are equal within tolerance, False otherwise + """ + if len(list1) != len(list2): + return False + + # If lists contain more lists/tuples, keep inner items as tuples but don't sort them + if all(isinstance(x, (list, tuple)) for x in list1 + list2): + tuples1 = [tuple(x) for x in list1] + tuples2 = [tuple(x) for x in list2] + # Sort the outer list only + sorted1 = sorted(tuples1) + sorted2 = sorted(tuples2) + + # Use tolerance-aware matching instead of simple pairing + # This handles cases where sorting order might differ slightly + # due to float precision + used = [False] * len(sorted2) + for item1 in sorted1: + matched = False + for i, item2 in enumerate(sorted2): + if used[i]: + continue + # Check if all elements match within tolerance + if len(item1) == len(item2): + all_match = all( + cls.is_float_equal(a, b, tolerance) + if isinstance(a, (float, int)) and + isinstance(b, (float, int)) + else a == b + for a, b in zip(item1, item2) + ) + if all_match: + used[i] = True + matched = True + break + if not matched: + return False + return True + + # For lists of floats, compare with tolerance + if all(isinstance(x, (float, int)) for x in list1 + list2): + sorted1 = sorted(list1) + sorted2 = sorted(list2) + return all( + cls.is_float_equal(float(a), float(b), tolerance) + for a, b in zip(sorted1, sorted2) + ) + + # For other types, use regular comparison + return sorted(list1) == sorted(list2) + + @classmethod + def match_detections(cls, actual_bboxes: List[List], expected_bboxes: List[List], + iou_threshold: float = 0.5, + actual_labels: List = None, + expected_labels: List = None) -> tuple: + """Match actual detections to expected detections using greedy IoU matching. + + Pairs detections by highest IoU first. A pair is only accepted if + IoU >= iou_threshold. When labels are provided, pairs must also + have matching labels — this prevents cross-matching at locations + where multiple classes are detected on the same bbox. + + Args: + actual_bboxes: List of actual bounding boxes [x1, y1, x2, y2] + expected_bboxes: List of expected bounding boxes [x1, y1, x2, y2] + iou_threshold: Minimum IoU to consider a valid match + actual_labels: Optional per-detection labels for actual results + expected_labels: Optional per-detection labels for expected results + + Returns: + Tuple of (matches, unmatched_actual, unmatched_expected) where + matches is a list of (actual_idx, expected_idx, iou) tuples + """ + use_labels = actual_labels is not None and expected_labels is not None + + candidates = [] + for i, a_box in enumerate(actual_bboxes): + for j, e_box in enumerate(expected_bboxes): + if use_labels and actual_labels[i] != expected_labels[j]: + continue + iou = cls.compute_iou(a_box, e_box) + if iou >= iou_threshold: + candidates.append((iou, i, j)) + + candidates.sort(reverse=True) + + matched_actual = set() + matched_expected = set() + matches = [] + + for iou, i, j in candidates: + if i not in matched_actual and j not in matched_expected: + matches.append((i, j, iou)) + matched_actual.add(i) + matched_expected.add(j) + + unmatched_actual = set(range(len(actual_bboxes))) - matched_actual + unmatched_expected = set(range(len(expected_bboxes))) - matched_expected + + return matches, unmatched_actual, unmatched_expected + + @classmethod + def _compare_detections_iou(cls, actual: Dict, expected: Dict, tolerance: float, + iou_threshold: float, max_unmatched: int) -> bool: + """Compare detection results using IoU-based matching. + + Matches detections holistically — each detection's bbox, label, and + probability are validated together as a unit. + + Args: + actual: Actual inference result dict (must contain 'bboxes') + expected: Expected inference result dict (must contain 'bboxes') + tolerance: Float tolerance for probability comparison + iou_threshold: Minimum IoU for a bbox match + max_unmatched: Max total unmatched detections allowed (actual + expected) + + Returns: + bool: True if detection results match within constraints + """ + per_detection_keys = {'bboxes', 'probs', 'labels', 'masks', 'objects'} + + for key in actual: + if key in per_detection_keys: + continue + actual_value = actual[key] + expected_value = expected[key] + + if key == 'shape': + if actual_value != expected_value: + print(f" ✗ {key} mismatch: {actual_value} vs {expected_value}") + return False + print(f" ✓ {key} passed") + continue + + if isinstance(actual_value, list): + if not cls.compare_lists(actual_value, expected_value, tolerance): + print(f" ✗ {key} mismatch") + return False + print(f" ✓ {key} passed") + continue + + if actual_value != expected_value: + print(f" ✗ {key} mismatch: {actual_value} vs {expected_value}") + return False + + actual_labels = actual.get('labels') + expected_labels = expected.get('labels') + matches, unmatched_actual, unmatched_expected = cls.match_detections( + actual['bboxes'], expected['bboxes'], iou_threshold, + actual_labels, expected_labels + ) + + total_unmatched = len(unmatched_actual) + len(unmatched_expected) + if total_unmatched > max_unmatched: + print(f" ✗ Too many unmatched detections: " + f"{len(unmatched_actual)} extra in actual + " + f"{len(unmatched_expected)} missing from expected " + f"= {total_unmatched} (max allowed: {max_unmatched})") + for idx in sorted(unmatched_actual): + prob = actual['probs'][idx] if 'probs' in actual else 'N/A' + label = actual['labels'][idx] if 'labels' in actual else 'N/A' + print(f" Extra actual[{idx}]: bbox={actual['bboxes'][idx]}, " + f"prob={prob}, label={label}") + for idx in sorted(unmatched_expected): + prob = expected['probs'][idx] if 'probs' in expected else 'N/A' + label = expected['labels'][idx] if 'labels' in expected else 'N/A' + print(f" Missing expected[{idx}]: bbox={expected['bboxes'][idx]}, " + f"prob={prob}, label={label}") + return False + + if unmatched_actual or unmatched_expected: + print(f" ⚠ Unmatched detections within tolerance: " + f"{len(unmatched_actual)} extra in actual, " + f"{len(unmatched_expected)} missing from expected") + + for actual_idx, expected_idx, iou in matches: + if 'probs' in actual and 'probs' in expected: + a_prob = actual['probs'][actual_idx] + e_prob = expected['probs'][expected_idx] + if isinstance(a_prob, (int, float)) and isinstance(e_prob, (int, float)): + if not cls.is_float_equal(float(a_prob), float(e_prob), tolerance): + print(f" ✗ prob mismatch at IoU={iou:.3f}: " + f"actual[{actual_idx}]={a_prob} vs expected[{expected_idx}]={e_prob}") + return False + + if 'labels' in actual and 'labels' in expected: + a_label = actual['labels'][actual_idx] + e_label = expected['labels'][expected_idx] + if a_label != e_label: + print(f" ✗ label mismatch at IoU={iou:.3f}: " + f"actual[{actual_idx}]={a_label} vs expected[{expected_idx}]={e_label}") + return False + + if 'masks' in actual and 'masks' in expected: + a_masks = actual['masks'] + e_masks = expected['masks'] + if a_masks and e_masks and \ + len(a_masks) > actual_idx and len(e_masks) > expected_idx: + a_mask = a_masks[actual_idx] + e_mask = e_masks[expected_idx] + if isinstance(a_mask, list) and isinstance(e_mask, list): + if not cls.compare_lists(a_mask, e_mask, tolerance): + print(f" ✗ mask mismatch at IoU={iou:.3f}: " + f"actual[{actual_idx}] vs expected[{expected_idx}]") + return False + + print(f" ✓ detections passed: {len(matches)} matched by IoU " + f"(iou_threshold={iou_threshold}, prob_tolerance={tolerance}, " + f"unmatched={total_unmatched}/{max_unmatched})") + return True + + @classmethod + def compare_inference_result(cls, actual: Dict, expected: Dict, tolerance: float, + iou_threshold: float = None, + max_unmatched: int = None) -> bool: + """Compare inference result dictionaries with special handling for different field types. + + When bboxes are present, uses IoU-based matching to pair detections + holistically (bbox + label + prob as a unit). Otherwise falls back + to independent list comparison. + + If iou_threshold or max_unmatched are not provided, they are + automatically derived from tolerance via tolerance_to_iou_params(). + + Args: + actual: Dictionary containing actual inference results + expected: Dictionary containing expected inference results + tolerance: Float tolerance for comparing numeric values + iou_threshold: Minimum IoU to consider a bbox match (default: derived from tolerance) + max_unmatched: Max allowed unmatched detections (default: derived from tolerance) + + Returns: + bool: True if dictionaries match within tolerance + """ + actual.pop('timestamp', None) + expected.pop('timestamp', None) + + if actual.keys() != expected.keys(): + return False + + if 'bboxes' in actual and actual['bboxes'] and expected.get('bboxes'): + if iou_threshold is None or max_unmatched is None: + derived_iou, derived_max = cls.tolerance_to_iou_params(tolerance) + if iou_threshold is None: + iou_threshold = derived_iou + if max_unmatched is None: + max_unmatched = derived_max + print(f" IoU params (from tolerance={tolerance}): " + f"iou_threshold={iou_threshold:.4f}, max_unmatched={max_unmatched}") + return cls._compare_detections_iou( + actual, expected, tolerance, iou_threshold, max_unmatched + ) + + for key, actual_value in actual.items(): + expected_value = expected[key] + + if key == 'shape': + if actual_value != expected_value: + return False + continue + + if isinstance(actual_value, list): + if not cls.compare_lists(actual_value, expected_value, tolerance): + return False + else: + print(f" ✓ {key} passed") + continue + + if actual_value != expected_value: + return False + + return True + + @classmethod + def compare_responses(cls, actual: Dict, expected: Dict, tolerance: float = 1e-5, + iou_threshold: float = None, max_unmatched: int = None) -> bool: + """Compare actual and expected inference API responses. + + If iou_threshold or max_unmatched are not provided, they are + automatically derived from tolerance via tolerance_to_iou_params(). + + Args: + actual: Dictionary containing actual API response + expected: Dictionary containing expected API response + tolerance: Float tolerance for comparing numeric values + iou_threshold: Minimum IoU for bbox matching (default: derived from tolerance) + max_unmatched: Max allowed unmatched detections (default: derived from tolerance) + + Returns: + bool: True if responses match within tolerance + """ + if actual.keys() != expected.keys(): + return False + + for key, value in actual.items(): + if key == 'data': + if len(actual['data']) != len(expected['data']): + return False + for actual_item, expected_item in zip(actual['data'], expected['data']): + if not cls.compare_inference_result(actual_item, expected_item, tolerance, + iou_threshold, max_unmatched): + return False + else: + if actual[key] != expected[key]: + return False + return True + + + +def main(): + parser = argparse.ArgumentParser(description='Build validator components') + parser.add_argument('--api-spec', + type=str, + required=True, + help='Path to OpenAPI specification file') + parser.add_argument('--base-dir', + type=str, + default='.', + help='Base directory for validation') + + args = parser.parse_args() + + with open(args.api_spec) as f: + api_schema = f.read() + + if build_validation(api_schema, Path(args.base_dir)): + print("✓ Successfully built validation") + else: + print("✗ Failed to build validation") + sys.exit(1) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/tools/inference_builder/cursor-mcp-config.json b/tools/inference_builder/cursor-mcp-config.json new file mode 100644 index 00000000..8dc6aaca --- /dev/null +++ b/tools/inference_builder/cursor-mcp-config.json @@ -0,0 +1,13 @@ +{ + "mcpServers": { + "deepstream-inference-builder": { + "command": ".venv/bin/python", + "args": ["mcp/mcp_server.py"], + "cwd": ".", + "env": { + "PYTHONPATH": "." + } + } + } +} + diff --git a/tools/inference_builder/doc/architecture.md b/tools/inference_builder/doc/architecture.md new file mode 100644 index 00000000..8cc994c0 --- /dev/null +++ b/tools/inference_builder/doc/architecture.md @@ -0,0 +1,38 @@ +# Inference Builder Architecture + +## Overview + +Inference Builder generates the Python package that includes both the inference logic and server integration. The package is constructed from a standardized inference flow combined with a variety of well tested source code templates—including server templates and inference templates. + +The generated code follows the architecture illustrated in the diagram below. + +![Architecture](assets/architecture.png) + +## Inference Flow + +The inference flow is standardized by the base class `InferenceBase`, which supports inference through multiple models. Each model is managed by a `ModelOperator` instance, and is connected with one another through data flows. Each data flow is managed by various implementations of `DataFlow`, handling various types of data, such as images, videos, speech, etc. +The inference flow is standardized by the base class `InferenceBase`, which supports execution of inference across multiple models. Each model is managed by a dedicated `ModelOperator` instance, and models are connected through well-defined data flows. The output data from one model is passed to other models through data flows, using Python dictionaries that map names to tensors. This allows each model to receive its required inputs in a structured and consistent format. + +## Inference Backend + +The inference backend can vary depending on the model type, user requirements, and hardware platform. To support a wide range of SDKs and frameworks, Inference Builder defines a standard interface: 'ModelBackend'. This interface allows the ModelOperator to interact with models regardless of their underlying implementation. + +## API Server + +The API server handles incoming requests from end users and returns responses. It supports communication protocols such as HTTP and gRPC, and conforms to standards like OpenAPI specifications or Protocol Buffers (protobuf) definitions. + +Multiple server implementations are supported, provided they comply with the API specification and interact with the inference pipeline through a defined abstract interface. + +Additionally, Inference Builder supports a server type called `serverless`, which enables users to run inference as a standalone command-line interface without deploying a server. + +The interactions among the components described above are illustrated in the diagram below: + +![Block Diagram](assets/block_digram.png) + +### Integration with Customized Code + +Custom logic can be integrated into the inference flow through the Processor Interface. In the inference configuration file, multiple named pre-processors and post-processors can be assigned to each `ModelOperator` instance. Corresponding Python code snippets implementing these processors must be provided prior to code generation. + +When custom processors are configured, the `ModelOperator` sequentially passes named tensors from the input data flow through the assigned pre-processors before invoking the model backend. Similarly, after receiving output tensors from the backend, the `ModelOperator` passes them through the configured post-processors in sequence. + +Users can define a processor in the configuration file in a way similar to declaring a function interface—by specifying input names and return value names in order. Additionally, a configuration map can be provided to pass parameters that customize the processor’s behavior. \ No newline at end of file diff --git a/tools/inference_builder/doc/assets/architecture.png b/tools/inference_builder/doc/assets/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..c10bfe10c93c90401c8cfa2dd5008a35698bc926 GIT binary patch literal 45036 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

$F(V@mw zqJrK0iSrHO+qR(ZJVA*!yxmq~-4l`^wG(aV!wE(?o4wh9V=M~PU*-^akDOFKXWeah z*;Y1D|NqGP>ZmBYc5f*GkrD-@6$O+=O1eR55g1~C0g;j+hYo3^k(Ta;p}QNTQ;?3K zhwk`pe0<*beCMpiAH-S=%)R$@{p#BLi6@^`06~GnA$HECm@CY-sXyBMHP=tQVU~1W&pq0>b6$~O=lD4nt2Q;# z82|hhNbvJkKI}&?WI$PZ#1rRdALML*^5AUI1bOA)iPa1(5WKJXAt&G8&&mE)6gk(F zj!!K#1YG;J(LXcEDZn9TxSDCJck6a=c$^7`vnkwab-;ip0RQ2MwKc)QR6uT?d4+1r zdzjOZEn1X(_drQGWXh7Ij4upWVREY%3d<8-=`p)GUZ+DG z;Sm>l?Yr-$23G;M97?b3EK4@J%{_knNQQZq%k2G`m)R8mh)6IKUO`6X9NCYXAtO?C z(5wgzws2_P4~{%XWd&N5#G|!PYDNdixC^O|ad{OS!Fe2u{OQ#=?AMJk!ZCgKS^q9* zVKmZF=8o(YX_|lE_dU~tC*b$B+ZXa@!^lcXJ4~~k4Cnse<-yw;4V%|*^q6fkCf^=9q`7#el6QSuhn%u zr)Rjad4aG!v?G&m*aE+i`X~z8T5xSafw`}1!YeEYW&1`?htAQ0 zqySgwr_rs@&f}N=*}etlG*oR+^GkeWs`*Sh1IO!x5o+KB9QRwkz)06Kqo7h8j_#h} zZwWkn5p{m#T=pMJTn89#-lJ%tOSmx%`VATcJ~~;fK72>t<2XuZ4YSD%8=~2KYI?Sd zpmE{f!*52l{H5`0`wbi0L?=$w(~fH$5sAq;u%bp52X08!=#1nU`+~!@+h_hN|INEC z1AMeRB(92co0nDzsDKXz1KV3Bj0O_tS!po)^5FRR4Nx~m(*5u^01%Kx8b~zJ(FvRY z<%L<}k(8L28A>fYa%ePYY$ox-e0p83#LDXNlP8iwb91&!XI7?A(=6fJE3Xb|Kxz5} zNh&WQd1#-%uY*s!|o~?oD=SaX9p*bD@@Pcq0h;=76`6aMh**0Nh;A#p+}st zDMYJAD%siLsj9`qHC2UNHh7H6B19;`a(s%j;>RPbkG+w2=yvIx$0hO8bkr(Pdx6X< zXlf8QwfO$bd&{O-UDt~bn&-s8SG@~;p0zVi7C#OrN*R;g|))1BOsOEM9V{mGS;wbCR$ViAdy2BX0?DcmSMRt7y;3i|qc425&X zUljBy8+uar>U+Zo#$YE+A5RS$7Lk98{2rrMEUKqURGm40fiweC0Pe!!*B8=b-AhYz;)Ts<$`ZW~>X&h`!F za(98i{zni<1{0qm<({znf#qpRcel*J;UO8^>#4?m(Sy?e)w7@eC_;J4q=x0_`B;-Pz8eA7HHrRLQ zmaE!|0pUvhRwZq61tuB~)=8&NB#fNfJO`uO5lm!OIjFp^;m?e^(86AbCf9xc>LhLK z5p}Pb(EDo@)hitgspIGW-7l^S%{evsDugHD`9Z6iX+R^>96GY+Yu4{9t#3v*JJp-vHN#jlH9KCn%z+FG^1^R*GrIOsw z)>c0M&9%FY&~B-jNJ&|*0@l$1?*A(DORKUlYWYod%p+mJ{#xg*v(DB=O%z_ryC%yB z3eFx~9GksYP{@K0DFyiZF8~)w8Q}k)Qe}aO>OW2s@Mz+Gz6J>M^DSAHXBvH^onYK& zA+jz)^u^1sr+qVuw45hJ;jjG$hP_VoYB4>)TfNxZwh*vs4Q62moF%h8{zE{+t1|8o zO=+7mmuE^bVBNp{O_ab5I(I85c3fzA^7<=Avo>ywELH{i-4`jnNb)ZzRqawFtNFPTaT)`6^`%&YwDaHaoOwdpQkx){~ z+wcBP{Z_)hxv`r?D;+X4k;70XGN8$Ti9#{bx(n;+QQsI87FGs>DShr^L?nl@zNDiY z_-65c>O8PI8w<+eyZ!XMln+anTRx1mKWLjw9i<^N6uaWz^@}uWd=ZZ?XRa z!5-)-XPfb`0+JVzxt-NB5)ye(RgWW)*u)z-xPt$|R6HP|5qHk)&9EtSx8hyT<8gI6Dj zAhVly>x4$MwbYjtXy0@1cC~z9p;Urt@1j0SN@7s*+4?sHsyAtLVG=YiR^OgC-L_dh zQz9oPPe*e;Rn`+pfe4-4wb%b|BNKQd``$m;3hQi-hi+1vD7)5k|47);5UcgtMt`$k zIkNyj2)D;mJv%$}{UwD4ul)|3?UeYCItX)`kV|5<_aH0-~2Xr@JcJkByto2kcQ;Ysb8JqLb z@e%DWwZeh$frBd&EzD?_t^H^wX-7A%1#0+&53G7F!oqo7;R5$H%b?2XsXs*E@9Uh6 zmpsn>28SMF5>C7Wx|T*;evi8CtBn!Q*4nu_om$7kHQ+Pgs#fBOCy$Bm+SV&h&dAob zwznb2A+UQUKEB=~6=sv`%Uz*IC;eJ{Hk+Jp-|~LX&PLRC{Sy06ufk}pZ46iI?e9z9 z-qtqVDvH_q2adx%^*r4(yzfuC_4V4Xy9d+fQrBJ{@05d)8Hx;8`QbdtzQ!k` zSPd6L@0cS_Uu84?urHR?<@T6808nL?EKvF`Ss&#%@@geY3nM>ZmZS{7eemx(!xE-P z3Wt7x^w1JVm`|^W>C7dK4e5v)u~N`WV@eZGNJ4S5J=mwpw~1m~LNHKp+x2ATN3wjH z_60>KrUq!}maE+dgUx`8?iy~j`tVZ{5_ab`YcK4jx-|7e;k${is1qjjCBW)YnIJ$=8ko8QX;%+C?yvjySu8Y-GuPGH|!6X?K zAdkhEExuMn9@q?a^IFg)bY7WWs_TKU9~=*GFv8V$zPRh+IoJJdu~$K$fH4VB)rHre z-UTmcVJbM>&x~ESAej(!Jn#3+EH>FH^Fd9p*%rAgy=OW4&9djmLBA#S(V_P`yx zY0J`~;eK`ez+)q&sv`Jr?POyJm4glUUAzV`@yhI$TY0$lA84~^bpN_I>hT2Zgv)wf zK-glVl`rv^u{Z6O2F3O{{DudVjV@ zCUcDZo$aMgz=d!G*>vxCiEH4af{oUai6m1e&4XB~&$C%uRmDo1uqde01Hpj?X)fHs znuiR+OJtd7#E&NAn~>=tHzb?&c{!59Z?p&Jn@VI1gu;+NyW9@VBrHYf(1EE;+7jG%tHI`zT{rc;ZM^NG7yz3fys?s$ibT)M*I)u8I|MuMAOc{A^SiZ3TpVrVvw*BPp zX8U2lq5z2)$%10S!&|zzxwxz}2?+@!V`I-$UEqB$3NCk=ZZjk36^4@CZ{7i2xLojc z0P58>LJ;~4V9O9L48n=)ht16b#*?3d{#k%DW~R>~}}0 zHh^9*26$9i19H-lFZt<6JBZL1yADrA*#ftH=O>gphTb|25jUgO{p8kVY)NQf3cYKw zfg|r-UNxQb9xJHk*nRTuGquJ0XWzCiwN&?GrB?%A<)iqIknz9n?lZ%|SqFw_WgHce zqsUu@p}kM!lIDSWRwQhCM%1Vdqsvobu6B5!XH&CYt z?B6EzP1WJM(ER{%@aI$1Jy7e)7Oqxszq$gTArveOeP1g#3r}{LTm3!K7nB`Y0((cb8VIHj1Ra0g>>LUMmU~{^z#$@BAZe92D zpFTyW#aLgu%@bjfiBaM;HIDi3K{1A}M_pR^eut*NN#xwmnsKrCw|KG%M?dExoG85c zhgUM0!KFc`=Z8jfCD3OO@Ru)4nHd>M?z+?sj)%VX)ooCiRuz=1tL(QcURQg2`%s8C z<;M@&V${MeDfFR9VO81m=jTB5LO!&P^xx%G=sM>z!geA5r_zXmgxG3AqsnJ$H**_H zegsDr3zKz$nfhK8plzI5j4mh0+3ANhrqL99zQ3_UZ%$u57x&z0qAFC8-9WB)l_>b6dw)HuwWtL~>X_>ITc7LUulV9ffx=-yk z>dy1NjVz=%#;iukr18d={e|7*QaOvpS(8SLvB?A*-6bwU^cJ@vw@mG(?$+$!fFU@+ z+|EPu8Guhl+ATlADbUvDE)#jc-^*Mc|9e}vjq@rms#02d#GtSD=>uaBZk%+R1Z8j9&01`2Ku##5 zZeyHU=K+V?(j}6e;YHYe`bEaQV}2|I*HvEdfHrUHfFlvkx)S$TwwvNQtjkmK7+d-G zc_6*XmHebSw?f9G@U%o7(egR(VabCG9|4e(Nw4@VGjQ|sYh9u7IaT6~>&@m9e!lUZ z%GKQ)sUI#gZSw%VP6|>;m%|<7Qj8lSY2Edkw8;Fh8fav9>i)M$EUHV9{{mcMLT@qzW(V-IYrw8vcT^?>=7e-Pd3k00@FR*(lll6@U z+^4A^N}%>YUXSO{nHr|Bs_bTu3W!Yc=yp=i`Dkeh4pXG_woXarpXRhcg)`FiZ zJekeq+%HN5PJDhM`u8PJmviUBrSgj0JIA)EbTLp5vj8H(3YGG}Y$ zj0ULFX}j=;77Z@fSK?@GU#*OC!AJsGX+Z4niD()wCOA~Hp68i>sKV61 zX0MRtd0g*QSus0E^W1DVFO6AC0QBiT%Gl~k*;NCxRVYhAVDL=m(yOyC2}1Uf z_8M)sGG<#RSbVN0q?tNR5yEK)iTZNF4Xc!g2?Wmq8?Hm_Z`2R^@8(v$)Dxy)SXC|Sy+ z(4l@@6>z-3>USBNX5Tuph09V++i(Byv+-W|GVcMtBJbUQ!J4T5(e-7{dPQrCUyRX^+5M|J1#Pj1J9Bkj_Ss%!px(0?@+MFFu`L9Bpy!DVSBd^@>*SYUs37!}Eh2+_%&^?rJ z8UXxUkuF8bw5`{Ln2ONhouiMi?RV2ul#(p*+CM#ow!0^%bb3x>4BxuLEOlFS3V#&@ zFS}SM;b|F)k%y_D#TL=g4=xGk62BMgtb#Y-{9p+QbV*TO5^`B- zJnGNv(|2;}wIBXRB~Z5s&2?g(ooiHO0{{+MO&|Ot=K(M6O+9G+U~BH0t9>9ah9$Se z!oKim9|MAmBF(V6(6;4O z^RE0h3R`o&{L{9Zo)bj=cDD}Hp4HZnxEGEt0Y2G|M%!pm;SsA$acK=s2<~h#d)z1$5V0-&T~Pr_x4zCR(mgqdy-jp|K9FqX<8xrIrjRyMy{uDh+ZytCuY0 zV3#7N?3Y@q0D)z?`3yRHoD=KH<2m(tv*(gnfyzn4ad4V<#ca*2~O!4#CPK{BU4gNL~*B;lHM7f#y0b9Yv-%t?(my-mzij^aU&aYN-muM}v zp;+P1N1SNI3b=5#$Bzr2*sg7xnC^J8sd<0@ORe;Dsw|EA3 zo|jOieP`Rm{B^g&>4Q{!XljZ=m(HE?4@~JhD}Od;;tE}XAClYUdMzg_JO1-q-BfAN zt4|lmka=E-;q~>EaAOgY$e)nhR(a;Sy7rpD;ZwBty>~5P4cJkfSkb%S@ z#MWDD+oVse_`2~Co|FYY>RxL!>)Za;|N0db;dauBJ>BeR48vwuaHb}X3NI<9Vd5d+ z6Ago{cMDnDj(IoN5fOpB?`uU<;hXEvjbdJHi_7^?cEanX{oL0q7z=%11U-u&e;b@6 z;U&)D`&xWhX#!2R{0fDFK=_2BdFLLw@zg4`+0;+&N-%4>H{QPZgNV|-n*5W(^4FoE zJf^He3aN4kmZX)+r#tY#K00C#jjD4T?5$?$C)pVsF+RWiy=+`!VSYXa(Iy+sZy)KG znpLsH&Eq~xZDF#T*dl{@l%i$eE0-iUQCA)3)cO6gUni1}T?XlEgf>$_C~tPj3TQ1X zSQV(xy`{aauWxUVQ|cRO1IjFsj$0F03jEe)q)*gWevC?jvxMtg5PqlVMFwW}Tro4X zL1)QGuO_LD&cytc-Nk{r2K}lJAqLMLKc2v=PJRY$usuf=WFA;UbY4v3{9To7!t25_ z)09pXfT{J@gJLLf-V1A*^kONfv$-7bY~{OWMX{t^?-1VG+iUFN;`!Og$mEM{5czgX zi|8Fgwnxrc)oN&H)CW=qb(EBpFa^DNKdJLCWc{mPwT2qK^?}_BVVWu|D$G`+AVP=q zb9AHD-DwpI@)%LLNoklnD1cu3F79w!uPO}AQqdmsJy38%O_EgAE_=AWj+=Pw9sjdG zBCXy-3Ca!p;xZake$?{|r_sK(@5K_t(R!0nE#HXwEFJK1CTK3c8l#vvTso+@h&==f zssHz)q|Cloh>fFP29eeF^cWZzVP)^C?-Aa&gFL{&U!*)>>L6RM3vSv-bH#l0>N!V3 zTBRgeDNG9;`PHwS2GkPb9Ii$CaM{y8$8rv%S2IB$zZSl`zK_OKFX~nw5qWW$Wx{53RjVfHZziK|+lD23H_ZyI<}Ryz`{qD}iOC-^JyS(Ta4M!9Vx;^EMD0 zhUk;&oSt7vjyqaXt$Y;D?<#^F=FE4b?(eH@2Fp@VccmsW7QZ^nGnaDyhOG75%-vj7 z(edw{I3w|_iDAxU@|XHy+=l#=v41+T4^Z+{aC?#UaLEivq;j|?&TcorAT`ZUlaJT# zQ(o}WQq`g3B4wEE>cgroDMP8Nley`)t$f>XzGTZmGG}j?e}voZbb=Gh>;A0J+mOL` zePsTR&By~77=^v;`$k9G9T$>n?Y20Qsf+mM_z6sx+~5k*n5P7GU4VECVNcwKR#vu@ z1skOoAV>z-kZ$MA*K^#4ii#43gncyw^8zZ;XCfmF%v{np&8pS4I=( zBc+eG?0lE@JugdjdQi}!A1Pbq*%&iWA z8y?)5QiwnMV8aBd(`$T~b);4-iM<7=(hL=2F%L8ql#m}W`tvyF-M({+{o_Ir2R@mA zP@HUnSt*5K{*s0S&qN#+OFFy;=o42Ax;}G;ql|pMAxq6Ybsd|~lC|e3R<@L(34CD- zAw##Gs=>25c7ZSN0oPFHrPtm#th#s?TuAiRW^0Mv@Vse^MjX7COYRB_u9-DgWy|_qmpznp5bIhto}c zJ&2FmooQk8#c!qtO+M3zU($iJie|#VpNJ%Rn77aX}2py|7XJB$L z=0PBJS@%7$`~JjCls)W~?bWzlp3%Fn1A=D;mL6lV!wp9ERs2jY#BUS!DJ5PJ7?FA$ zv_M?vJ!YA-Mcx9;*2HjSJ}7jV(kq&6B2f`kr4dDaK3{F4n%QKF=|nNZGc5y%8!jvW z;Pj5dwCPMA-C?TM507)I1je#CkY)FkwO0GGujIs5d?i_#!Fgcxvb@KTsA{p=t-AQ)V?!C~po_d5@}(+Xi8;%|B=&xt zhJY`EYKE;aZPnE~XZ-GCvF<=mtTjG zff#tAv?@D&(MdE|!byLW@lf_3XG8BdAE zwfUI0^ZhPXbZ^qC-K;$rT+aDbD_??e!X+WK&FeGwx0~oDG=gCC(nrTkSo1_!#WY`A zLt-4(hO(k2AHx@V7=-ND;}dpL6YG|K?kFh9(BLYN4hoZFZ^38izkqPCbHnDE9o__* z!&=DD>kli!W$;^t{X?Zb^L-@0{JyExms8E**I^tJF*uT%?)-||jUQRMv9|Wvv?*cz zY@_W;TPw?`7#=c1j?q3$@Ke+_xRR7VM6*-!-1j3`0*Y&tO1?DP7-OpPqH3g-ul|leYc!^rG)PJ@R#G z(04eV$a-{aYw!-iJ^QV-D%rxczD+DnEx`kOxl{?;tTVuvml9aYM=^ep;Nge3j zf(vk*i|-oQ>td$V&I!#nhkOjC_MtbwWhS8+O1Gdxbp;Vmnga7V7qYCXfbd^29|c{$ zQQ4x8Bz^`?{5VaG)VHWr+f+R7@5-^y`#yK$F)RA1p5adgfrE%?3!HBqy`i&SXJ+Xd zVOCtn0u8q~bzIB}pD<9m%MO@`?M2E_N~RmpzFox&nrv9PMZ)p;cWUbDBJ%U;6g-Sk zJwwmY-&TGNOLMRPmR2dXS3@J15j@y|wM8S=0&6=Lzk0(lt6)&fZz6T=Yw(Ptg?D-# zq_sfR;wbvi`$#IAf6DIbIT@A`6T+O}bh&By=Lbn&&ppAf>xLJutUJQ7-R5M|WoMM^ zoQI9c9Zl7U;Ijyw;pN}Xzt=4JtF34aSF_0j8rHD3KGt~%uxRsj3^GVKP3$wbl=1Nn z%Zaw2-~e*cw&H+YS@*fi$h&~x(5!_8k%Ob(tzBtgkDNh3xI5Y~CPupD!|_sdlGIni zwmz$eAlKI3OB!m}Y@)CFc86jF4a7V6)lKZ0LfgH+h!?g z2*up$mAAO^wy|@4o%>Cg#^SY?Kh}R88hzB(lrR_tZ~j0ijjZB)$tH&U+oxQ}1?;#X zN0+9k2E_lW3Fyu~FfTMOTjVY{Kv5>8x|&y9G@jXx%(V(NjqktiX6dvKY`wgVA*6>e z33MaS8^LyuNa75y>D%HTOUSzd^@0aJ5mgp`<9#Criy%4gefeZ>NOhPvXMPj)_qqex&9c$C|UR+qqYM1^mpvA2}g z&{au>*=Im-kJ_0^!GKO(duCIGdxk#Ud&&b~Pk%gp9BN^UX?KQjZ7^8Fza$Kfw?w(} zYf4#^XP0g?HT}}KtB4n9c?wq8!{x|k=$*7>xH_ADv;VnB*Lh7dY&U)$GZ*0g-$z+S z=FsXGbTa)YiyxitE+kd~ZqgdKqMXw&w=x&B8ZjW2-igQbwS;d6aLD(Qm7!bpuJz|n zJIn01S411<^EZ?FWzE}ch!Y%h5RXu`D606`J%G@ZE3649ZQqL$lns9S*t?XggZzw& z)hpT@c4t4vdw`d@zgVW=ZgCM(+R3$*7%SG-H!uKbeg>>7ObxY<5eNAped)Abb=oF{ zgoN0xU0L18^AC!u?n1`#C{>#*GJ*rV{7y}ek4>PO(KNGB#1s31DVsinDitl~gH&#+ zU9u>M;H^;S`#Ue&eWTO(q^|pqGmD;XKD_nw#!#6n!~Aln{muTDCI+&gav%n94cdgz z&s=c`UIPRq}4uejIe})%3)a71vj{q`x_wr=GK|wRZs6Rq#nV80$q*cvQZcCv7 zLi51&<_ZbXq{O&?t}@*(%b9iH9Z>~y;)_M|(A#a_Xj|D`>paCof95p(L$B-G;9EA{ zFd*T!?p14~kSr{Eu3Q9HP{Gukj-w$*2Z2vxpIH6 z85&jO@-RsmA0Iyt>Toh%7Am0j0p!OGIa4L?=#V~q^Ua82hhf@kThspFh_DvM8g~## z^}&4EX7gzg0wWJz2X;Y~7@1aZoqt`>R+FO5gVf>5tO@rN_slWN2^qzhih9E~H2*^1 zHmh~13#T$_UL3?@)W!D%6A?74Q8=pkz^Osbbv@m;lEW#|HKtg&ePG5Q%|Tt1l~qxG z!T2@pCiL(#2~@=prG#|>{A)s0y5?=oc22FSH*EHJyA2p-6-NvtrYBrsYEMM1`(fo1 zmA3$yurWbU6HP;UFvaco7ySO4)SVY!@>%Kr^sBvmPa!TB-((@?j8;$7%}uivWYAI( zv69fg)zG^GduvzOMXVlcs{ja>zL)|ax>j9*6eN)wn?no$ksB96G!wk(K6VH=dqM7)^qRbik(f&lU5i?0XA`fkue%2aV{Uzo(N@Ks z2&O4{V`b1bLFu)f_JC$oKSSBhCo`!Lg>hFH5;01&NH!_v7i(*vcA3(EwsVykk>&V^ zzBa)+1c6g9O5#l&Om}3O1@J>R9a{*~t|4*rFO-nB!}hMcCRUxd*HJ?bl0L9xP824) z+_5BilKV>&Ss@RIp$i&P@U@QxbnuHH_O1%(E1rbz|0jzBs$sW0$$K(y0v) z7NZ`&L=$6Az}$Sz^gMEAz-LV^d=d!VD8(3Wp`u;Y{LESYDSeV{!CF0`ji0ArrQnbp z)U=_WO6%>KgJ_$w8tM<;BAc|?s+8FzH~Uf5=+3p*sMX(EORtzTw7mUO5~;~p0N&GH z)|{`8D3}(s7+1q&kue7OJ5|y;Ob#*jAl5ZDh{!%5vC1VGhwZP!Q~KXr27?-O{{hj& zsMqe`jOgr(8OnxyqcU=b-X<-L*LTi}rssB^9!t%#2?*>o*_k3eux zZTil&e($p7+Ijvm8=O*~eG1UCc|{|1V&JdwPNuA{n_LQkwMFdMvM$rX@VWgD|5Yro zTAu^vtsna{3WMVLnqE|lb}u3;u$i?}&`ky=Z!&~LMyConkBlIV<_i793_mdB{+ z3T!M_ztLDD=uJuftEZ0s`;Pu`+GOH<~HPDyw}efg{92jWQr&j;Jz+&6g7r4oon zIDup!=%jp>)-6yFo;JQrmddyWwXQ#16*C*I^!J-dL- zGSFArNP|umXPQ0h{0LM~^-Gcn_x$2~C@RwCsDLTZlq?{p_U7rTpmR6BzGyXO36;0Y zOr@lC+_Z5=T*LCv7Fq{y4i&q;DGI}H;z}h-<5yBm6p>=*M z&k|~ye0(Ti{Y5w#ZQ7SH7xA`<=XE2DFB(Y6;Z0&Lak&%^B9<;dI&Bsx2&ir1K4lTU zH$B5L@-}4j$j_~|VA=+Hs;Xh7s6RYmL0Eh%x8Pc(=>vNUgo)+L-H$1-g;}pC@-H6^ z?f^#dq>JQZ1>?}+Ir6VJ>6L+OcGs$|Ovedbofg?wh|n{)o8i+V>#t58aQ@|C+_@*j zZnQ6>Y7V~qQ%)F$Zb^WJg$+>4yPVtoIv<$0S7ee~=%Y_vwZ;FV!qGt}>D1x9+a38v z-M=_Je4c3Te|xvwox_#{Z+&r4LWKFsO`7xk;v%dOm5EM_?OUYF&Qd+mE3+r0VvARB z10$xwOLM{NlX;l!(ir4s$B6CTo%-5ZjDEoYNG+q6VmNOHnTX}4TCqFUfdt$?I|aRk z6hNP(ZHY~`0Th%8Q!G@(RAN8{XL<;ivtVC0=m-3WUoE63M?1sHoC3f2iXFtIg-@h$ zw!+lsbLf7GobS&7mZ*tla3RSf%(Rev9U%Ze(gcY&2o2Q8x{p3~FKyP3C;=Wxp;1l} z3CbrUDD2D9Tp}muaI4tEuV!8j^#Gk51;memA9})05kLR>)InG#mz=jkFntN5i z@iwxAs|R-ClwHj3WYHvBt2fgY<(UqldqwFu<@5J!CaS5VV4f!=O>Jr>ikbwI6}GD3 z?q7>*m?lm~iyv-U0|iGZYhX@_h3HDjmyYkOhAV*a$|dEx`MB|iQ_`jP`lSfL*6L1& z(DMmBoxHxZt@*Qp<$h@x#~{}lYGS$=t+IUadun^SZgNse^;a^0dc4x&>v^@4uu@oux7dm?YAl|$w)0e?|(IP3Pf4vwY(a8reL2AoZKko zqjC!x_1xGrXr^W^@G?eyUN#mVgH;!qLXo7C^bxH4Y4ls{;Pt7fjgw_*h(A_(xVrh# zw@#AB6QUGeiOYNBA+Xu{xZb?ObLT!6rWO{b23lO(g(0f<4dEFh1a%!1NJEzxzJ+g?~VQ5-N=e+HqcAhd>bjnTb{VfN3!AKJG0=GgS3|R4-ATdP8V)meo#jab~*kmGBe{s|A{fUr+5>wnuKeY16 zaoV47Th>~7u0J)^IccQ4_%t&AHxz&_3a7sGhE2h;LorY-!+h>N3y1#aQYqkD6Te_u`I;Z9;tsSUgLS~=P=15tThM*}WFiw5&{01gR@)iBRqCu4HWD;-EAtP2w)S?QE3fNG%q@Lc{l;n-|J&uG%af?C-i{ z9jfgs7hP_~br!uhwvW~VVTPS@5tH$U2fpTMe*#eR-;K0|&iF+(mqxY)TsdChxpvdF z%-=`b9Q8wBpK87O{7x~asVTSkDgcmU=G`IgI#!2&9OQ(JjhzMr`k*s}>iK=FG{}}7 zwEz`Ej|F^Wo9B|Ww$9Ycl6Yge0=s@n3X1g)2O7kXbb$+(Qr``s4?v1H&t*T-{zx30 z%H%Uhoo|qVi;*)4M39`*n_X2jHAJ!%lG1>QKNV3?V3Nd*eed^@(^e~AIR*ireLjME z@XfTA+0cExF8T6hS`~BK>l0OLl^ynJQ2BmKi^tfUR-3C$y1*o=1B>K8lZmZWo;LuV znNT2rBm(jNXs$ac@F`W+L&Axt_W{lVe*y%5?L0)Sm*jb1$K0hvC+oKKiX5aJ;8$!l zUgK?SscDM(1|QN3_!Q&sX)L&nB-HsiKDzER^<(*{dOF5}mL`;&riiy_k?t^$I?|q3 zdhsblnL=wpfa>!+BpXNW1pVxCe}!zbi{VDoNWrym2*|tLr9?31%xd8*jEwQG^P@FD zlat-9hgbCio8Zq7%3jdCnkcM)^(u)w;IGX9RNtS5J*~A<=9~f*a;>$2W?G=^Z?Ake zes@G@hgyc69GtAo76feqN$o)Ofw1%de4|ak*x4k@Gca-m00Qfe_YRGyVg&6CiQ&ET z20CcxrMNRGENsL)7gXHWz|5A$V?P%()TEv%T}`_8^Kq2Xp=*yqAfEnhIbC_rO)V;44p@!f$0uxW?V zxA~c9q@NBYEeU=VfYX|^4uE!M)0dziqzG^#S^{2gP={(L#f%~_JZ0%r?It}|hj!Sn zvgwfFV@J9gtLkn*I7uSk!PGgrrpfc&J%zd=$40vkHGUQS7y|-Uu)_nQa@R@_$|R57 z)cbrkCl3t~0%@LCsJ;FDz!(JU{Un&Sg)9VYX-sfBx$OuY)=6<~{BE5TDyikc&2UI) zSE$l8vq;ot$W|f$TZgP&gGuv;tRhJlP$KV;oVNwWwfp~S@`eF$DEnQU?hB9@E;OfM z8V$0a*KJ1kS{(D!u_JE&MEdXt3y@p%D&TKtET4XL(Ds6aP8J>!-*zAKVyCHT-!wQj zk|O|L&$0t~*6wKF^Ufu7_7ML4mpyUTky!YzQIolDR`>MYk ztZ!W3AbDNW-o3AN>iooMw-!a8Ep#+Yz3D8Ngts}y!Q5A>!Dl*!dTziWCk$qP3%tcbpUfqIKQ%w&WXeD@l$@BW zd`i&P+!<8b25kTuu4kghH)1>O3CdEzhWhojhEJxu1uJG~D3~E0LwMZQ@phI>2iXJ5 zKoD;mJ=hu2HNblu@9IhW8*|5Xx=4{B@Qx#4ty$B2_2k7FB%V&7Ki`mTRNVg}GW4W^ zx%I04ejb8sNl(C84;aI^x7sO|a)D>-aH14~HO`X2=Nvf#)lt)4avWF)qZx3&zQDCz zUl$_2x5+=toDB~_sHxUDtgq`p8K2Feosq9LBLhv+tr}HfgL3>eCj9zoER{L8ZR3}y z`sJjmP1W~LcXbiv$4A3!zi11@fD!?IYp`5Z z#!F}@N|E7u@mtyHdS6!S+bPPl_;z`hr--UMu%n2B75!6*@*0PQ(!L;A5;DMb%ROyv zZQ7Glt1KIvCQ;E$ySZrO*3ycCtBBRn(N;0}_7k)(P1Wk1pZR{>T)p6l;BzL|0I7fF zkoSl0s-q6BRo&rmh9gWgFVyM=QNAt(s+IXQ=MyXZC0-o~(F(&UTp~9r2Wn#>s&rXX z9;MGGqU;s>dtO70)H-Znf#llx4tg?m!_CZ`!o}ZNslgJI*OJ9Qt(Zz&vj0hqtpD%n z4IRkrdN-Eg=TH9d0h+%cgb$M29Hu_1^hsy`iEk5{-^re-H=8CIr2%?S5K-A|`5X2S zdO1CT_V=YyChJ7ziDozM9BW9>z+5#3;(f`tr!)J&9K<-)k?iCw}|D7PeY`t?Kg*Lx*yNppjecfWa> zN=U?Hc`e5{1rUcVR{h{8-6$fwdqAoxH?2~nLwpWHVAzAtEA^=YMyx+0liSa_9l@Wq z^1y`ILwW%=6kiT5yN{N$y6=VhLa0FCN0Tq!?mQP{c9d&V+0ibZ==wu6HPMJl(9#RX z1c%!5Z^=3|9ssOU+&#q^p2VUpkS$b_)@UwG{U6>bYLfv5f_F1t29typLhz>X%%=9S zx!2B#g~~89aPTO9nc2Pf<;AmG@#(a6ic|B0E0E8$vf$RSZ(`a!u#DWLD7fr}2Jr!d z$znCvSFXQq3c9?~_r+TI6r?+vBEoxDt$tvoVb`y3_1uf{87L4?KcZhPL}UG4b=bpuZRMELNF`bJr-OsnjFP|>!GvU&#D3A|sg~`f%uze+ExkA76c$-u zMTDV@fKjmGQZVz`a`{Acx_yb+JX}ejjaOK@D_GMx^FVS=1~C-w3h?3gxswq;4f&i7 zhSXtS?HKB4yh5d&pu5nqPr%TTh&PHd6*4V*n$9H+3a_JHTMr6}!@s6@Lp}RRlzafk zq(o0V5x*Dn<}w+^L@c3|G0EIcPrz&eY7zyL$RFtg%?>nW3uJR<o1ZW4OLyCQIB%Q7>!A;;68`ZJU#H^r^s~ zj!ZactiOmq1=vJ#4T11h}>k@kSKmo z8j9&LN}6hYF@GP^+}beW%{k`TaPW+}v9+3()dUAKB`HVt-0=_fSVWkrY>c}OS5Q&HUIP^}&R~%{yGcl>|s3B2b+1rdMisw0Gae;0k`&p&~BJMRotYvTI zFK2!F9zv+;M*0o;>tne2_{)~P=rp&ldzHRm(``FRlRFy9n_FAbg6m+wy-l9A1?El) zySq@A5KFzUZ#seDo8p0|6ct_XqI+=6dG;fxl)F-OXg|WQd#3BM zkE`WH#>Nl5B^(4LWnC~3*?DUr>s9(kK9^j0h?Ons0vu!Uc<)B{9fUF#n5@s8EXuoi zf1`fQ{GW}zXa%IU%%nDoenVo7gz|D4=m*uzbD%&C7(6{2F4fo{Y zB~H$N2g3A21jP8PY_3TS5a{F_)&LgL&ZJYE-k=|x7Eoc$M|13%iu~Bipz4)?4d+rq zK-2yL9%BYu|CtOo;O7;wO#5{ONk2W=Pg|cV{6b3|2Tgthl{#mehcoj997>V_DN4Ak z1ey{tucx1+_m7=*z?fGfGR~**|3ysMQzvU|Q+n8k$Ox z?#ji`7V#l0mPE2)S-@^PAboLz+a^&XJ(=A5S@q|}8=*Y&@iju&P@`iG_gkT7(OVRC zlKnDqQ-=9C zdm0n*ndJDIzy7l{8x=Rp{MiEd+MVgI-pwitf0@B?e z-CzMqhje#$N_Y1LHr=pkeslYr=bZ2R{sDSjz*=+NbKGNm#zTUlQDDvLTj2o7A;D#Q zluRp@jx306B$iV{_<6gy=2k@5$>QC$#P+16{HE1XEhnX<4)^f~Ayx14RpGk}c1o?& zQo|RGa?z}ho@qym5fd0bc_o-E0ZT(cv2pYyiY0SgTHWZ*OVW^IFnlE~4QY9b)VWG6 zVB`vK*{HVEF5=}$5IDNo72b9cE$ua2)0h67a=TQ&1ch3@pfJxB6@32aTgn~4`|5dgiIJfh;i)Zo0r3ig| zAD-UXvHrlMPmC#yf$S(=&q|)gyH%bD(s!3YCP=4@_j^k^>l~IZ-cUxI73HLV1J3+Z zrW&{loPOv29aZYh@GKaCaSWvOgCa;fg)+LVeb zSm&xXp_Ap~Nr6yoVH$0dVAI18cbC*{w(IL98g*bTxfBFmWcc(DPk2P)^L#O30!!VI z@v`;C#J#d+2*sAb3DdAOw1Y(2lNW4t-40e`-nXfj2VT`U|MpqApH=}$+vGjZp`$&| ze0?3bUl9<(3avY89+i*PTo`|0j}d9VFN$1Z2*w9tJbExmclmMfN*2>=dp@F_ zp9*txn%{YUMX;CYPGD919k~#T@d*Log2e0a#*zymMEdIm?9=DB zxl`eXIrbaxuo#m_{=3Z)IY-|4d4{>IPua!xpt!)Wih4@4gmU((DYmhjd}ju*7+hMo zrwr-8v>94YxKgGHU=@M2)8`1vI`Wo7a$`{)5y2MUFHM22S=E-a6*|lMO%M-eN@bC->ha<-31oEU)B*RXrI^(~J8Z>+O z?)?tB6!SFHRVq^I6JeXk`QDq~)4ln#Fe)bVj3?};T21;!5q2T9e>Qaky9NVJ>Nf?! zDD6l4t; zufF^SSwLGX&U*Q>JxQeDc@P61pXg(aS|FtX=6|wBAH6ZhRgGXOnDbv4uj!T^BkMgl z576)82R6}a31Hiqvs%_RrwrR{-+Ua}=1;A4dd|##%>>4c#v^KxIcOICv2RbQe#zgx z&G8|+=Od-2?hW|3|9`wVzrcp3QRu(2I01jxoXBk?G4{{)YM{W&-L`JPmiJ`wcGr3# zShz+T8`4Zg=x4Lm+peWEgM&e8%ZXyS&Q8ZWnxAV2>&8$h< zD_0ds(qbJ*0Tyy%;!`{GYW`$=HXN@>5s%)ZP2)CHfgXRA(cJCi;}73xx+tiku0iHC zZ$L}y0Ur87s+y%m^#s)55gsvR9h{+}GAsz*xPyUaHJli_y^gC@aVG z8_G2_1$jNbv^(IdfiLl2iM^i6Ki&3pVN#mwa%*I!b$apUP7yxN>*B)Bt{&|AKvpiJ z04LN|T0;i1|2~|X8o~-j_ru8CYr&r$E=$D7$q(vL=rY^*mW94JoZ>bpd8$h-etkHe z^^x|z(yzZaF2V^!X6zqG-=qAizo3@CJ4WtN+Do$|OLkzxy|Ai_EPlHS7kNKdH!4U^ z09~Bg9xzTm5z*zKQXL~5O7axY&<`AM(trD^2WPQ`13Ud0?$@8n1lZUqK3Ke&gNe$L z^<$K=F36NCFUYldterA|E5hXkCAzXX28xI9O=A>3&2;Z~7_W0av+AVgM{eY@RP|_- zi{*Wt5G)IufT`Ut{P>$I&gLie2O+#>JnZ(D9eRBb9sGe?O~#4+HxWHTA6N0F2F(8Y2q~N89N>**bMhe1Sdn&I*hvUjdNNeVrmK z@&R4TO8f(FME{gY&}5f;o(v)~ea$OL+$q8lJeXF>Qu%mac8t{D&yvd6yF>PmeUu(J z*AuZCGa@~L>8Vb9GJz9OBy>b=&1b@Ia#Yz!7Bfe z*B+|b$_Su6BImDOQ=(E*t@k*H?C-iiT|dLw6#=>Wx)~x7b<5W_3j!l=VeCoi-+GW6 zCnHv{nrPG4hU;q)^J}rs>XRsdK2Hsw~IYwTyPj5n$VGj>!8>)>bgQH7{6k4 zX)&{~_;Xv@t-m`GlY|#!zr~itCbq82DXcijo1f43Nj+8A6JjF^&$e+e-FI(6pWw3< z#vAexbDz@xvr-Dy>yS;7EIhHbglf{}r8uRZe>zovM?sI07P8>Uu*|4Sz!%K~P`t>X zBkejzOreQy|io37~;z~sHpcDOrBnH#_ny>B86Er3! z-BoULFHKfA*Z!buB?QIiJ%2zdY?xk9P#ch1TfEAdOrUD&$9W+uL6Q8u0Q$wMGG{>l zI?$l5rtDKoE#fEzj-CZ~ehH9*kuJoKtWwzR#dcFrd)M~;c~$Fv_?9`YOl65*`tZM? zH}KR3f)W3oy9tPstOB3E(>=ugeSv5;EK>u8Qjk`0#kQ%JHx73_AE{3}D z@)XpA?j$p3reg3YUk(u2(z6``Kma=?5bk_Zr%=y60y}cG6X8Gwd}5@1HozHQyrG$h z@|c>LxR8&uDE=bb>kgIj8neNajS)aNj^~;Kq_Rv^GtAAeBcXx16-NUemoSF0(V)4N$e~A3UJKTdvKqkuTJ1jgm~`mS6Jm0<)zC8PYaA5 zsJ`PSBTngJO}IA_R8fn|MPKz!g2_yWu0CuM6y|YRuzySyW7B8{@PbmyT8ZHt+UV$L*)Hs) zf&}C$lrud*LJEuOXeYz1m_V2Nje>zgK;T>^0@pB$nPwKCWu9fm%~dy$q4qnjc3CS| z^`iWa-@X4v3ClIduB97iSxZ)AT@8kke)7HEeKo%aRgA008#tM`SJ}91gQ92fX%^BS z#(`N{GN6?H;`wme0}d;-dgkA(T9pSSfFG5c-+?m`fH*AkWx>})h9IKf;dr3MhJquq z%4NyorJr2hek^hQewUu}NdK(a*qp*mG&J?^;fgo~4g!Ew;2`j--58&esse3(%=U_a zab)R3m>Ey#1)4f9snf@HpYzs^RcTyGD{$vOjcC!BY~%zOH`phV38bl<5>v{p2dAj1 zSX70MFtgwxiOg9%vJ*tOJXudk@=0Qyi|;kc^@hS3_2v0~wSk6%4Zx8+b~tHAVnZ2# zc9)=>tUI#`QH7!1BX(*p<&Yf|xSJMp0#$mnW*aH8<$MwJwcp%)V3;;uK)v$UL#Y?m ztj%>{8ptjnT7~WR?tbPrss8FL(t6dNG#`)JLh1sOZrn{>4sm*e(d4eC*&XPtJKk&J zaPj^=;68e@@+)4XON%j&{?^T0+xG^>-93yPcTuv5RDxaFB{{S~T17E)zAG$s#o6-& zpaZ&ORsVjTr6HbG5z7|0=-2zP$J0$ui%TQ}FZt*1=O)!ffs1~?b8LU_mJX*X>mZT2 zpyx3lMcL~ez0>8tdb#9$LRL0*cO74bQ&Ur?6!C14DQ>Bej?|K)Huf-afvo&i2E$Vf z3_pMW6wd*X@joeHhWxr@*JMUUMrlrvU!)9Zq=UYYi_Of$`2-E= zi8+lHSFO%6^rot_pZ;Nt!;9%u(wDQk26&F&u1=6F6({|fR;3Yc#I9kyehxzceyi0J zp-LBd0k)!z9EiB+_eCAJHbRyvtYW}!tPthZ@u7P!vN&L$|F;vuJ&#(E*Q zh=IzW!q0g#5ALa~q0=eRv^9g>Hty1d#w(Ox4n-Mh@`UpnuPx{mTmP3ZdGNf9+#r#r zsq797!KcG}@aS1^Ik@ppAT9xNrt87Fghknc@y-Qex6PxY-}i*7 zCEAK+c=3;3KeQ=u58T?k?)c8wWwUz?zQ>qN=%%xI+sQd+bH64EwB#t2<9$sQhljs9 zzipk{61BJY)hGCQWw~FNbzSfAjD;no<&b;SeVX^y&L_a|N+KS2@%X$jJky8_kmR|%$ShwwajgVVgx1{@JIGX;D4VUeSXusJ62%Z+U_0g^g%fcT8uW&+wFrK{-kO@5BN0@`$L2Q9q1F`7i$! zDXn&o+5lrDymSbMxaFsIAW?bd@^mG(lD?0VsV63L4y55%$ffH(?Sxd)(ePt@2lU zg9gANCm#7snD@Q7c%Z`mTNKKmQ9gNC~OQX&ql{%=yG$G|7? z7Ld%waW7RLuqP?l^%%Ron(akb`!7clm0+;Whz=Ga~%>e@8TT(CVc+Hb_-ONq~aF8%hHxxsqK(u z$YvU|Rd>O}lc}Vj!2pgV4<2g34f|S_ZYmTh2=|<7h=o1J7q(M+< z6A_J2frsBvpIqVJ2(jc+QPTDw(y2<&&P?2xVnucpb|28U9BvFI3VA0)P5!zak_2KD zcP#adARy?@WL}1BEI!d|dP`7drKF%i3Wr^Farr!D|6%Yfi|GGYrI6|8S1s62Bg%`_ zEw3G``XSw)5b=7zT`rb309*Cy=wd7F|IbWvp#Thbnu~wl8YxgPo;B19=A=>!l(06n z5JVz#FmOAomH61f_FS+rPoP*f`4hdJ<9PV>J`@%D3Oa$zPgvnF5* zsj^}=_g%0#5hf=$Pql{)Dw;d93LGJreE(UVosVne1Hfc>Hmj-P+hwBEk6P@XWk@%h zJ9l@X9XQplZdM9SEepHn9g(>!EvdZ6hca%*b(P2!3cAOsQA%nc|Jb}fH>S~Y=ITi# zxFc=1t&2T-5D|$41VNj~GH=|n(XzVux*YuS%PxEd5qh6oNE$PQJ}}Lwvh*JQ3S_GE zD`O8Rh@=O!)Z5(abMGTd0(OTWbF_HA_2)KGyxB)kH>gX>Bw9Py)Fx^xMI*tOGh!A= zrYsjDwyw>t$qOaJ>+tf=uZ?01Xj?W`!30pNB=H!24Z>`UPEp-yu zQt6H%GMZT1j7&_M%WXm6jK=)WA_<()P^Wy#bbzir5a(k2EYwgbFXqliNglDn{(zjy zpxM8>Z*VdQFAOYvQckyd2nEP3u1nJ?RbBCbe9_&_5gLwd@|clv*|u-Kk1NS^a@1I? z@cmWua)aP9o{{6@x1mNbQ{J1#4 zS7~C=Jo8HUcWiDQMBZtf;@oSx)9J#g6Cs4Bqk~R(=01&>B!Fx!aA3i?$4( zOC3<}Oc(DOO5z5Od?DyGm$HqV?8>QgVj8MloG81pp~(Hh{j@YqLu&iiGekHPESU*<#PGE z4tu*fQ_XC-c=M^^1rdWdXZcB_CL_)U@Mw)5R)jqV9DvN5G?%D;BaQXI3>&V%u?co5V(VSZ)^5! zTt+C9PEN^62O83|TrKMCdMI8*R(lU)Zlz${~WJ zLY<<$vODSDfYug~3rQYEZu>vyuJ0|b_$OCaS3&fRjT;E0ZP8cv<6obHNGlI|S@8fI zd>xi=Ft)CMra?5pN&-fYf8tJSU3==WJrZK%1SPfVGEn;@!WW@UBo67Y2!TIw@)qf3 zf0ig-gRALp^QuC5ColA9)wL3&%8IN&Y7)B0HijC;^BL)ZT#pA80rufvISlc|{40U~ zH=yKXr-RtSe;nF}(evsGh6!R(`Y2CvD+rJ9!g&VyyjRsG6?+Em*J~C$lan>byj-X( zLkrIVnID%meR3s*N}O2PlI1DpM*JhIo$RG(*Ah*NNY4a&`12O3qe1txArcc}S2s6B zOQn+jac`sn_e(K$0sG=5Ii0Zf1_76>#x%PxmOOG&083`_BrBxgPs9=8j72CIdH}_| zce?L)0`Ro^+2+^(LHHgBz1F)wFtH<;?NY~h72|twjO_lxqEFpn2k32xpu>V=celm_ zCQBu{X07=KP)VqH>w~C$z@5h>w!HbZw-Z-jqU&Iz&JMY@j$V6ML8^>;E}jZ))<;NV zMo&TX&H6maEA;Y);914tQI8+?vD?^nP6#Gj;t$I;j9GxLdXm`W;wzg3kp^ykj{)u| zg;T{*`F0p0I{d!YBMzNO3oo(gEB;Y4n?k^oD8vGRB$iM{A-7Rse~OhL>?|NKNFG>L z`LlWy6cfAFbWI!4%-Ys(KUD_7p3)dEW^98$;7o+nkJ}}5A(ab90ucsYX!lEfL z4u+$FPEQ2`WP#Zd@g*uIt1nX3R1b1~xKKgHmXrZAuBmrVEO4#>erih_YjvD$UopRI z`=uu!WDxFsh3z=lh_t1yb)$FgfZOnCdH%D8dKS3h<1X4)?!BWHWG960&QT9GlHc>3 zoTRO|aY~IjW4C{2 zXTI0oe|eMZ0E!*`FBBUE)jsyyx9-8N*tGO?4fWXXiDLU7O=LKMFnfN^3oz8$;J!Hb zKj}``uB(>Gb<={}UmsUAFTuADtwTei*#%Q9wSu@cXz=k#T8)2wL%oa1tK$7;wojXd zA5j>N43#wwaB@cql$PaObZDszT>S=C{UT5DT9ZD6bU@4A%Olk0Q2LQ zYK#&09{PPjF%=PN9TlvAQ0Y`3Zv-K1)b=!E9G9LoA~msjJBV|f?%J)GTsq=3_JP38 zOJQOgx*bZhG%dIy^X~eS%GuZYh79-s!QbU$a(|cj^=#D-TatF2VyJA>en!h5(n_ti z1w1WB_d6UA)?CryCnVTiwu>0o4|^4>lVM3>!sk<N*q|2O?*8H$qc*iL0t+&uXu5Sy?90)DCtU$~+7cIv=FiPmt@UO+eyv>UM zxxhL}u5tdV`Nr3_df@$n@PsR?iLf+b`0GV+KmlPw?B@W4ih_|zZ+Pvu6v+}y4kR8} z@};Dt(kEh6FK?idN-PMT*>JjK6!W7;zJ`Y7iM!$AmU&3v&{mfL`i41~j(Tita+k#B z{*!#alH$rkzM8t4L)7BN&`Co)FAk5Bs8@>X(D)r*4s(ib$04JE)hxUWUznlJ)mpHS8f5CE>M2s?ktz&u!<55`c;riS0ivS2_WOq*Ne2kd%0(tTnB zR_QM1t07NLxFLrE)e{~Jt^+LmE|fYI9fL>hrC#C9r{ur(QZ}Y6JqCD-Kxmimh6nu+ z5w=-2LEG<(26?$Cl&qjQfLzi-D9O}Ybu@yrVROVkUB+>}Xuw%T< z1IE{YC%wZ>nmEk^s*{TEX=rG6Y%o*NNQ>`x@r$T?rs#}t+|KKA-1^>-57s=fdGXPG z8@t@wZ92kB3oGWw;{8ZYSXr>S?|HFv8Sh+Z2d}xPbe4b%#f=pnDH@B*?N1oPy`3Ep zTjhdT_?;u3JAL*I;r#4k*$h3!UxRhyc(PM4xkuokqddt1MFBzXI06Djle{ecxJ?1o z=cW|DHjDH00wH?#YEM8?)}|(bq-s>DM$hD--2O|73(=of-@Og!(PU76TG|~zJuVJ@FK8B)-YiPx9_2{g1oF;Q zPd9S@JlOViqIk4ZyM8~{94Q0vsQdR0Zw+6^5o%3VMT4>i!-ak?n>5!qNB2>wPrBZK zkP0Ge3T|TgNC1VT4r}Q64(bA)LLf#Op5*0c@ro|0vu7z8w5ii#@BsN2mY z(kjRA^^iV%_|72J0L;AyZGdq0Ibc7(?oag`0OzC ztdY!#@`mHHzwHaYU1VU7dhK-!LD1Fl@_blEn%_Gkb~t#HR8uLK%QUzVl?ja{nnYB^ zf^+j`-=7gj3fNu}!i@R!JH$`>>;AAz`56#*PJqyTX-nq|p~w1E4GyO)VIv8NJYS=t z$bg-<|JU`z5v9B+Yewmioc`^ zGmXA1M(Wt=VXYtVsLtU5E?+6Mo?RPaIr&PgrbLN$#8@GT|LkDc^SZ&9MqwqIslSt6_6H0*1-=X(EwBZwHqcFlqH-+*PSZA|pyH@s) zM)`M(rjIl7Oztisk3epDE8{ z*@ms}ZrE>LJ|Pe zgvtc3pEDEt8#%umT_-m&Xz%g|bvftMhx&8k3mlD8_a|F^YU-$o0{~e~AMY*bnPEXL zXCXWKsk|mPSN9#d;fT^UB`&w&vqKPJu>hDO61SGUcCvsk_t%U$_3*{yrd@zvuv(kRl*DqIXNZ=%EMgmVZK2FNR>zA05Ry`xU?a?X zdxW{F9{JzU?$$IdK{35~<%(Em8g@3?!*1G0>EKz#ivPdtiGiJ=FPlz%_jh7QVZg!+qjMr;XbKq5+pyz4~HIlp@lB zU*}q-Y35c0={os6ESf%=s-Vb`vj%0&Y(Ryf9#LDJ?!Uu)_M63D%8839qYsmh%e&tMo5*;$yF2dSp$)*(p|YA>76rfJ)IscEd&Gi2);A_ z$1%`Do{=p!G>D%j&NRa>=W8Qsbu{f+W5UL$37<< z7f~+4g@@a6kb;EMP zPL3D5wJ7qoaLGCUa+Y~O6Y1uM+WuvBTCVbG>Tz~%W`eHwSR+qp6PQTv7Qg{qHSApH zar&si^x2xZG09)s5o*i*6VKvogspy>9@i=6;^6SqKmgkU3%H0$hy}c_r>b|$?VSbL zSN$5lDl7<7{=Ma>3oPAWP#Sio$Cn%Uq0HV6TkX#zz6PNl(0llu?5u5yLSLcL=kOz- z0I9@FDePWLJXi$zW&r=&@GCzBFKp|Jdw+vf4@gOd%F?ppf-N7e*EGJ_L8*I5<)M(7 zHJCIq1gvCUPiz*K+&~Z?AI=CV`T1fbNSOYbs8F}Axe@a~so8@)2~Wy9swG7A?5U41 z+LZt=|8T?AWIxopPY*A=s@T)8?GkTp5y0Y;+$1PA0Pv0UxZD0l#VZR-MtL~|EwbWG z2CZO?C3ANhCkFoRa{Y4F$~H{Ou^{8*U4~EXub0-WgW(6nz9viH9`0~6@nGSd^s(az zu*^Sji4;|FN1`+Us4?s?%(eZ4c(&5Em+0Zh&z4|H2?`+ml64U%iS(MnP8pQE4(rvrvL)1qIRU{<={E4EhwDNe80YPagp5 zh=hh_V5N3qLUr_4q4xhwtV4`nf;JcYwk_&EW8${5?Zj0IF@_@gKRP3^9pzq)0H!4+ zWqe&O^ZvBhOa+qpPZB=!|&M{B^iM7v~X!btwh{OS$XoH#Yg10wNP*c z6dqoptLlK&0E&5zx+G>YWfUCKpw1nqH6SUIQb>In2VAh{M|z5 zv+A?A*S8n8qdHZt^Wn36gl)Yi`f5;avdG5ow(@y}Zg-)qO_0pTzP~Jfm%o~ZpMzU^cF?7(x&4Pr^|Y=6tz=bo8h2V)tjF;A1f^m zQ!)phoynB2@eI&5a=oQ(q~m4$WX`)rx{$R#@E)M~|1@Wz)-f0jqi=Je8Wi}N;0|^a z)cp|*9Ptb}pnBbX!m*7HZtroPQTIG559Yy#PR@_&VZx6(3rzv10C1$ z3B8FECN>^UYQgNIY1^Jjwb=j}vR--!g#AgfammlM&m^5Bo)|=A{cHFbAS5cS>K0q2Rgv~L*T$cHA1!#)l+UOO1y?oYe;2Ddq7g!ncH9A>bY=t zbuC3g_hrxL_Y1MSyC*zTA`p2-GbJP7)S+NwLzhge`hD#v&xZ@uh+~Odm_3dYMClyM zT2ut|OaNm=L_`FMgzA2~Ks90;9U&S6ixlC(Epxm1Ec48J>kH$*9!gNN% zxty(??%^8;`8A^SEiW9^2u0V_0UIGeiMPU}na6UND<#)QKyKghpkBq{z_&{_y_hAw4r}##LEC+NE2V=S{qTSQ znar{C_ltiN2}yDGILpgm-((L2P%VX>q_yV~F6PisKdxUhV)hbTYWNvhDr>4rKgk%( zF-dV9ha*PBzb;4e+v{UF3M%s7<~e5N8jkrWC>+5jDt>)<2oiD{XYihr7I52q7`@}Z zywe))u#;#)>Rnt}SwS?|)z{JVxUKg+e8$F>i4d_s5v~}hDrYZK{MVR+wTR5WrGB~x zR`4W*8(o1o1UG{*zSs70`~t&JxDoc99{tqS320n=CyokqTu!5Olf}l^ri)mjWTS=7g@a- z)VmDi{n{j6s237A;*8cwChRJ-QBxc|zBi*-Y=SpnvY|o=B>PD&pTfjC?wrDmtK_@u zSbXaFE)+`Ku~Q@0t~%!ihszyKJG-GsXo&L<9AnXG>9u1xJRP`Z5#gon+p5J0B?}KO znWOgWST2Q$U4Q+Crb4cF>`d9qZlL$Sy3q zq=6$-;m)|5kC&{FFnS2vG_52C!f@eFk{-_$;cwNn{_dn2YseK!j`YxjT9eyB@29!K z-;ldT9Dx>N?w@oWR%JF+ZKzmDCBReQBKbD`yop~JT=V}h?r>`<>Gg$CtDi~z^Gd~p z?)^vs(l>>l4l)idYi5&A^>N3fcbQ2G%5~&X%3uIwVn=T#t3v1F(>@t@7ugw!L)Hsm z^GR-+4w>MMe5I{xFO+@6Rzg!QNLJ0wy@D{*8S683u{}`_x$Qo@sb@~9tE)3R6zLN- z9hkSWvH}OwTN5^_thi3Y@r6(OxanMf6+TJ7Mu7#DUj$a85wm9XT3_m`{5yQFFrj@? zYJ(%*cXg3B#KmFk*Jv^JL=RU{?)(4{CR8ezp6Q&anLxY+g2TwcgXT?eZlT}jxwA^Y z_0a6+q%#uKn57iAgy7QoC(p$C&sW0t&$I5aT4LPF91Bms1sC_s-PO`%U|n?BNZ?gk0__J zS%1e~`&&IAJ$mw~N7`ZMp`6dkHg0D8sS@J4XFwE^sW2xYCx5%`brpeFVJHX9FP+S9=Lc9y+!ZlsN22Z$UjzmPe9!74<##$^en3JZ zuck&8wsivj!m97J5e>cwM?JuQpu8i0T^F>q35ZceBWNuYPAqNsmK@x*d2&1WWC&ww zAtKQ4M_j<7TJnl;oa!iVqp!wjYl?2cv1h(5(K(~7@^&^Yo%yu$$pEFA zI+ENiA$|Z|%9A5lZq;%9nv>h1^=&#qp!c0~f?FWv)U>eRqi|=RHhi0ArD)1XJ*GjL zRL!LG396|4-cNW`-@zSk7}$#t4Bv$Z1kYnO^^MEB_~5u`0?a&AvnAW}6P85U=+2G< zG`VaIp7n^<@WS6o>1Vf^ATfLLdfdcAl#BAq-iO~K=6NC3h>Xj z?4l+)lg0MWu^D6t=QEpP&9DT!9QFxV&;91}v>I{BZoko1O=MpIdNQ($6`=8tx{+!N z3GrX=KL>D3Tfgbj>S%bzm>KIzc2_N;HN5}|UOU^-K zslUo+m=+d!m#y~rq>s|Z)Hd4|@NhQ{OX%Xc+o{fq5a9E=(VV5x20wQcCb~i)x?+AO-$bLR^7W!h zFB$A^?b@agZ1jFv%9e_j0Sx_1H!a+(cjY%A5vQ!H)Lr={D|BQ_Fjvj;8fZKXucpU$ zJuwgo+SaIhHy1}+Sq_(dPeI?h_K0>V-NxDHAPwg!Z+b6D7Ca)_`L5MRYY+0@%2d{pPsu1nY`@p`IJlNgOJZflKNkSU0vNjZ9d~D z3intdvpqPV0cD@!TFRG20bOI=v_?mLl00U2E#hZ2pY^)Q^u7@;T*$T;084>WLN8dD zX>(g=%ETAf{U+X3g5P@JlnizOdSi~QDr9y@-@5&!3;Qv}Y>q`l#Q|lKz*GYSxI10( zb2#HZ&bB(6N|GMu8(3szWK5%-?%T4(u_{T)UFn4hEV|lFOWVpzu+Rl^Rh)F~u*Dkx zVu@;5)Miw=EcT8YoPD-u`1xF_Na=Uf@#ql+=QK-fOyxvj{Faz!;|P`^X<+CT4ENK(*4(OQK|xZ^XrifGtwPAt-T0R7}iulK0x0)n5zyE$xzZ zFpT`VU_=rE%D7hdx8<(jv?*aQ_Mubr$?VF?7~LkX{<^Wv7DZ*m0V4beT!kaj`8&xE z?rrXi4EGtJ^Uo@sWmB2XD*96%0zeUhLvA?Su;|FRaus{3OIY9pcTvuwJ>SVmK`4|8&H)m$bScsW zSwuyq3AsDl2`M*t^f+4g`jFzYg0|gF05B?q!`ArX8swrMM*0A>ntft|6#u)d0qP8Z zx{#N=lX|Fx;|m1yUY9bKOqRJOzrjvvCP&=*-<|l; zdtsuw+T>nD-I7vTl#A?)mM26CAF2E}8#CDd06Tt9nOKKkqLJ}7s5_#V+kQ!Vxq1Fa zY;|L)9f!(DWEFTdy%-|^8%1#2MYnLiUfOv?DF^sf(6TGVRf}zxHTG!op=jMNY3B7? zcGi9z*SmPAdZ9O1uq`|6m_61+Rk!EtJIj+5*!8=CI@aSQgV zsg@Wwz?qZ1Tc6LfQ1kbU8m%%2;zBl-m?4xFQ%=a~i3{bIfpj@uGVIe_eWAA;3v1XV zFMLpF8~*K)lBB^T_pQmesS*-iD- zT8B;QT>FkH?d+Beb=a&^%ux^MfbjmraIPMm1d%@tGQohqp6QpW5B3ID9RB2mH;X8~#p?Pz#D7_N4Ege(Id1JI2t^kQqpBXx5hlj_3Z}_`YR)3~|Mm zy27%;q-nJW2R5N$VK1`?4r#Rb442)pMEnsI(jmx=lyG7>FR$> zz7{&XN0kUgNN~EvZ#e+{<01;Ko$H$iNrDrqJi{%`ZcmNdIXOu5UucSHz3bTUdZQgt zvuN}>RA-tkvr^;CD-1uiZ95|lt3-fgc6IOzesVU3HZZJBs-oH;7-QR* zP_}!r6H!Gz_4;@0AhLGRTAw7im(7Hxg<9Cz+Z#by5{Q$djfZKuS}cD&;Sg_m8#ig~C!ndyv-*dfw3ytbFY^gG+F-iI#(? zKllF4u#%!&dT!tVL?K2U230p0)J74OIXfGh-}%0{uRc;{#lsc5g`1NTc=(Uu>bS=9 zwRrVubs5>X(0VZ7^1C0RhE2$$155=%X!bL5qe0(N10@ZR8uZ+@RS6=@JLJm|yuDg<1UJ3GG~Vr# zL*dREl~b@Np$}9;lN9>d8`gB8G;2%|DI*z0yVPO4{v4$z!3}zUQlOBakaG(cUx8O` zhrDRqhj{YUj*X3kPr(qg(BGj7%vGucQ;u$_obhy1ID1d1(-&hYSN#riG8U1~RTt3~ zb|oXe!ZP#vpL?6n@J@8cqJlyuGXDznq_0WK5)1Q0l`N8yk~1LGHTZ5tmxuo&eQ`D4 zjs*_ZvVI$=f;Tcy75~6&=``*k>`+JDgRFO-mezVfWZ(5orzF_jYmc)Aac?&EO|b%nO^7VsrbZHv#TSrYtRFS8HO6na zQkwnK$4nqKwAW&V*`oD9nY^a9R`WOBRhnv6vE$x+RhYAbWG#-4c>*ozToW)^p#`CS zea`M%F!Dhl^P~M6$kYxhj**x@`c=L{Ly8rBE=Z^1glke+YafR zCJmq7w{75e^;w+UH>W|CanaNTCO(U$J}sfT$3f5Z~Yn4*=} zMnKYsn#Os5S_HT??DvtBJk#niqINPaClm{Ntq&teP_8>w zDApZfpUXH7s%OGk%|02Iy&t4o@coHfEX5k88o8GD zSYK92XE5V;&iL^WB>AoVstU%dig88zSsaS^y%oXm6*e9Z8rrMP>z~Ll z%Y%ldQ`Xj6>bez|G+J3a8_bs6+WN;eP>BHIsBxEHkpTdU5hZw8V^W49Br+HbZUO>3VN|}2q79lFT``O?^WqzP_wTZM$ zP6l-)*D7Io1rcL5vOnuxFV)BbHBR{WB#l9c>F*Gc7pauhh#989i-{~44uCq+ zmYfqe7WQ@Nu}~Ew?y)rG(aozwr521jKx4Oxe59KUW#UjO{JPgXr-vSm1?5 zC*#)P%IkZ1vzSMMJ~GLN^`)uQ_=}afluJ?5+g%1>Snr;?^o}(x3yjJ$F?qy!CLVvI z{oX91WjKgmrzq~7N9g(LKE!DEt&a%jrI^^1JPt7`owY!HBLMtVfIm+Am$t|UReSn* z#;Be5oa%rE*+vJ|u`RWSBb8bolX$JH`<39zs_vcA0`3iXo?X)`tlxG~Y4dcmT=&dC zA-$_N6l+*WT)mY+{5Hx-U>@sA(1u|bP>amI63c8L!Vd@dT56v)gc23nY0)gCKZi7R zJj|Vq??oGvX8%jIE$LpNbu!^Lw>C<@Dem_}7}-trj54;!(C;-o++{9*y=x*Q7+3g+ zemq}kaN{EmQMyI?-Ye?XD~v~Otl0vNM%cS!pp|;9&{!ErH~hEyy<|Hl5Q!+ZqB5$^ zO&NYRLpMVM4SRUzaR*ocfE^Yv^RQdGakMV@`TY4*D-6az?l18ffUg`cRLebODnXsy zd_$qvS*0Fu#|!ow>SYWeP1D=x*?{)be^>!18i?=xd*AyjChyzJ*rhh_0h8>IYit&e z^GJZ?G(N?uy}cEiTjTrSGgog%_q*@6y3SW-KQp$yQR1||CJi(C#p;XP z*naDOk52X!tb{{EW0XxR78U)wJp_$)tw966^Wtb2_C*fe? zoJ{@Ex3LuCV;SN3Go*fRhV)c+>?ULH(=0CL7Wj@N4&>qnjwyTjsZ*>A+hWO=_~FM% z8Ziz@=xaJAlU>V;4#iO1e8j0&|!G}e;CsRCoL9&pR9zM}RsD6!yS zfB!#2D!rnrDw-%eJ?v-TQve;J?%i3@$FOw+SobQo2sWg>gtDyXY5xur)<*qiv$xW6 zH_Au;w0ysFu-b`?b}$2&cF+!TvoS#hiAg}E+dolyti13m5KO110q*FH2fVLP;wdMI z8J;#Df;3yP*1F2vN8_QG#5>hBEQtWSy~wU6eD20T6_{64C=>XD)6y!RoF4T2Q*9vb z8=y^1mBWAk0+)t`q37~0mTJiGsW@VqcX>c6egbfBv;^?=GYbewU0(UgQ0zU547Pdy zpAi%ar&l|7LLcC7%8CaLSu4y?H2=amz2JseZkHJdq;ic@rY7qaY`oL`mjTl4h>nX- zgw5gzHXfR&04O@K2TL+vVLz1Q6j0YkAby{-429IkN=paMa=4rfYc~DNcn6ft^Don@ z<}f}Er}*KY*F_|%SV5SyP#ka(Zu2%)ZvTBJc=!P@A|?Zhc5D2&S(TW2J5eu`>9!@q zuskyjuyK>9=KH7Y%ykZfj<2q+#sR0rcJF?v^N9h^O`{R%SNIbBX#n_%=n|o_&ps+A z5zj^AvUf!0b(}(p|JoXiy8Gr=-Li5>5v~H=lHFKpn~= zw0lvUvckj^f6BIl`1aN&YDi{4xJ2b$yggZNq)ThQu=%&pJV6|wu4s5CbPV0{B- z+;7K^0t1tX(vEoP*PSNPZhM=x`?53N48vb#gM}Rl)`@r z{Sp6&y+nn$yW|)|Z$V)uTz>)&%U4^<@4b}ofdzv8N|~U@;@@6D&_ty)xz^;H(o0l@bBWXn$ogz&vtis`Mq0CXL@J_1o)*D;aFot8Uzj`;)N#!cZ{FDnatm z7B+Q<5sko;k`-UjApj~?vw+f4cLO!B_dwJnyA{V}4Ddd>VO5y#Tsk~MdV;D{3jiAv zV1+6i-X|4j^_Ip&3|TMq3TprZBES^Ukak0~SMbkq(twX?y!?i-zJ3~Mfw!b-ztY2E z!DXb?#z&ed3vy?`bH_jW#oo0#gcJJdx!$-= zFlf4R)qSD(Ty!kRuEU{7LM*Qu)~E^*it73keS_O;zh~lb-sRu{R6xL1#-Lgzn>GcF zg<*eSm=df;*6UJE>*|!gmPRegA_Nn^V131Sx*P8(9v+=8))QTRGkF)-&du=sT9>DCnWc=D_fV1-B1h;~?5Y=}y0PjGy_K%{a&C~}?AU`{~X{#k-p0S1)L z*fp9#6MMi(+6S)rh;@F|fLV3qLvzzTGt(MBRHOO`gtF7qo_rd)07PXrG&c{$=G0O4 z&m~iSqMC{|rk=jyjm{MNbHS1EE0>ALKBdT22y2J6wbhzMZNnpLXN^?UDEEB>F+e<3 zb2obpB#J+1Dhc=1meQ2c)TG;p*Ty+-2Uwy~uBfQ~r}9{da~d=1dkrj~f}C~OJtC0g zF3=y%emo+QM5#^|__ z4lC9e3i!BtU5qkHrr#UAwQqf|#jF*ZWTJV~g`AQG0*-#Pt>7FRA?cw6y^K2Ol*)wd zcXiRQf{e_G7`X>e2H*t8>ofos4KWU}f;488pvdWwhbF^esL-NRGa#MrD{=}{|DBsA z+Cmal=hlNegBATx{~=nh*X*4Pwmp5;GeNh+73JEN7j-fL4B{dRn*;!Go6~Ge$-T(+ z4oH!~yG`I*W_CLp?zGWh-ZJ9c&-^Xj?gPQdqv7_J0zZzzv|LsTe%sm=0b@^80^OybXL$6l@@$N)G*B6`tIz!# zgYpIdLv%L}yj#M}i&hn$Uzm5y#|BmvW z;Hc=}02atzI$Yewtz^-xrE5a*eF^ohf%Q@xFL?o7t-D|W3> z`yKocrS-+&jm{mhZjpg)UH!c)SpRKn7VL(?ll3@BMW+xM5j?A^eEHD`9W9J7mev{u z*eU@8=0%t(o^^%?6&fHO)(O1VGFrwJXvFm^8^ z;MLm3oG=T<029~2pTW2JA2*p)SIPfXO92GNjsF|$K;5#8D0HT@5+Li^hiR1yloHBp zj7Tg|<@qZsk^0 zjv6G7PE5$UC85qauorXT>9~Nho3Vui`cpK&>D~%+A|}GS?k|1@70iV=Jw~ZJ?+FNq zbg4#OS94In(1T*_znYE3$%z2D`xX@j=b)!0U*e#fyVlB{fsEAT#<#?38=i4aDqz8O zf70b#W$ag<;HzvvXM2SB;#FbzZaD(*4*^SrvUxLTOU(Q;TeAx zqzAi_6S%?p3*&zGo~T#aSf0o*^)gbz^AGD}r`yo>$2b*572R#yn{#FZH5-TnHOy%< zm%6}wG!_Hnc2Zn}w=XQxvpJdSBFRKH7t=>bv43o-zOa_fU^mJQ4X85?2`P| z?uy{Tgc(0pTqSFQz=>=?amK0hGp~x$+e&Hb$Oo=CQ%5vt_$B;|9NRMwCloP$Y|`J~ zU+}HugA-)hy@KDK*r=LGc!MWi>)GKM_y3p;jEJ}BvVE&)06S9X3YlNql{&3mq@$tE zZs3SG`Gct#05I+Ke#iC=9S6@UG?4QM$34-6?ZfI8uEH}47fFBku;X4ZVl4BwQ20%M zNlb$$ipb!FSsORiFrD`sA!6hDrpeT|lfs9N!&lu`CJ87aJt=NII=+Bb5 z;bkA)ir#6<1-h*fqQH|`?*C*PbSOvL?RHCY)AscG2YwmqgaXGaU(7GwZOeYM37BKA z0|oy0KOBg)dNS|^2fY681~{PNCr_-+0~QAW0OH(@rTcqpvIkxNMV5_gxeWXeB~q7~ zbt{TlAX%U@;QC@In8eB$y@Vp_H!zkcogGUP_#pca^<%QS!MV|MGxPxf*0a?ENxJG3 zuR88e(c!U>@emM!({2)CI=VAJOIeI52CJF=jm(_kF=d_#-`godxi6^<$KBF3m7bsG z7EXD9C1C-NdqeZY#E-ts-?jf%kCm8fo@``Mru0666R_y~ML4bwX|yKn0A$Q#m-=Y3Y1*AMXxc zdGc=>mp;;Oi4Wg?f=v%9s6OU}7nzYQQ-LZfbtklbIy{wM z0w$EHt}TJ2r2wZlSX!r+;5nlZTZW=Y@o}J<`qPK3){pHznB|7`Kz5TWY{#8Gs%l1` zt-+K@mWfH=m2^w+15oZCO<>oBONP{(jsOt05-au%m!ayx0lYbRA@8cA_wjhxLb%vf z@2F+vNf=fIU5QzMqe=?8~~$Vs?fRz1*y-y!UTD&|uZI?)9BjT6F%{=o3A| zuvb-{$*D~+A-c8#7Mr})&COv}f8pI3xw{ar4j`LJI70cH9Yk9d!Eo@p_1<1=ypP2N z4#kB2z3}f3joRLEEsHz{%E1F>=^O{@lc|LO8tk`)$X8Ldj#-LjMA}h$LIF!*2@~#l z!IbbP>V_jcqz+APB4*#3FQ(EAypvxs9vOC=*tf7p!~qE|_5HbDQ`Q6wX*`J47p&i72?JUnClk8*fs=15gD zXtFTp?(NL;hMC9TGPu^ZfSDg~3##|KC%q;gcv&XXPC`UI9gPh9u ze_iO9qF-@}t3cPCAf}FOjOUVJj*)$IJGb0E9}px$R$mcBLzG3X4aQ4tzoIuQW4paS zPh!c20PAR^P+%4Z8*nkCfU%PgbqIedV8WGP1<@5Ow)7yhB6;`G5zrc5o!<~3;%C53 z!`d@H0V|guRR&=Gv!9vZJp!y@*zA4(fko1niGfTdb?V{ZU89F`8|Lg^$YE7aRD^pU zg(5nFUg*lCPvkNiD4+rr%NZpG|Es2p+hGx z3bwJ$z98wnN>;H=={@AA`8yj-yRl>{nna6(60|Y~TPKjXGuSa2$7kUBHFj#>aEqX-}h zO{v+U`=t99WuRZE>5hS(kiZq{RB<^PJBQz#2o%6`KkImVu+PY;phj z82@o`Yim?*U!TPnkC3G{cNw~+cJu66;AQ*w5kv2Z3AQs5R+{$ zHoNli^Z(u^A|zJZkNDK&dO@q-?voDeH?Qi0$L})!H$_>lFRNoN0a6u!Y8BT zJ4W^)($_vdZ7u5P#}nz0ZpLnAhY_NG?sb4f)Un2}*nrhdu5}~$9AcV#Gk zD61KaVU~DZ#jzNQnMut9T{n$1rIaeQ-^-1n8R_q}`_=Gz+X3(iiLAUmi10DdXBqmm z-$q_yF30o{$(7?CZ#6m0#G3w=x^yO$Qg1(hE<>a@sUsG_1G0zF{HXIA4ll$}~UQpXV{ z9ztt-tN&{VpxTzhR%b2(Y(cHr!{7}`FFnJ(7jB1t4B86cu{gTd3de2N^p7mcJWcJ4 zC5x_vvgdm}=oCa$BW?hObmRp3Iq!~W-K9ZaHK15&54--_>X};aj#a7OcVUsL7<1S5!+P1P|42A zi1gdjlip$f#K|gvFj7=~@H$=_(Zahmnas$x&@GI}=zDBILimX))WOaK8Lb~KdMVP0 z>+=D8ah>}mYYM?&2=dXN@(wg7gyI$&dp|b;0#dMxwSGNKi7T&V`WC=yfz8Cn zWG1c;UhpNMd(P1xaU!$$YA-CmIoU!(Bjfj-|80(fwa&lYA0NYdbDCGQTuxEFUkBO_ z<(Srp%#|--iPHl2z@YG{-&?N#UAB4xd=l?HJM!t|S7+R?Qag6txCz2z?tVqqR4vFU zBM|rtkS`EzkO*sgbsY&e(;ZQC{niP>x|8$cCb@o(pN=nSa1yl)&{Mbi00ib~8DGTh zG-`1|Aj^b(P3Vb0?C}A+a;ClG7om4V30CzYehz@%=iiOe zkNY_}^>lCaFc}$5htDI{)r#OM;8&M6BG5=BXn)7yptWLiE=tn9l3CO3Gjq)9Y=+A@ z^FzV>>Y>H!vThLF$ypL>eLRj2Yxywpx4#+(e4bu|I{kpF(B@IJDRtVnk#jXWPRrfm zWL{2K;#**ePl4vc#{9E(Ie@hCO3FFp%0rJ1E|?K7&P|7Zv-OWE9|x+Fo*YUac&5M#B+( z+n+vBEshL+uF^M?d&w^-sP1bh5fvFZUaGBrx;aFhlAiuDY_ns2ww~|ABjnX9CX26M zlbV{Fin7}>-VMA1O1lvp`c1NZ(coO~n{%}{Z*b-8VhVzS9=%gi%HJ-wP`A)h_}_w+ z6$R<^Eb%Lh%JG5G`_oe%O3SW-IkUqdRSL^7SnTX;cff>qsV;=Lb1=|+0v+Dd^A zk3(jD?1%|0F%U(*;R+G93s8G3`s^!)sF3Qv5=F4K4xWu;U8pN|s?;3$(;v(@vf^B2 zokduf=D>oEzgFA+{taCS7n;ng@kX}|J|wznY6Oe=!7m(qs?LPR{q|d7b;pzhh0KgS zYNWB*Y|>p|)+&gw4*(whZL2+12)5=tD*&}N%`nq$C6HC2e7LFa;U$5@~IjBdP zH?RgUtOk-Jp^%h&_(T4|BojfXpsnGCRiKw@FJQ4@OY5mcHt{AZ4u}>WLh$o1#U>qq zSybt1^OUF)Ec;m>gwI#TGyVAA>t5@Jadl6MmoBTrKVq23F4{-b zbQbd}{O#;q|Gc;VHn?QZ&i)~(zbNtPhWqRX=~&%v3!nhl@^oPgfdlV|K4#D_8^@`l zr1qR@#0h;g4usXnecBoE%$|#~l-e?93U53g+cz3P$fzmE?|&(knlehXeEx zA;Q+SBir6z_Dq-~T@(tklTU;E0QBfl^IY|k#Jy<$8FnX2;J!5-MRwZ--Acf27UE_ z88mP+yrs#K2!yNwUguGTo_Bw?@Q0CH+;q&C*B)qySl69P!5vRFI5*c)7ZElf@NS__ zkEuv>k4$i64_`{{{a#rg)qb%440c5AV%`6@jEkDyE(7-h*INKG zYWQ`kVDksf#b3fii~)zgOxer2r6KdV_2a|(M++_=F}XQt{sQB%!HBk%E5N4%MrH!p zXY&E(imAtQKz!jp@w*rtM0`G=%A>gkCa@gM;#8*O|NR>@Q`y06E7QJb3sna{znClf z+NYm%Hc(6R4N`P3nYl$`xw#sL3JvDwmeCuVmsxb0?t?>w61qf~6l^Yl09Bn$0!Tuz zF7ZTKi#atg5ECHTerWZz;jG3qjNQ8>$UtHrDy{_gvE3S+@^qg2fv;B(XzfIB$i91f zH~H9{dUqGs<*N?z)T6@zm?N{Ni_|M$;^yM!W@;dHrv|lIJ_}SzpimN+C0e=33ZJg2 zUcK<#N$Cs;|6Q;uieZ>}U-iXckKh7t-bK^LdRcSE(RhB#^67Nc=$WWC96Ly)LwbT_ zfPIq^UJTw0!P$Ej3JK}oYnG_1pSgy# zs+S(4nUTqtYpaW*2xKM54fk}d^xNO3GmQKLoH9>vLU|{XGa!*8I>|)ROnNv2O%o%r zgjqHlEfFC6<+L>Sm-WCR1L64EUMw=%LXg7&!lfb2eAOZrx_hH2W>Z@OIOJdD!s?t1 zH1Bw?(wXYQ>{{#FyzWFg;je!-%*)0T9oFIl3%iPaWF5Z;)tp~RDS?p zdtM?@<+8*J&0Vr4Y!OkJyD;&CiS71RWCWkpP6WI%`n0kO>@r`u zuz_)e?o#apUn!c3X>z59cb9xUnYuykQ2w^{0y0c#0z334q_Sy-1gm=FP{WK?`v9yu zAx^PEk{XjIMr}=f!icLrOaJS;n48tXE5w&>fwl6yO505t2>>~4y2tHOK}G^u`^a~# z1ZZ1vY_R8qd=k0vRUQFZ{4)O2x`R}JB`y&Hna$3R$vYr z7&a99D{7jH0{&PT1j)D(jrB1D-_}z)PX%gCIZzl$(#76LZ*hd>I!So_Q?MCLPmT|96>sr-JbJ66neH%ZKE6T&)x(a&1mqc z4=|?W-snoks}G*b_!%k!-`X_}AubATJ~u3dR=eT^^O!CoPP1jR*v5Tcvl={o z*oBFI*~-+Bg!9j>NzYpl#>+vOkA|PQycwJ?Tx|K=206rUaJXQ}WbI#}E5c*kPge-> zMcWIjJX&+R{Mo@NTcN(FjUJ#liEsU@i1F4J=rz1kn>l%VAkI?pIxD2k(cnG7xq;2_ z^1pQgV7Ci(68BscnnB+IxopQ;;0o-Q%A}0|`KC*^h51A3>VENo91yD2c~S3u<1$xglS=6ogAx-Lf6c}9Js==p>*2=t!EkP^ zE!f1=#9{`fPjK8xGUdGvp7&1f!r00zuNjVw}& zi%S2kuuA5Ax{(Yefm6bYDCoqmZp~QXFKAM=y)R zrM}=ddD-BTZ+h|}?-h+&y8CT({^FYjt~RX6p;J3Wt?kmQ>|qo}P*yq85KM7B*@61; zY(iQ`+O3fL?Sxr9Vl2vI^aF_U{qX#IZnm>H^iyi^h$m9 zUvi-E$3^EVDjvVBC>ruC#k_^(*p;7^rZb@``^`qQZ5@Jz$JdbaEB6 zSWML=es`}x%lfhmabuAe+|Q~Ape%y0dsor8A6lzFtmqjHRup-^LzFn;%C<*!69SlHzx*~QcdhP2$HwrwCA#R~mza;s(Odp@!fTt9E z?Q%z~Io$-4T+4Xl(eE5xu2rGrWMq=5RTF~!`TdP3$(%aB@Te-L>t1`>F^Z9nss?Ph z0~OMW_z(4+(nI(e21q}0|HIz2+nLVh;RN$twMZu+H|)DbS7=ZC<}-NqmY z_`H+deMI)|dml*%P{^Yh{XJg{YOK9{3Xb$O=OfYnLpe}mxU@{5g?-NNTOjJ_g4T{d z$+VY#NWIl%YeVj$2`8<_=lu(qlaRUicn)AFH>EWbK=&piCzTG3-a}wbir^SlgMT+2 zK!NKM>2#|mG8AjX-c~3v2+S?U^wkc$=Eaep#;cEM{tbXt%T(AK`ZjU`Ea?WE;Zm!w z1Iscv76@ANWqe>310Zs>B)(4k^WOg#DRwCH51_HVwCGu5w+xw!{oauyVnxpr2pXQ5 z0c5t_Iy8k31^9<(ZGB8ZPhJF}X~96BN?bDr zf6c~5Bma7c@&q0(b2~3B|0@OnuQ%YB1y(%^Denw#lsCdnuS@|Q>xB7WMfy+oa)F)# zJ(Q~!RSK>qDL&lX1?do85Do*HOe>nwd(F-elUo?|OO;H~VeF4eZ)(G7kxTi+4|C*w zom)8E&$M32%o<6G`y7AQ#}stga zul3+?T+?5%XvEDZajgsTgO`5#*Oj`<($C-J@e0qE_ct$kWxg2i1r(#_9V-pdiNlk9K&Q9luwV7Xlgq_vlyZaP`Y3m?8; z70LBd(`Eend1s)+0?nfP%`O5lbQX9LsS>t&Gp^N&FaV`l1CRv9p_!BERMA>wdd+0@sz_Xck@+t#huy&|bnc~Nm|#LV1W z-By|Cj6k5Y>GIxNG!1_)G2$(7AIsG#Kv{5G)9%r4i7u3?k9$u6`Q z2^zb=Kz<8X!p*Kq-GueHEs;``zQZVcIbCV~QC?`K;QSQS__nWUHkh#Br4(PaHbZfTPRmAY&Jbz!N z*@~=>s;ATK>4uzVfXc1iNR`O)^D-Go0_b-Y_L05Mr;qJMDB)eUxQc|BJ7{==;mpR` zz<=`2idZNHK!W4;PhgR4C8%CpQ{uO*JMEBw--09e-@8<#Zxuc3p2b{CIkhf?z(^gppi&4{enhup z6b)bxMdZW+5kP&LFmK7-d(7+##@T}hzHM$rDZ_<+{SB4lw~q3j7)PH{wB;6 zkR-*OQ}h}AX_7*p8Zy1X_iVPX)Mid*f<8K{dD=ru#x-4}xvTh>)r^lNqe^v;$X+d? z7bkSpL{Y!?OL)Qn>QANn{M^7D6gsn!UC3@8+mpxpk-hNvwK2=1?!TY!I(%(9U zGlm}~qd1+NQ-q|u)3$mBg;BehX4F-%Gk@WsFladwW!3PHmx_k`t)3Uk!x_S?PMd?V z+@^ic4zCVbN5G11@c9WX52_&f5<)?b5xb4lx^p1m(efSl_w^dsV*ckGhh1l#Alz{F6v6O-g15e%$G~LgF=+Nyj%uyC>guQk;l=N5z)%x~ z^<)Wpkp_x4_QzTzglt0Lgzj`=&FX!XAnZ4mg`6}K_j&u5gUu;Fr_7jLM)XhvM4Fk zl-ucoY<1)`S;)5$ZQiBtlP)-MhrdV?w`+RBMQQ%@Rdg)U?gy`OJ9I66#}tgndo#`8lGMz>;e`HB!x)`D2=ng!&w0nKB-Y&(7wsj1sJJU(L^_f-;3^rPDQ>G{ zyU_eZ`H_=1uUKYgpy7j8UTP5U7bQ(`85Owm31d*Wi_QG&`xD>$-OY^OV~tBjT%a~A zu7@1oyZIgw=N)z1eLsVN6hiTzGOrV0I`ovnIP2H@CnXOO?)uql*bP)gZpp_IR%7|M0#`-QYmu*_5rJ1gkc{*%93LWLCTpn%X>g>)qP1)vJDSuC6 z0v?$haMk2-IBqBsw_IC4y4Ht_^*KfDKe}8_HXWn;ICBDanqzepC-Od;@ubh35l)U7 zJ3@&!7308-FcF?R3Gc<33t#t$OeYO8PGZd#>*_#=cY5{yrYXMg_-saNzO<_EkI7*6 zovCbpjdVUC!+8beZ{v^ps%T9u(L8dwEAFK`zVt_Gu}WKGW=SoyE)lL?WctIAk^nof zb5z4fot34TfwGTxvQAI`JwDTcC*gmGY9pbr*pPQWvA%GUGmNe+jzcL-)4Y$tQ8F@ z_L_I+B*JtO_cCbD2fRba16y6gpx&NVd5vy#*q`&$4emeX=LvZ|6R_1U_rXRmMaMJ1 zIEC2Ctr9stDa-}(Fs!Ek6{W2)%VV1>d`Y?s^6l(wLwAVk4#{kLty1D8=?$9kzYCVh z31w{@i?QnGHd(yD%8+23uFd$|BchnVc6WnEs~a?Mj?DD!-=D8H8xO)8uU9cl=7D~b zFFbi6g!_dtgg8-InG_^$8Fx>2OHR8;M3POEkG|o2ocEW<3(iH!Z<&{XPrpM5;*zYh zo9E!nXvckIA@vtH8K1laevnV)cRZ5&8>FOQ=;HI_U^0B}$V1R`o$u8vw}Rwq3%Y{v zpHi~Qx(nX=dJSnW6?j|*VxKn0^N}U=8C`xb;?QZeO{R*sr`1@~>+{<95YoYGS%ccVX#+i1B*VC``fGjFp{V(1r4(pI~*%tXdEf4=+kxZb~?t#fMqoG$!A zFv4+Tdt^hzc8B+rCxjN#ynEfA*)M-r-?WPmRQP&vr{Kz5C7Vt%F+O>f=s=drNh_u> z^LV5b;Q%aeoCh_Zq7%~ZIM+)i;h=kw5JQD!zY5J~%7k1NLI zyMRQkCevKOV7yoi0IXJ}R@4JUdASry0TD!kED5=th#0pU~-fcPX&Tn-lA z&QQtb7pPDLe-}A!<1tBJ^~AAS7-5`V)IKH`VBTci!%oY4m=wPe^Q1cw9}SEbiZq!Y zCbZOEn>FV^7=;fAj{M2E(=|K0HhV|^W%zfSY(0|Te zy_LmKcHxJ2FuleEK%+s*ZQ*R!-TcTIt6TClU@{>}(Hhe>(_#-_Dr~`g7Xq zFCZ1Fni&$Zaw;%omF7d%PRk2IyMEooFCxq(!6~DNjiM(~@c*7)_o6=J^Fwl=dP5d16xla0vdl8+K zpsrWA{9@X^!5>vJX-|{&m;Z?P0llt_rX!l}r42;&trsI0LqFh{IqEAiP8-)7>lsT> z3R^bN`X%fwD0#Ad6i}%!zg=;~pd2@hNs}+TY0J8ylrOX5|94=reZ1Z&uB+1`XV)tV zYA9AO>_6R}h^JR@ZUUAN168>S8-G^2MWoEr{(KL_A?iQSZ~nZy$zJWyEk9f1@bky| z`N1NqLNrZmAP#Z={oTzO3P_*~gk^Vs{*%@D>7c;@k!L=V!2`eZos7RZPpl_>{Ye@4 z#mtules%~~<(A1&kpF7WUreefyh7SP$-bkMkM!qrhaOyQWTygikYWqZJ z4)Ws4BMpxD`A5i@l@`$(^8ph9oDKXUU^TZS6|TWz1_9gq72ik$>Uvl>=$!*SO$n1{ zA64%T=E$FgE8fYKv)EIds*2WxM9}`!_wdzAY^)!A!$o6 zyWK2kna<5e1cIxSSlKdZx_D<<(^Pw0Z0Gl??YwWkX}g727~}ddNeuVNmie_%T5XwO zUeBg_R@-*J8&XJbAkG9eV^)7M2R{fU=cDGBr)vEX`ekXfk-Io55qizTA57Uy=k2Uj z$&XcWb})t4J7Uvq+c*iq7Yn&7wlI;q>#azpk+BhIIP?@Bk>u&@Tpi(6G@^T@Fz?#fiJm5XQ8Ig*3KHYeuCD!uNYP#&lIEyl24S&}K!DbkfUBB7f>EG)?>_-dA zRJEavS=mSdTCteHrzBy?&29-7bhBzGns|cSW(-H}lZ0iV+qoW*9oZm>&*LsmPP^ZY z1LN}C&NhXi^lkf+LE35Gspk{^-O+w@ruE+5+CAAFRZ%Rhc-!tH#b>#MBg=iKlp){- zUT^-Y;pD2%Rz-Aovr#d1ogsz9CTVc^^!Cfaxee*LF4!d9igC&?{hr3NQhvqnx}#h- zQ32`%VHi8~ZXsy75voms+F9SUUKt(}k%k`wFMvk4G~EzE6R-=R^6NfY^rVwD@Ujk* zmRQq9KZ-%(4la+Zn}3<;eAhBAKC|fQJR@AJ-@Nki0p;uS{pA2f!!87Z^2!M`Y;^A( z(nmPM7%O5j1{p-r=NeJ-yC~ps6kl3DTm;cw_L5Bg`(#%Gd*+Mafx+n0hxuA7CY$-1 zpP4>i85I+TW-uMskZ=3_aqFE>uf)Gg?^4D-HKN139rBv2@HGSsjDgjVbf;K<7sS1d zk7X{7S6Zu^boyx>O0R-xnYXZ5|K)hX&%*bk-CwqF42hiRaVU-H0CZ;QW{iyt5i#ES zV{7+6wHCW69e+7{iOjixGg-z7Bh=^3g=|IC1K~LOZfW_vz}xfU+%fS~PNKq@N^`nD z8op$36#5p!7RDv-3&aH)Wme5~lkUv3VxO>kV;^E{V&`|~;>0wI*`d~wZjG90+7*ky zZF$bfy3I|u_-3?BzskGnzDe`e!B_Aj7qJPGs4KUO<1l!vwG<8|f5G)esZ6a=C8mbf z(pB-xLpYSqN|ngYSm{q2QK+yZ@q^dVY;`y^Zt-IX0XWZx?(ZP}0_L$d-I*1xwRdO? zD!Ps`6V6i1dL9!O2Xky(asJ?~kXqR%W;e#ho_NgQyNV=PHfXamZNItnUg-`4pWR8Q z#Kkq5oSEo5sec)%;ahagOK%Km0mcTQzL-w@0u(-dy=oc`aureRtOS4hP6FRAk&9Xl z^Ido!QoDbj2!k$DRC-E%80ha$7>s0l-Duv^l#mvwWB&I?enrMoyKluKp_~CiYJtJm zZx_u5lenq$Z8!Skf260g2M5>Zm9^-xu(0H{l)ZoV?c4hFP^u$h4*I&mN5+<7DPes4 z!(D6F2J35%SbPeOKi9QZW_w%QRQp8ZOYkbwe8cv(YNJlC*9{Ib_m_y6Ff#UklZy{I zz|~zw3|{%FnwY8X9D0&!m{hzfNr>4g{R4{^-zk!$D&l+-!x4}U0VrpgN#RUD>JvkI zmJ^CO+~|FCp%(gRyv zC;w4{+kT#2EA;#)v&Lk4nDOA9C7;c*8WDIoeUe7y&Z6%M-&`(S2XtzZ9>b;aBt2%? zJ(L7ox#!bem~4E=DAJSU;IGb{7k#QvecJRn(tR>wsNbN~vxGaD`OEiS?lQ+aPMFX4 zzO%c{{$3JTVJwpxa9YEVoMx61>e~Bu`@5fSM7ON&Us+=J4qmz(BjT8|oiMLV z3r^F^z5Ot?Ns?n-sJR`JsN!~aRpuxeozJ(ssa7$&s2tTZTv>8kB#F23L?nMRGHItt zB@p6=*@@BVsc7^yKTE9j$_%aBX!Kv80=bI*$;o%3rm@nyn6AYnvY3o*T4f_BUP@G% z&uos%9(g;%p|6RpT%p)&KbX{@?jszgk#ntr6SYVBilW-B=V4l-=7mZ6d2A{Qw$wyV zoJrnnzCeIn=5-S|uE_jBt4udzJ|M1*hV&KS_&F;Ufpyi6V*=)>f>8<5c6l(_a6XTy z{wPm93Y(nGWzg>eh6C$d_Cdu=Vo7{qOP21D_A zNX)L^^wL6y!)z!Xlt1oF3zy-4|EL0owVu3fG#+&=%pd|EG`#hssv16QML2~+2f;#$ z7dwlJ70AXABXU$jkI2yyLU+8vm(F|B{&9=TZkqhi=kj6RqLa_f9oeW*I-j_gtUFJ3 zD_y}Oa}_S2<82Q?o@L{{-x*nsTn~+?Mq($N>+7R3Z(Hzi%h9%;B=`rzGy{&ia8U(- z6!0M46oJiFdzXtW^v#o>iXT>MkUKqZF3qjC<5F4k6LyBvzx;D{Frka|*inW^%HAUx z>O|K4bPA)tY#|StoG4WOz`S*9y!ylJ23}8Kn4}x3bAYH9K`w6L66w3isICbVy|-1Ri&X`5nz1S}|c*=WawF5Lpe^$6k0Zer$VU0O$)? z<~Vd&p*{54n{JeSc49}Ovi*GqkHNoJ*c-iyC8=twCc>#h8^1s|ou^z0bF~&sHgh%c z>B@z_myAYIv-1Poxo%Dw^dEMp;N|h;jc2r`0_XHUL;S#mCfiw3n9g^7_ZMS>tq1ih z->EW)iQ@5aH9PO0KAH?6y2gSxAG)rQ7)(2qT}@l-z^oJ>tdCq3nWnGqjv@|PC%!K} zX?eH_zqYTGSKzpPdMJE^qTVDwA36FvApqUo9g+!)Ca(&dJ=5}-6T+Ev#~qKVS3MKTR$ zbV%Y$9aXI8gSO22e5_?>joC-YQt>jpT?{Sdkj7n;>|!6NAVbsid%Kg5#A6IFP^{$` z)sZ)wM(ynN0qeORW>!WLZcMI(gIxiA7igm^Pm`Z+)DUd(_2zzw`t0C&e~SvTJ>4Dy zYV&BeyxHPVBW6FPc<`-w&>pcUVk>ne_2^}XuZyxcG=hgp}WNz<@O^R@_+A51DB6T?7z9Jch zYIqrY@@$+fjA9PKylNTq5gPttiXa7E%qDDsQZX3TjU|4Iopf&)Zw>F>iPXHXp@Pqy==Yt(rxkr1n;tHgf6m)QKB&9Y`4VA$>j$T^VkqvNONIxv zLF|n=i-&f17HaPf=Sl-vsOY(g{5L97LRnf?)*uj*XqYAy*wbv**gAls?A;;gnJOgO z0=83!?L>l{-uj>gTve6ER7dt?Gh-8-{bTDGJ4xsQMBR<^Y~I5=929pI{o!pg_A;I0 z4V3~l)2>E^BaHsx#Pr;NC^B8o0X4eImdhOW^PMYwR&{ z7*WVkb9KUnqrllJpf~#HB?AT9W?gr6dOmTH4(&gGTz=2>0=kse`mt{jUx9VJ)bk9$l%d**>v4jJawryvv2K!G+oF;8j zyfd|;Z{QAp8OZk9dy+E;^;C?jocJa8P~7gXt5~lYs6w$DX!2jgDY8FF)SAGo>TMn%6l6)t@_9B$;PK1Rtc%+b z^}`iD+}DEkMht+rKoPYhZM#{d++e2MN|-wkzNef*&3G9=U7l~X!ko0;}(NF6X@3WR2|ywNmx z7w=wpt`Mqui*H2x=1%%}F1s!?NI00+*5qfFYwUw(7I+)kJ|4;}?73Y&2LqO{hzA4O zOBQW$R2$!3+23MTjIwfKjP-Y<25$xet_Q!Y@8WHuA3=0@;0F0ML&P-9 zr1fhv3&12Am-W2wBGS5Av)(P*m{QiSp8-5-X4GO#pq(iqU~u2)L%%V7-&HCDtXlnr z2Z>5*g>K;<5I`~YHPZfv5jEi>c#chVYhPU!D&M5=nlove>$Cl-#@;8ZU2HH8eI!sWdlW|{Y=Y726NLds0m>p>qx?qC zduv@b6`I3D_IG!`YJVu^m6Kteh9dA;D8ufj$J=gP{zq>%yn3^P2)ax7-cwx(5CrM` zmY6ll!QYh(Jz3?@=*~78r-3( zepda1Vh@hp=}R*bpn1oB7^XM70_NKeV!sq(cAXe z9?stf9@Ng~rAuAj{6cd?^QG1KDUDnPHqw0w3qtG?HJF$AVfvF~JviF)Ead9>LOqjo zz{6Oh!FkfYB~`+qBoZv=wI3A{sw+3b?yLJ7(Fvvd8C{ggX~FHJtUkk+d2gVp{!S=2<^brIX&OBK%k-ZWZb+H~ro*91J7r*3Go5pdPx~ zbv-L17x{6Kx%h^osXgFroC$la>6%{%=6boCC?3Sk<&3t**T$?ZER(u#iz^VCyrWQi z-?L`z#&P@j4^{}!?nq-n=yj&QMO!c|hXdIYT6t+wV-*sM)8F&JY$IzP`CX9)djt$9 zY*<&qS-s8|ur?~24p3V*Od^#Zj|6n(>v5sX5kso;Ze!^=(cr5J3*rlz2(YkcdZNzR zB9+(+geUrBYjWbh4wxL9er=h38btpCx0k*tKP{*ymbQef+>q}?67?u}c-V+Ip8~F0 zhZo?OEgJNu7-u1)gI($${3Md*OXpJ;_1e6@OZR&F)|;)6#i8(W6)IM5q0(c&}cGd2Cukq^@Qe zp6lE0UyO|-dqm#6TL|(C@28nRGyx2$4h%6e$o+#{_AZpcWPs| z)-8)uXs1NL^nRfe$@zyl4nr&Y>`V;9lN*}`A7ptBuaOK!Cxh5}yrb_K zglD~k*^1s%cZMD!x>MIV9kMW>$30oW2%Joy^(5J^J;f2B+ozPj_kIT%kMjKp-dHgL z++QOJsu7^b+WaSmBr#3jp3Ruk$n#EU{w3YJL)`D(>;1Ipj35*A**9SC%<&-om4;%P zj-eKM@q}gJ_!cOwjMhBIdm)c=tndi))6+$$C&w{3Uv80PrI>ft|7mjkQhx znU#^>$o7n6mu?OzJ`y7!*pH&v35lr~J`rte(IofL+8G8{8sLgO;5HGQ*(9Kt;Z_Na z*$tz#?fZ0H%(14~Suk2=ZqDUR;B*+H_(7`3$!+g(V~-$ahie5U9~UUb!EIh&@UJf@ zEbb`k{O2o*0_F#DAKFJZVpwoHQa{t=El4RRy+#rt1qc&2N!&%|7e4C{hSGXHMH38* z0tVTPb8yrn!H1ml~RE^THg@)8ubN z4(uM?@y3PocO5$oAktz?1Hsr0O#mfxVw~Gr&-Q0^Yn*i$j;AoCgM9=zJw5%~!6`aL zp*XboGum?29Uv$MQQ_MAWA>l6fB_AQ1}pRuei>7rh(8vIOz=Bus(xrie-h9cG~!jZ z$H?&;Ccz)~`a{pG;J>$njREgPPt*4Nf;K7P(}LFME|%iABry9dqG=l#^xUA;d3(-) zt$}e_fKo@l#C@>a1ey)aJ5id8^2Oc!yh#$u;qtk!>t4QDHig97>>e)6kJ8o0wIwqx zkKKQ~R6!)a+)hSaz0kYde(|`q+u}km$LlMw0}>ESEX<6W0$U`k`7ybvYxrL0R$)*1 z#0s!Z=*QB1Q1egYm*#3dZsD;!XXZcw2h-_MlBL!qk#Dy%29NW4Vv}%GeTo3vCKNly z$ouC?aq;{gg_(~_!(rqPhm!`KTizlO8*Ajy zRG!tb4^Z^3{Y1-Rd96-TCr-*FeEU{3LJUcv6YIzUUlDc zW=b@@NMcp0;GY|%JsKAhv8T9bE}KoW-9QRRoF5Y<>R~RqAS1arGdJRYD*q6X`>XjN zk5rRagE1``MCN$FY;ejl4Z|Zwy<22j+QK4j|FuxU<5iY58Or)kQC?J0ltqFZLb-8S zd(KP9LvRZDsF}07P5RB}V7{1aU*XI-H0M!BHHGsSk@3;ig&GYm00<@Lr9*yRED1}` zercvhs_pA3sjPcg5RceOQxv;PI>tv&C?!Q1|E?^YQtb2L{C_{_r@m?g|B7ka7hXyvx6d!xVhD#ziqN|5Czj^5D`qs4MH;>)(=T>Nq09 z&)vei4!&^k8g(mn4e@kdtOmNRDNp7r&Bt;v{ z1hiXyO|;#qg^-}s4n~M1U$A2n^rBM*ryjS_vU+T++Du7oHe7oO?q{A1>=qAW$2PeT z&eY<&avPjlZl{SuzVj{^1Zu%wYf-Ln?_M+$FVxxYSC(5>eNO~q=w@jQ*(5Jn2sU-M zB1y-j1Zj4$Ss&njeq4(1sA-c^o@B%qKGm5O2D<)F{trT#IbJ_PtKg--27i+B*Bx^~ zi6G-jB&T;Sx(lAvugK8qtGlRu!^<;XzJun4m7OlqF2big{zwvj37MEkooC96;WyIy zE~rK1I=E-rAXsY;#KXUsu7{XloS`2g+V~}$hfgJJ?3PGU35K`1+$Rwj!q^W^+_A6t z7^rYHewR94CJjkiHabhTxcACu`eJjGKv*kV$~6%ea=X-q|9;7kDaAm}(8JuP1wnJ;^PRwMUaKKPGz- zg#5|pua|(TfP}wR`nw_n2*x{Ls`iP1(|BWce{g@koA_32QQ)cgnGE=@Aoj~_rImd1 zr~q;}BgfW@ex!Xo8GVKc+LKnf9r#VaE-7j3IXc7$gD%3ax6JwzSbH$e%hX&O*MIkx zKg9^1dSr1S<2Qd(?g&*l^qJf;V)Nv)$@>Zk3gLuC;qzRY!uOZB12`R$8|f6{H!Y z`BEycMJElZpXr-T5D8_5llS&{tqpYcU9L^h?GRTCS2JdqyTl5lb}h|^l8f!VN)%xw zi4}HXp$S`0_il=4zv94l=}?p-D<7rvTan^__*1@$(w>*TPf=r@GkUdO z`F16<3)a4Vn11$h2d6%9%zQU7s>aSOaAh|}vGQEC;M)HXcs7Dr&}Lh%+VL1NFLH32`Pu6c$7?jhYO}sMAO)>2y!zL` z;4(j5LbP}lb~7o!F0A~RNqS;@;r0`!#?3GX*;`Orj#~xTLd%J;g7_%Iob{1NQ|Y1f z#K+-IadHqN5@3}ker6a)jm2({nQeV3!0F2eRQ6q|A14hbqhp}ie>KjbrF(0cXoIr< zQJ`=Zxl#=9{1|TF&qFJ>7Z|1E}qKRbYgzAzUkD6=Eh^zX;*a; zmQ~Ro*A?0dKcxFrMAQO5s;l(oGoCTH#XJX?G(a^9L*k+?R!`s;u%Iql#I1_o|M;iH^=)AUD;N;tv_L3AUlhN z*_di&#QUP!U5ld%Bn+(+D_M`SPBnav82341C#8m=Q6xkjj5B>Jb z|C>10`oKSc%XED)do!E8V;z-NT~DZIgMtCoUYB)PGhNECJB~I#;Xoypu5iUYcTN*v z#3{H9m?rWyQvsT006X;_SQ+mLh@F?~ak4BwYxnWU=P zSY;TC{e8K?+G+B)U0N{32E*>c#c3(>IAe5+*LL@lfQ-9to3tUIzlwjLbQKdWF=!T} zvEpk*7uV)U4&V)8txQQ}CC9dr59{>tpu*TLWY(A0I9wJWzZm z^NTDljusm+@a+`n!hRrz{Fg_m9-_Nlh3y1z(?#{x{HO)ZGM@CO3sbI{sW$gaI+7=5 z>Gp=oljD?2m`c3;E@ehvo37hYibb_h=v3fLAyvfw0NRk7-@3W;@(Vb+`9x!c!a;FG29uYmeOM7m9x^w1RGmKD^MPW)yzs zl}o2}9~m9u!nyczcp@U-qytuQl!$rMg&g01S8(h$X@Dhy~ z?H%6=*G{Z4tvL?&lpiwl?F{{uZKYU2gVOX4M3YcBNSR1K$(&7XjmO0YFfWPu;)=HCZg`%){!xJp<`0MhR1IS;tS?;wfWkl_zb#_uMadc2H6 zm-4C{{E$amn=(*Hy>QQibSc|U5}x`}+@mLn>2Z!4OXP6x{_3Q5J099RB|1QHjeF{b ztNUoG4M z3&`NG3sl_6M4YQlTku^B%X9_oY9t8uj^A8?P3z_NUl5>s<{X{6azq8+8%HAh423@G<<%AEJ_iC9%w0I#kNv5?*xm$h7}(WuzM40>6Q#VA-{k9;TH`pOXKQy5I-yp)(8Aa& z888@8@OHaV%yyfGpbj-Ql8{+1fIiK^FFe$}B}uQX2S3Ez0G!bztgGTzi*J1U5f4kW zL61~Nl{uqdOYaCgq~rm8g5qHqF(XTO?7{dJ&s}!48v{IGTGk<@a)=O_+iJ9eAaf(yV;CU>(SO1n$&#S%Sq0y;iieC zF{2-?&Pw9&N9GOQ5pOqgU&N!tIGMDWw}v4W~du&@T=<}U>6?d7a!%g*a+T<81$vU?>bC96?P!<8|m+jjtS zeQ;`q7prpK^;C*>mO;x@47owDJ8UE_P{GUev4W&i{>y&JLx>&y59oXxn0Wd)A)pcU zZ=LxG9W-&u3xbNXVQ)L?KeBF-z%JQ^hnH?v=F zVIHLzS<)-e<&N?ZX%x^~FP?lSF2-HnYnu}ha=KZT+&~(1EE0iKly*$*=4Hv-lz6zQ zSJ<900Rs`Q!|rO!_d0?JlO6}&>oS}aS(g~g=`R0r`ED_JWJ_MrIiPXMN=OUL0-gdC z8)o8#!%WB z7nyYkef>IUm0LKAh(_?8R+jjFR_4)(EZzd+r!?O?JgU8jwFi;dTg*03Y)(%eftS53 zj9284OL)EFwpU8ROIPCGw2|4>v?+Mq@}l`(3UeJ>%0|lu;tH#~1Gf&6OWLGulJzpP z)$UO>T$MsWxSj%{AcZ`LcJfAH)icbGk@rj?UzGat7y##dH!X*OiZ8Oa6Rxy;QCS`6 z%Y*AeSH-_yb6J>~fobUb4j#xw;rDNR@9(KiVk%WJok{6^57_jqR8W_JwsyvJ`K%1p zYs_BW%%HKD@tdMDX9ja*H_z`Mt{F8>atBMzkavt6K`yjP^X^?~!%qEs^;lw*^{Mf#u zTR(R}Id_Ni84$%!RBNz2x?P1o1f^#O`ivLQt70xA#?njyuQ#XH7lCNXM^ z!X;%;^6TY>^V7YwEiL#$S%${_?Fb2={&M=Sb&GGvsl8KLwMM_1edd~<0iQ$&`iHN= z15Xylwii^>0|oPo7wZ)Mi;?Ad2{Xx}zv5v|Tf4Bu{mPg#QWO2D79r?q;r70qQf{QM zjg{A{fad-g9Z~$$QiJULc%l3&PbojX>{kLD3Jcr+s`910{Xy|rVvfb<>}RLJ+!b9z zncM3v=7k)$o!9oWM-~k3Tiz^ly#s$8vw{WF^u_yx?z__^4xSV2Mh~lG!aNS-T60ua zOdblv9IN`fa?T{*SIA;#Vpl#%n4zVSJsqhM#n=D|h&L@NKK+m95C|KmbV$I-EYfeF_z(*b_tm$35@59% z_6_KI>1sT|;iH}J1#iy&+5ZW|+*IMViGNe15xc=*;lZq&I%-{R-ufNQ@=8k;wfM)^ zuiPa{R-%rGU0L6mfIhma9s668C4J;c&nI!ZK4DN_uGT4Cmbve1jB6UypG>YE`DTkg zEhkpv$AK5mJ^;MNpP$kD6X72jPG&^4nQ49G<{}~FUEh5j4Q>g;+@EjrXMLcU&1@Vv z#4!dhS-CyNk>KPQFIy~EP-(O$ZX~V2KYi*=l4YHhH*3$8We`sMFrhUEXM6OPmlCcM z&NtmS`@YhHCCYex8t;@5zrHxGUS=rSYp0uwXJ$*j>|U*S?+4zq6}lRm%NvKr2P}4G zpvs#U+ItJEguTA6z05t#XLw1&1`a8E8)YM2+<==`y=2N=qo!)le z1=jPW7kmEZho%{7P4+$+?AG@wUo)Zq~DZ4 zLddQ|P|I!hU9}(A5&r;VseY16!VTVJmST|c$bT&T@`qN1Ep?0Qg?*-?^(!LFV%Sr%`vag24JgcFL=I!g^}aKeEt)W^a-)D5H4`p3f8Fsr}sz ztw=8%`SAyuX1@|vF~9o0k}mMS8g=!`L+V&gpAm$t{$Dz>?f!v*pMU;*(9zR-k(``- zD4K846u^Fey?oE2U(@pcYXnjihc;ShrDE%etG7#$_yR?Fr@K?SeO}zy*60c*YfI(M z&ut#_%JlD;SJ}<*IY=T1#c0b5dg>N%th`$0oj^6PCzc0L1HHP+S}LP_pBfjf5RcY#|J+fNHtv6$ zPIXW)TXIZl^vv0SOBaO^^>=XwlT#6sh_RE>@A&Ne44D6ZvV22g-94q|9j#1rVDdqMU%akSg7AovKLleUaemK$-gpgiTAv=-}JUH?xwI>MP9Q z+NpY6TIFW8H!{rJuIxCt(nz?{mvrP3NVgy9Kkk@oX0qm!x8 z?(x@Px}k27g5Bn+^fkL+3oHu+p=8R3pp4rQgJ`9u6-X8>vREPinrxA~xXIvX0S3s@ z4OLGUP0U0}h#Rhby}ZH@t?@CMvbj_h?R_S1(kGL(;TFRiSrNlye;#9)pEzs{Z!<5x zCYb?i?i69L3lmV6(iDYUTwswi*yVc8a0hx3{=`4pKhoz@TAWn8=J!9lM< z`(i_;&@T5h0mRth0wXjtrh3nJc&{-eMh|JzA7appBHgSJr~e|Hww#pnR%`Bu*@k`W zPiX@Zg(kS5Ywk52D>Sn-ueH&WinVEZc7-rwkD8kjeTLHM zws|vSF+_8!I%@7eqctrV7N1cNxXsv7Qn$3n%c?@0D6nqwPZ8HK=v}^C7V+HlRKUt$ zzIDcx9Jgha&H#93)ZE3dvR(RL31XY1Us>-^H6w&)$9XZ3rb%{vK$xmU_=vF54LimZ zacpw!+>zB0wvt(MK`VXHUe#C>v|hZmY`<}QX>A*WQ0)kIQ=(o;zGl2lhsepr?JkxM zS77jQHa)~5T74_Ma5g7?-AOcygt(H5_l`(Li4^!77AcWVE4E(^)~a`4dbHM2>gl~t zQ$_%PJ4B0G16Yev=;x==XDvmZ1GL9_2qBgi);%mvEi)wL175o_{I&&a2tI1fd$D(Z`YHZ%yNqN7`O2 zt7j57>w4`&*W@or2}1=N3JxC7BNX!^1mp1uD2DVJ1&1BBbGGBRoy_czTy!s`D`IOt z|418zZ^@exBjix$T3Oq93tnw)uz=oWAR7qa%E_MFoo;=tpf~iBY33OxKwuOIpE6S) z!CvyVGE;L1vH^xsf00|?4ncZD*;pFJ#OsqUO#M<*9K@n42!cc3!#zq)O8$!>1Xs_r zDDD(xBS zN&Gdgy$Gyfa}IYDv|KZ&PF!7YV~~NA1Azz!`fsKr-{NinaPxQRn;#eT1a^Ht3fHIb zu#D%%pQAVZre&ICYk;rw9QN>{W*-bTDR+ofIn8^!pG=TCIJPZG7xo~MFa1nLg004u z_;PhcJ5W3@oz$9wH>+fM%Ut$gdXi3MMo#jEVjm6SB+@~L3g*`f_9$;Exe-U&1VuHA z+u*+ct&{)-t>*vu3as?}mNj*$H!>hc)Ky5@@lk6;t=F%yR$r^six|j;rU` zdX7^>^`7YHSjp)PsdXih-{5r;@o%QJmZ}{!xSXQg+ETqeW(}>ef`3oCSnGJ}UhKpE zs8UtLZbe?b<3l>%5DuGqHvCQRpt+64@%;zU7j*x2c78M>g^2GjU6T0i_4KwoWWV++ zI`^TP>qIYuuA-d&sHd#dJ6SO#3-Ya6M0EIso789!hGA*)COZ5I8FS$iI!Kqo$6$tQ zV}~F%m$W%2_wjZ^b6sePDj4WwIuO*1J*@}DeJPwQLnt~8Ff%!8b4B-`#Q5_XK7|G)Tc3FVMx zv9-K$Agbt;med7lowQi*9>uF9i+oHGhZl=GoaB;L6*<`LXB|U%7NX48od_gzr?|+r zIobT)f0xr89(*f4~beln};Js|ya&IV_ zr!(jj;hxHyN-BD5afF9})l-dW1aNKqEQ+8KxmJb$a9OD$l*CTLbLcBx$9vfM1M ztrSj`W9wAUIDibgB7dqzYM5uaE@HbL-ROqy=d5_4XO^op`a(?90^TlvP9;>T5Z5X|<)n)G3%O^m^Vb(%}&4e-bCqlmnO>(4GdVUqwZ z;f=Q09+lsfLW%aKF#?M5&x|KS!pi|nl(wY?jUNz}8zI>cHtRUIld)gD{0>JC(qH>G zeG-3^4}zm`^3P*;U&rO}!LnBWZBFvyKM|unj#gwLK(1+T7Lp`s%!6c+!ZK6LE!uqS zOoEK7lW{^pcr$JrI(1iaxLch)<>Gy*nt#N!XfSMK{l8+xOvX6G?8(O3F^2Da>IhOW{Jhv?(LGf%u`U-OMc}!wP<$7+B^4r7w3LQHaW0w2F zTVovRh1<*1AHkr~!+1)rRPi)U*(B-%Mm0QrCfA2vT$@(!Osm}t|HMHvRtdXb&}2AH zLMIDWcL!C(lT=~39t$OPbWq$2wl`1Np26@)8Lju^g3xan2IlfH@-kXJuQ>Z%j|`RZ zEOnm=7M;g6rf8a)BMdxbMbwGu{*m=vgPKNLCvliqt+Te$V^*Fg^qQRVkx6;*$1d;Z zyATfer}C<)sQlV6?~8&lW}u9**AD|MOTX>$|GG|eBUHV=()Vr>r);h=S{a?xDJj15hq6Q0edD;JfQ}Z@ov|WnOINjhm+k( zjcYBxxGm{TFQnj&d`~fy|LLGmKV&2@ClV838CpB6=@L@3l&+D8N8<} zZ&%@I?Fsb_8)i?y2p;rFDPIfnk(owL7`$RwNHP+Yl^+e;&e}Q*Wfee+`PYZ_{;mMy zo-V3dncA~Y4`qrf&Ld=yrz7kD|A&68qY!JiKjlBuy1dOOQtr<<>OL8XVe=HEV31ry zoWo9=lpZh7`?`(#lKH0_hZEBNaBlEhj67Zeo)BF#e^LHl0rh*Lb;39jl*E0fc(kb; zBMf60K{RBPkv@qkyhHtl?q@@ovp&*)Ict(qP+TWvRtoS4gdRgR|GZopX>nO1r?Ys< zn2_MJN^=;MrBV++`HDkG%+f@@!+Q0#_eIk+(-Fvhj;*W2Yqn|Y$B}_Q5r8VBq*s~U@W;vs>(kxgdjHkl?s^fz0#`&++(mlsU{)F<4JpMz}d?(~cG82K!h z^YMxQ3HsUzDkF@5s8~mWw>f7Y(TryrDk6rZS5MPdiluE;|Iw_)4++fmz< zN`6Q=DFmMMa4l8r*d!RL=ziv-9w$DAsMb-mh1JArI;qDsM)|_?AR&90lnAu(&X^~OLt>yEO z1FXdiwPm_D*a_)ZUy_~wi!pa>J;-dSYm%!JteVt0YftP>$ZUByYWwD;+nZmBk7b|P ze66hx(sm#Q`p&#%V|i5t+0aR4>S(O<)qwN;oCfj+N|~o+OUpBg1m!qIv6C{hw3n-` zvVE1$LxNQI#pL+{&VQMl)6EvuXqS#bA^Rm-t@0zskgM4mCQbR=@iQN#pc0Zhvv}6o zkvHm^w+3cPzT@}wqyCX$Z_P^cZUD6^Kp$`WFFo-3`c#n?eI$yx@OvP*AP&rfps8W`1s^@R@lAdziJT19JjmYcpFCiyVe_VF`!Wz^A1(v4i-vh}=0+SZ%J^I@F7o;8*? z@jTl8{lE47nN&<>3rM6 z@pu9%B3tuS5|r^WVl$+PBf4ihPr>E^>` zQp}2Bgwf|w!(NuRYcSSv>J7#IQg`^6xzg{nttCenHc$ydQnsJYCE%FWi+Mwi?u1LI zg$LXO?6<~#;<{p6CW5aqX9a9I2h zz4*gAuOgdMdpZ472ql>S9zf@%hxbYrmYgWNkMj@Dd%0^5~U z0%uWS?gUb@gG8i#e&_Rz_PF7p`fe>~iPsq*xPcfn1>$DH5YgSCLYR!FE*5nnRhtw6 z-bRxm`j+R1e#1(YRFJ~R7aJ^3Mc9fgvheA`FE=uk%*<=dX#Z_oD`q)=)`Gtpbq1v| zS#`UgybX#AN2p%Va@YmMKR&=&rB|Tl&}AjTVD+j&3ncR&u#(R(F@8Qa=yB{n>y$Wo zCv(Y(fOY=ErLI#E<)FV=7;I*W0MQ8D4$(#D3Fh06FVC6r^0^Li+$&agre}cPWlz+m zesoTCFz*^p-#F`R$d<)c5VO(JVmaG{?#D3+k}FAiQ=T|UFGxQ7Bztyhi?=DOXHN$2 z2T?FD187e2JJlt*^Elfo|Hssbh`Dyj{N_`}QT;bX256O~k6N(17c{&h_?Y}SQCIW4 zhc+945Uc&NidIo<-pk!a&W(jwu(sxOh!@CG0>vMJZMx$HY?6|EH0(~Zx}1!o5<|_v zZ1HFl0Kd-Zmkv+UIva$p@ES@~uD}6!4Zgs0rVrP8(_AM*ZDpFB2p)GBoYg3&^$??P zAXz3K;~i_40Kj<(1OVh_CM)uf648b(K?8mZiDA%tgx;fmR`kPviAv1ZLWT#7@VETv z#v?g3C0E;GV=0}3vJbZP>1ZRBJoC9*$1wjhcjho3xqUK7%}nMI7Z>+zJ>Qd@wz>ya zuc^MKtcYz^_9oIUZVX(H-lZrKl4)QENWD(f{zN%rt2IU?Kki|Gc6MrZp7&_;X9J)h|e`flMWed$g#`NOWz;@M8FQ$UBywsA6L`r(1sv(8;|bDc0<>$ zR5yRPHiC5<#cyfdwUx`1P#>vH7RAzDPq%2n&RuF<%=b13`i+}m=_lEFh+hv1RCYR&7RSCP|cN;9&_McJdfu5QEu_;v{ zW0L4uJb6X)o*|Tv>{*~pbVYnWe?&L1SQdQnNe5oTCfk-nZvPlg;8EOFkZJB=G>&nZ zba=NB5*X5?shv1Fcc2X#oqL?NN2s zw=2)cP##bCBc49`RA3nJJu^0hm}bZlNNjtqde$s(4<~+7`-eu3OjgdU2BouBHD<_^3B?UxACg?$^iO(gUWNq4y2U>dl+{Zf9l zYhR0fy|Bk15%0p^y4VTGD*g&1RG>eUZYsp6+mZjn5X4@&h-iJ6Fnerx8lG|>6KT+c zOP>!;S>_wPA!^QWP^2sMaA5sPl<#s5LjO!nkKvp1Db3KW8m9a9J(c~ehJ6K=)EC$Q zns=g?RdV=T*LJb<@0DgG0-z%F-k)UQ%ww;8PZTbG+mADYGKo)iPTg*#4{tUrrR&c# z+4#aQG=H{SF$g`G?W0-_a`9Pw+4AEd^yIk3RwfP_2fEikOgzsJa4w=HnXqYec8+k0 zpS2o@!UKo3$^WzH+Ep&%V{-~R42NS73sacslv8k})6i4HR?ts34+RUG!{7%x2PdZo z^ZE!Z!1$9EY3%5~VTc4zj<8HYWi5#NTR|%HG_!-MlK{vgl9b zgJVW0NxVB#l#5xvs@UfvP|29XMg3*;pb2PT=dakWhc->b5?jr8JPQ?}0c&)m8pWXw zGo#mWmq}`)#kKKK{ue%uElaZ8ve|EucJR+r>YYQ@1A07P#Y`XiuK|P4rQ2Mz`pLF` zf`s}WoThTD2n=$@qNDo+e#ZeFd2a_r^Dm>Xkq6EnU(5w#K5nl6m5BY2M6X?(=T7Cd z&GP>c_Lfmmw{6?Eh=2+VAPOTLA|>5J3lb_IBHfL24V{h>GIWV_NOwwuG)TwLL)Xw< z1Mi>nysqbd-gn(=y`TIlYt3=|_kBCI?Y9MA!g3cXS(SY@!%bO9y+)ANgLNRB_yJuA zs(wdn(Y>*$sr>UGKnr$5?%Ot~xM(6*hmpF}2e#wgi!y zgCvO4;qf}$``?d-K2E=6p%kg4>ttFa6b75e#(z#odyI4G50Mx6rm^n)DuZshJ->RF zYVH%k;#KMOfq{bG5l0<8!pR_Ui|r8*gACkxaWqDY4uxTXQYV+2Tp=mba2V!s5J+EN z*a4aB$uA2nOm7R!WrxoNS9u%z_1{DPMR|GgVCd)pX)?NXjVk$esG z0R4jK?hmK{~@Ycu1Fn) za{asPied%UcnIUKB%EKYW8)!zAbZrC)~h@y}ZQXm?Q{@B}|L(jycK2XOUU!s+Z zmemEbPHqh9{msp+$gq+sL?N5)j^`f*Lw8_YZ9a5YgXf<=u)7#~sg-Ju-gGyaJQtIk z;}hpspLRj7#cIWI2$N70$0eo~iSfXnJNq`qkA9m9G@czL_1cA$z5(plzqm(9mKotL zQ2fqU2;i$?U_s`#4(NFX=S_Y-i}IEf#mZWr{|^fa*hXIc&o;s#S=jdBTPuDhGdTi$ zdw;#NMVX7!u_`_VU=m^A=X7UVi!k1osTE$0kF`$=tKLnS|IG8sm(D=KPXnj+-me>xZ>5*t`~l$8@*af#rL`hr>4B9)~>2v((%rVzSs{&3o8`dI!g z%ke6fDULE7@ZK1ge8pdI5Z}-Z^N$@&a)Kt8IPkk&X1~U-gwv+Fj!y7R%f{rC%XZQz zR*oy}b{{9GIO7dXRJuE?stODwy8eCML|GdAgm9<{?@_3Ew&F$V=b$W#H4?g(7&YV& zK4wr!&0F@j9kBZhm>bv2gf8Ar{^mcg4re`ObDiS3GmhA~8(dPy`D*waH&13rohv|5 z951jBI|djH4SX&pT~cL?tX} zOKCEdWNQpf$@lVN-AH|5@`k;0iadVr;OGf+-TI2t>iOYr-5EE!guCu= zD>~BQ$&NWf_T+>o@p9M;Wa$2f&{wy7IY?~WRdA4a?>WM@vTBcb>uVb=c}YW}8#Ybb zxj7BV%Iyd+2|flex`;n0f>s%8r-|_)Zb@;R_F|gve3#6Lw+90pc5@Vc4M7#GRyYhl z`&0AkY%^-%>tz5G__sKyDe33z5XE1Shj~ed!w11)YFGKQx@Vg@GNJ&{)L4(;p*Cz* zr@fVi(&S?6&84@-jmC%FFww+gGJYl5-#)Nc#fT=?y(77L*zWbbaUqAyQEAx#$gZ^z z9LL4K3eMAtih3)w-}SlC|42ZvbW@Dvav@-6!XPXgG8{G+d=&(9Zt&R`0yxsg8-_76 z<2^wj3ab)@2NOMvgA`%&73Nw$shWsNy2d}ls6>w=Ak7nI__qMk;FX@3QgZHa^To`&I1^#Gg zb1<^hxAO^#W{jwn)cdhMmYkibV$O(E`m7s9S=|%kjfF@`#bOEbRyY^vM)$zrIh=SmO4;tO|bFcBycM?+%InLX3a-> zi5y}bF;UU4v|}>%Bl6=F&+=vF-<6qaCs^-y_P4sUQL`nDnLD9Pt7yoPz{= z8yLmL7vRkYy6WYn7J*5PlTnx+?r7i$B$$hvREPP~c9>L5Z;m1hw8QY8^J`33e$L5i z=R?KUmgi@l${%Y7dHX9;O=cdHw4COdcJ|0$z@JTE#o#=$-RWGN?kaQS573Y$A1?9Z z?_l@cIJd3J8C{z$0nMiJuMvI#9UQ+9^3wS;0a;n)3@KZ_Urqs~zofjO4%d&fbe9yy z+QFh~WE#GFV2t5uU&?3>0K3yS7c_Z|l3Vw^F&bO`hw>k%rSX3~vd9;#aXgT(fbX9Udo@BN-_+uirtaN;gf)w^gMF zaL;Gqww5pW@SMQ-2;qyyVFFEuxFl}x3^FCmHiMtGZcfdm3OHKg|MZ!W9v1v{1iz8^gGDgja(& zbS)t)KJtRSx==dErnwXeFiHfGF2jQ|y{gnquyUrF+FsB!7ZcBP7|07T<}!S+JWtTn zU{R|O!&j|fEP2aFpSiajaOm@w^v2U$F57FXKfqZ^dH>#OY3*<8Rl2iXr#)y6$1w^a zo1Z!hvJpS@Wd<&ggC(2Tv4&Ub_Ni-0R$@5T_bYmS`l1U(+@b_OrrjZ=7pX2QJV8SO z!;u2Ex|v53UV5FP9xn%Sr7@+DyQ{~Ot)x zPrRSKF3g-0I(|(l`sA-+Ws&P_`uql(;#G!Ik*Dvso+Zip1~*S7`ihU#{LVtW3~H%4 z$s%Q8d=@y2SHo~6de=aISCV$#l|PH*8T11bKDsiVdfhn+8sh$njNC*eThcH}p* z{Lr@!gE)R(y`Lw@PB^kCMZh7)IEuo0W{Qu^*(NFWi2j{zZ>ijJ1b{J<(r~WxSw3TW zyiq(yQB$!8iTin@d^;qkB<7QDyd(@ecRnzz;WNsTt%kM{hU}5`+3FH?@G;w?QInO* zIkfRB?ph?I=w39%DdfnfBFz_*L+46azRh1r63?$wx&BEidf>c!kXt;!2yy1FgGiiS zZgrgj!|0KReTK`5KZH?x{C)EeBy`r(_V(+Fd==vab`O<^QgW6-{Lk=Q68e8msY8b=iA?#}Bx&x2l z0Lw!W2iPCAq_fjXYU9c{?ONZ*CU{MXa;%uwK^8-Zns8vrJbQ1eqfTBbQkAsxioR#1 z!{t{0efe5U%4`c_x+U#?=%m@`QNH`D771|0h{oSt9d8y@+n2PBQctp<426Iw$0p7f zHg(6fm-{eT3PhCW;=0=z6?YNcJ!S4gb^RQCc9ddF1ea6gUM@Ba4jbtao0g(i~MM1HNa&TM;+woOuC$4yz169C5T^NlF6?h?^~tx90THmnh)^ib&-D6OJQ^0~n>u%6Hu)SnYNB zU2opzx0TiZzMrYTd>Q_Y7n>8WC@H0*$5imG(ean|_Uw8AGlwNGkqak9rya$S>&~F* zM@^Mn#dty6&iNd!mLJtlgJyiiOV@HSQARB!{$a09^WEd@9^|ECM6ZLZhZMYWgdySndPzKq4EhCkBxl?P~=E$cP z@H|M=q6=UTZ!kAp6FBTF+nucf?t4qTRyX-t!NVsBk1~G^l48q!aVIhs?feL52Ffln zZF;@A{G>?6TwL8F&`VV+mSbTY93(Nx(94Kw4jUry*Fd@czVMt*E_Ui>rZ}!7wa!UL zW9!+k!(^t+=@r2RJULyVse)>uOJH^NV$G4X4Ipt8RlMTX+QRSg8p}nuKM5CH#R*z zLd-detAcaaiXp@O04-~;Ut6HJwxRIlrfI+g#soG_SQbhc16`arO6~CA&20(CZAZaI zLThl_h85x9Rv*Fd>|cby%$5q&1VC?s`bn`TFgyut5gs4)K~&0J>x5Hz=F7oQzAZU; zG~Oi#=r_W){$e|x#eHk7TH5WT8nO{WHCJ`xwWcrrOqaEt7-hkjk;z*bmu5p-klv?a zcZthrwM+U^_LaSkOb%G-D}Rlmfs|{JHmS0bzL>A45hc2HI+V$y2aYrChzdJliPsM# zEE^9O-|`ai)X&;h9O)}!b9kuq8~gLUzi0R6g0IT?6CuV?B3>V}hCAA(X-O()%+BEU zl&C?6Vw-cZVaV{EVv8-+hY1;52k6e4mdR9{4kLn9@gFCCl+mxYj?$fJe^68bUL0En zeQOzc*58ko4=>8V@j#ds-I}q;;oATZc_HL!9Yf%&cG+y1@DPTHMYzK8>N$T4c4}hk zGihdr3nqdmdIyaKsT*D!E5B3`$1UW|O_QZiRZ4W3*hbxK(Q+hLVc7KzFc=ogHhW!{ zOWTsH=J%)5QifUCv&*g@ovoDCn(Tf4=YLAKpJG@7y$b6u|2+D#r>94GrW_#8PyyK_ z%^XnQ?MlLykf8)e2K8`XkYHE(59KRO%Y3TR6ZQ<^4Bw6?sC`|Dvq|rJ&4DzJH5=Yj zUHgbwHTSkxdA*La+!!)88AW$gy;DU>v(qI?h8?=7`EWQuxF3jD$wG83R;L-X#K-5B zdXI;Y^XdiR4_$bAL;A!2cFTP-+e(OvVyTUn@Y(yKjga39Mg{s3$EKqb}q#P<>&=Vjev~PBNXU*{;6rknXi@^05%?b zbS2cxNJhLda$c~IlZjp{)^4!YqofqhZNp6H_h=grErS&$wdF2DuiZ-HSY9>e242w$ zBkp!!;MPgeEK&Nwt2SNznNb{l91VbXWK%~=8*KrW_octBL3`aq^gop3|JP=W3y%#? ziR}fF`Ku$VIyqiXL|>EYV4EX4N8!UVdq7hFe_Y%CT1_Cg?_yythRaH>;m4!=N_k`A zOrtvzPYA?7TFjG63jc>BWxnZDFP6s_GVC|gi+Z9&j7I)MPofO92B{()>*eOhqm}7t zJ5@#93w1qhMt#s%y*uSzv5ZZHZZz>^=F4~#l?Nxnq+_%-tjbJD4fUrsk(Y{cAy|&F z;;%j!XYUyopUBu;ZVn$Ag;q+`R$}GMN=8`c5^(V%Sq84$$aJs5xIK4|H_qt@PQ(&j zUw>3lsZ@Hda#!7>yK)nJAhEXT_VA&5NPIs5B@C#n_`J|~u!QJ-WJXD=>KXx9#+q*r#pLtw+!nkgL=T0*o#^A#nDa7Uko2tNX6n)c& zf%q2_v8vDVZGE_fwOOdEfv%o3N~Zy;_~iN;)GfcPm#0C4gGOgokKn1xr{u`cQ{dT< ze(#$^a|o6PE8{jmqR=amM2yKj8=RfaN;wFzoiqx9zSTpe2b#If2@=_x(0p4ubAB z`o40~hoK%#hu1!l-Be75Y-xS%W}LNq9Yg`;QXH-@SF*9|92)^5B!xA(PB9wm)67AY zuFQtQ?xix*W#%gO`$6?;!B9oDy>JbM zw>E>Mzt&nfC!uz*x*xozNh#SoSAJrigv6$U|K3k13E&FS3zsR8HlOmePu!CC*R5)t z&i4%~>*0^pz$x{ohBRqIX?tb$mk9BW>o1+5P3vd<+KAlZB}#h&${BQU6Pzj@z`en= z=6~-A5@K9LVxesSADxGs{&otsP22jm`>5)A_JH@*NnHJ^`U>KK2kXwa?Ro<1aVflA zgil>c_ICCYR4!)uT9R-EiotnnnzCubED)${y2bM=aiYHXI0pbAJB; zdKlX#k!BWo2Tj7`=FByEuS-1G9&SU2zgT3<0#Ewxj#R(*r1(E2z zFP{pJ7)%X+Ga!}3tAN1pL&avpgI#>9o-fx)mwfjz%WQ33KYfu^A-x7;30Q0XBA)=` zI?S)W(1B-IZWlDN(aYc?E)74lKSa-nE3LMPD~&B^Qv;1|jyc zZ~tvsd+zbu|5i-Q&e-2r^4-e`+IJ4CP|XUL*sW)Fx24dw8f@p1Syo0&obVv}_Tj(Y z`2teKxU#WLJV8sH6)p zA$g=%8Am1#(enp0!k2;`iOmFcvUd{^=^ahI4lxr0WFeAoj{j~BjA7JvcQJaq9!1>x7X0W800Xc%O?v-(8@<{maN7|J>BD`oES(LRs0JJ9 z0`}@flV0hU^b>D@zr}k4OEM;n~5#EvnQRMsW zehaH~+KX%9Uq7Dohh4r??cd4jEhf+jp#)PuG06^{M6`B3(!@s>h-O`Gy2i4DZt-jas6xd8(NVX=qIQ58VY+38DA>&F z@{fc2{#fiq@pS9~ClLBH;Wp)u(~wQkYxL|*9=Q%U(HAhYh`tChvmzgL-B<=v>#|p2 zo^$MtFM!lXBo{)Gpg~b>@KA0(|7w&rj#BJ?+bueJw zR0341J9<`C>Hm4h7U%r#Uy9tql#%53#$2Y%Im5{bcgXl*``}hHQ-(`S2;T*8&i=&7 zoZ*ZQSFqmm3pOmdmh>lEqA^{h>1MVBGcNDV5OOZXe$pKc!UhL$joHkUHOZR}zXW;| zQIE>OSGnsOT=dYRq&mZm7u;Af5IA(!ZY}AvWeXq_dcTe^AC7V#?nhIJ))mZFVlm}4 z6@%(x-qr7jC$WS7wynI!Zt@L&5a>_Z_G0)K4e!g*v$3i}Wy2S}(hIzPZN;u?-x^#N zWRLZ2>2bsHhI*7Os5ar`gH-`RZ1jbQv@4|a zG_+%a(&|K-fo-NIxycg-`Ow~H$O-<5%`aH|G-=o!e&KI^%&RCFDKu|jp|H@19sDh* zyn)qSiKjUDL%XmufF>z7I-wKAaysu$k6JpWnJ-v@&2rlQ0nd3UR_5hic9f`o)Nocf zELrPGjzUH5wH*myTYsuHF``V&6V$Ywt<*a#Ne*s8;UlrZGt!0{wPy047~2y_& z1}ua*y)1z`PH2IExXhB2T{z=}1B;8)iJ3PTcnqBvjQu(ioM%aY#bsaqM+_1J4$+1za~?Cd=RBUS z>(V4SHVE9(`n)kcr&wDv96OSJ$Xu`x4`*6~l58#$kY4;iaxwVMdka2=(ZYRM%)~1i z6Fv;*M4t(ACXF>cV+A|+{F7^7$BqaG8tos&VN~(2$_CcEB5RaVTWmps8+#*F6je%B zUUmEqsT8H1(_i^tD`j1aUe(B_vn~U+@;aaOg<1f`maNFfYVYUbK2v2wEp4HEb=p;R zZ}o1tvVhI@O_9-(%|&t3$gt~($O7<$;=sW&r7t|j7wG$;xy=rJmZCJ_rz<~w(3f)G zqUTN*?{1xap@rlCn+_CSgZeJwX-}wj{OZ~c>&L77j4-hSKELDx9~&AK|9EB$2R}##i#T3S_v- zfZ3ac2NGKI86(vu_aKF?4XsMkP@k%uEZckg5wwNWP*iufj!90bn7@w$s0#U@^__Hz zdfY zK=#hii}AOjF*t*}mSd$YLlc^m^mg&>K&1`d2=z9BN2-bB2F5y zF){Ld?vL>b+K3l6KVDD=bOSeX-a)e1ppdNd_XQ7len{NFC}emIER#xH#P|p%WW3hi zgWgICStNE;H0)up@%8C)gZaDcFZiL@L^+xP)ORxH%zfYRm6a*_5nl=YxtP<$?+wdtzF!u+Nh5Y=YK)hw zLjL{~R_NVD1~oNDNjgPr8u{;zWduW8#xFXPMVOmh6;4`)L;}ta!5b4;A_5!M zKG8_K2FCjrbbzI`2OXbowz( zQ?xJknTd`(HKMe_qHwZT1g(t?lsh3w+*f^Y>+Pick|^p2(vq8=mW5TlihOqw>h9Z; zcB4f)!E|8CfZI9!u7*S}jgh~`btCty4c!k;?6$3>haB_sxQ*fexb6btLfwp#5p3u> z9=yUgjk|?m4T?2?WTp$$In*bBwopU6l7f04_A*c-?i`Z_3Iai3sk0P11h$~3ELh!0U<`?rgMttO7l+0ht#q0 zsd8~TxL%%zdR!_M|ALpE^8P0Z25P;rFW88hrpwriL4HAMjR|Kn^d83o+maN=Ld&n` z71`aD3DM#hI1nOvoAI9v<+uAFQ6^d%yYa8pjF)e8jdW$F8hs14^nifBzruOzXg#;b z--lHt=|~AhDMp2CWNH0tGAXlSED9!ng%Om<_1>9z_WNWSC8LZKJ}f;mP(hkbm25q~ z4dUh3G%$8N!Ca`AM0VaN;}*}VX~uQ^Gj$UnV0&55xR)-T!FuKL_;`&yKmHDU?KnU^ z{4mPU6B5(oPeKSb&LqS(b%8SzCvypo!7+st*Qr9PO|9LJtulk5#n;LJyA92#sPBsG z0&an=$RLft@Q0D-LFIB+#NJn1Y#{e{iZuZm@!o5t&cT(ysPWJICP&qfLz`!6YWmJh zCN5^4$4K{`;{R7ko;$-y;-l>?o7xe80vj*e-pwOM)nTw1eimo>aPE7b0(YAGA7qz@OGHwI?40O*W2yl2 z3{nFL)%8H2{W?RfTrSkh=r~Et>FwC(*efcrGU27HAx%K?L8M7ZN=ZyCd8&_t6@_7i zJb}?JX)UGhTh~PDgHQR2U;E%@sEep&vXmQBOo&-igBzl0?>n-Y+Lvp~3h-MPCuvfP z;L8Q9w9;0Wo@dNQpQaUY6}mWilOwZ(Bgw#@XaNfNHXsK)krGgyopo;S*A(OmeJ=i1 zX$pvYbRT0#6@2p*IB3$Saw&sMyU%sleQ_D-@1gla_#z3O1gpEaszP!UebHF=doPoJ zb?Qgu15hGzMzIDSiqLP^dcDL=6}P9^S#WMwy-ZoGg*V6lGaxMdOgfTP|YIMyy-)cs}sdz-}v+SYB2AiU4<4IBS*OPANMnou`DOsK~IrB46 z+VyU+=w4h!ll7&>(IJO+l^l}QuPh*%e>GrSh-hi1?LP{~y*fh3u?`F{l7LfC zevRPV3kC+&0KDf+ciBF`9PtJUJHJZnTY8ZkHvs_GCuMxD7a6C#4Xi#^YZDyfJF`-h z=M4VLsLO`zLgsL_9bTQMAcJQe+BU-`S5c$tL(A1!quAoTN{am5CaU<8t$Fl{i|^F_ zBCG(Jko6Y57j7B;IyJnJwCl5yoA0h{ohI0%~Mtpg@@b5rH#_bGE>(XBLFC zPTw2yT;ldS!$dmAV&8DYT=;?WZBH^&8OR%(Qs8ekIkxjSqj-E?$pZ*s5aR@!=1ruA z0Cf6+`_|T(&?Oba7lEF48#dQ$Pu{`f?c+@riII`Zq?EX!=l9W$m3Y}2tfDI-Yj#0+mapF(KpZryU)C-_| znOX{jt~i|)V?a$*^QZv5bi*%4)f66ui1uT)P4K+1K;y8XY^%vQPexf zdS3m^*Dr7>bXlq9;bhu*!q{)&(O_<_YTy}yb&*3Sf4!k;Ms!>*;_6cq0x7Bd0 zvyKmmO;#|n;m-s~I2%rQ(Sp5VUV1O20zngED`#w*sN)nvpuY2B>4M|TWUVmIgAzCb zPT8^<&#}D&;H2#4%nn>&0Z|6jF)hR6fGTskS?2n}vygb;h~`5p4^el@x^BgX&Kj%KF>JIHebc~cm?t?+Oh56z zS5F_vP2@K8rgF_)6Z_LFq{9#fkv-uMRD!2{;w_w*Cv{is$x zK@nmMshQ3y`tr**NwWKiFHb}h6<$ufnU0GtcX+Z``b^QV^MG;6on}}o8sb|P1TEfv zhj6Uiq4nl&a+q9Lh&(U<<98%~eZJ_P-XFx$CU~!q4`@-^xMbnC^EPO@O*%>c_v2kc za7><&u_IKfa7z7F=`l{yKu8;^$4OR|12<`rI-g1>)wbnq(n|1^0butA&HO4|F&gps zA)D4Fq9%N@`en4-XY_Fb#3lm{7WxFBI$r_0RrF^?U%lqfzjSKdWm0OrHbjDfGezdC zK7Fq?%zO_K)PTP!3e3D@Um^N;*^eTCniW~AHFUX=N$x4BGX12Hplhj5V4ypIt-zV`k5-U{ zd-pfJ-di9c9oyFB`VKIO>|yWQ z{e7i(4lfm74OMI)1CCh;ia$Rt1I-{{=5O8}e>6&Nn+|22ZHx}#?e-RWXgCscutkoc zR;WjD!Ip~|DBwx`?I61IZGS=eAX)wF5uo;;wC>-4-^C5a*RNiLo*qe*u={GHdA>C~ zOZT?akI!TGpcU5+OPZultS*Xl$2ITyQI?sd)ST8RTAJ**FYUdPQ!Uf$eCa*h$a?4C z-uf>6D5>5c4o)S^JstQMNPRh74dAncbKoSdBVJAzTD^R&d-iaXa0Yd8{TIUh;?I?@ zW!3KdV0RGo?(*a0r6SyZD!&ESC*C0W=L0?>kZ^OcPA$cH|G)S&Z~c~seQT$c&!flP zf-&$vJ|!Q(f6mD@^}bSK-O;~Y z-h&Rf0Y>j2&LHcNe=2?3AsDZS2yQ+vAHg%Z0(-yQ>RPr}5a%}mxHtM^BChgzk6oou zn3rTLnZ>$6pJdy=g>9W*iMwalIdDt3N;kI&J@X#1yP+1ZMWXf8OJ0=x^Uan}qmZIu z$Pji)6*@BeeaY9r{AZ8C-oL_GL-*&~!Xu~6I7$@nG&Yo$Oy02PSJnicj{a5tdlY58 z?O__6;|;(}+(XO{`}`sLcA6w)_5CL9z30+?zYeK1-t`aaghAcE5o2RdDRE-F|Aayh zJK~4}5Wtjd`t#7n+xVX+N)$Ha$yc-qk#00Z_r55Nrtn`B@;ig)g$R1J`Z;|f3)z`=@c&XQcgwhcL<2d(n`VUGWMkz7 zjv#sdFS2#7Skd=oO=q}GpUF1r1OxqHChFAj%v3+Cb2E(MLr}#r(Ep*Ow2K(oCb;{_ zS$Hpq9?mwNxol6fToLS6GvyZH0Xrp#L9X*A7H^2}r*xqc!tm-R#5-deQHo~Mf{1fB zkxl3h4bxaU?E7EJRPHeWh>}lNq|4Dr0UO<-6%J14bA$0%G4pLY9_7RA{vTOQ1hcN= z)4!(U#?()yvJN!PO#kd+y6r~9dR~gYw4Th5ZYugjjXV8ZJJ0US9}`E;VYSNRieD?c zzL`U1HSPTwd|9>(sJj6w``-0fPEuW+?quRjx(f?jt^#L@)=7R!6) z&cxlDUujc18eymT%ck?l0N9Z4ZqX*2w7dSayF~x1s-XW%m(#<*`(W7Ibzkaf;(+9f zU_Xr-`yLAS6S2vMp!&`>^4~6d$b4*(J@_Ms&|9vb4lK{GTS`&n_YsmKTZraVvRlq3 zo0;0;;Z7dBfY@-m&CgZfC8h%N65d)pH!(|*&WQ6v@2aSI$dk|gtJKFJJ+FMri>2YXhSm!S&xnB%(_%iJw;fU|_z z-6cQOB)aJex>?wdI_E!>$OgtK?$3vUqVQE9-Ml5Z1jM>M_K%CIQG^#z$nJ{ms6=pq?)g=|yIm2e>l=}%!Pua`*(>#8dsN0<^P(2jy*feNLjeb5 zN5IQq>^HaWGWBe#(zJ1!cjiPeSYM=-^=;)BketPzd|3>Cf-x%%DBF6 zutcFyYTX;~Hw565XB;|&3mw5Qmwap&O7U0nFNA`eA3l#p-MNK;zoM-M-x(JWcFOO{ zdq^Vx$1Nn&_A`FV_DiP)|aQ>eoO!z0DPO*3LVHpS$F?o==${f)7;*yGf z1^@+>+aKugbsK>nfa_hh0r!HPMSdcsc()FC^UNC?kD?H zjDuR{55BfqUgThnlEIIL5)+7$U!ve=>xGRezgE@Ih+<04t#4HV0Sf?)vfgo~-er>x z$cBF8HkR5!&4i+sLleNVC9@**q8`UX)iU#iDuI>#Mn@g6x(^fIRYNLM1Y4H`y$a5a z#(wneNjrdfE&Og2n^xI<8_EQzz|cMMT6$o734xHD$-Rqatr-}vCBbCRYFUu3QXDDL z&ev&38BN>vy9ja#vm^ND;A`C(B5jV?6-2u zlef%yb@Ozlye|lns5iPWFokC6hOkK4l5=t%3%I~>F0HHn>ho$N$RcWn&@@gRwn3S! zWM##+^BO~Hu6-QuevTFmr?vukj2C-b^5{^<&jsPRk?MQ-W1ks1#`AP%PRUFuC`GF0 z!~+3tTOe`tI?!9GoIku%@4U-0GlHl;F(jnr(0eIXf^14t9+;{8TwwJB2qyVBZah4> zh-!zd7@%RxibE;M<5TMz6Jnt(uj||U`X$*QaXPg-)0LyAFJ9{>JI-lL0&m~NS3$=? z#C_YfJhN5bQcolM`dr7WYD@uTW~ACim@Uy_r!bF93r6SY8p|+e8 z*(*Aw!v0?jX@I)IH}nw@C1)n*VVjoq%UYm|-g-ywyl&%_R{k#ZZxY8(H=!z)ILofR zO^!!}S--i<7>#(={E#Ns53YYJ>tk3aaaCJx+fclirG3qUn#-wqa(eAe?C)51plo|R zx#DZ$b90*VNwg_8rXO@@@c9J#TrjtJ8h+r=x*G()ri!`HNV#!T0wCyKj)R;u)aa>t zB@Rkf_;XRFS0Ba2n)%B>oIdJBnor8YU50O()!gP!_M#!C9hggL;-98x^8Wu0$^b$& zJVfW#^qq`M+*9>g>(blb0YOC4Tp!HUMa#tBa4S(p5gdM^eA!lv2}W`{0`2I`RtOID zKxt^MbBp0=XELt*b4e6tz?^qrO@Se3VH+&?JAgbUQWpP9v-rnMHYf)$3EvUm0wk64 z=^@Cr99!$I=Zl1Ft~0{ckDU5aNOTuXISbWQ;nk<_NhDZE2|7 zTR3e=Z`*9wRjKQ}xQ0V6b&UP=Jb`DqIl{9`!9d0Kt>YEI1v%Gnu%KIZD_6HQxFxbE z=9vYJUu7ljooZOFJFU}`0>*ULO1fw;4OlSLD<<(a_2wfjkC_70 zefqOr@pEqHi0#Qnd3N2w;nVCAnm5^d(@a3zaH2Y`I0B_stVvfguZsBm?``zoa~GiD zb_F_xT?UEWfh;h;mhv<_zCc^~lCW_ z+LO)m!j+|14){V>iJjjA`0`pn$Uk)2_(0w5&?x~so>EsQo)fx|HG;!apB%`jLC;qda=2;tyS9V_k~T{_5IgF zq<#P;tUZ92U`#*be105T-sm65FIq4HR^1I`5>XNfzzb;~mipRC9@E!+|uN(0(@ zL}X@wm5=rD*zkY$Ag>vT8qR;8P&F-y{=52A{X>oh3M_kiDE{qsV9mQx>FQXnAG;Tj z{uuM+K!~}MQm#L~6jdiLp7y=vX94|)X3-cx8tX}N=gG2a7sUR;4e0@pLs@I%vQnRo zTfBdt0X~WG+&~8cV*r`lahNEgN^cof{NlT!d8bCNVq@&11F_oD2xw+ak0GD z`fDZy$$xS zWZMz3y#_OTepuK#l%DB|??cACqXe`URsh(cA_Ppyh0?;vIDb3>6M*GH#5e(T?iifx z5V5j)|E&VjIC80CjjEunATCNwSCJmVOh!;%%uZK35QL~=f9n?#eKs6oR3vO_w6Q`4 z&j(_Iapn%nw>}QO#6(1xyoz}`qd*gTtus1?Ofj+}o?ueKFUf6FD@^8!zODl(qa9Z! zb?+u-t#92g^5+`h$pdnE6~~>Sz9}|qD;#KweY~sMU$mw2tLs&z<-!p9NbCFfP zA=`i;!L3L+b|&vsr8%VE`onO$eV{d94F@e#`K$hyz{+&!yN{pLXvCWdnh5%kPfH^U zELsPjISpTgOqD}tUWz)WG4xsHQg5i;*&YsK9_9C?!-)GYTX`nFDa^E(ftDg3K2+Rj z-Fn64=J#pbXSQ_R+pN8=&V5CrjZ=@DMKqYX^C=iIfq&m=sYo27O}&Fh-daqBD$jnJMub3>iZW?h+d`+~%E zq!2m!5gIr?4p!#VJb)huvBx~ER~O)rdM}E`Mm}{Upl-m>y3WIaQ@+11YUqshtkuD6 z>$oTK^x=dq<*XJjP`xt)a~Np!s=cYzsPk%)(YD*FF#FGE_Md+iXK-+m#oV-FB3=dd zXB-Yw)_U-H> zu3aX9rWtcx2@jmkfwP*d34~vArwN04A>u!7Wo18{Pmc_Ci1rI;Q#1V1l4T&T&QU{9TW&ukF;Pa2i3R#oWDyeMw zT&A*s_t3rY9ioMqnErWZS9XM0MB-?#AQ~@|T;>npO6j}oXEn9Dgz%kr+$C{5>cpi5 zDP%`SJT{>7@@3vvr+2SOwGL;m$6CMyc)4JmJf48REekW6@;2`3PAh=UF26?HtZE^*re6bW zYmLl~yy03W(#8NedqJPhYI>P2t8eRcpj5)?I*ZgIWaY?-auejuXi2yC>V&3xC*7H6 zja=e`u!gSkvx0-^_)UN1s^5oNU-2g8S2yCO6((xSFPctO6YevrDr&$sNCeZcBX4r) zZvis(tG6*BY}Ce^fVeoP;bgOY8F;{NAR#^ll-bJsZWFxO?ibB-I7?$s)TKV#LUYw& zK}~h|J2w#q7B&mDh816h7|$Hz#BcyzFEXJbhe_UG^E=j-pijGdv zN+rq{?QAqFSd>VyN?^<4PjZoX2(qxX_uV2|K=s|&S@o`kc6l(rsy*)L45Zyqq3hA@7Ut**H}CGap4~V*aBnu<_nPz6V4A76`zXqs z5UK%q*Au6bT0(ASi)}oUGX;y{FGODXmP_2u*Lf#j9~%Q@KoZTO&el1Qh;t;Z5A>bF zI1(tURXe4c1$qXW%M9MXE==V2j=DZ?3*Vi$;fo@JxLzj(5o37>l~-Nlg*v-Jpc2wn z8VKnUhF*TC6>1vK{Mp(fCnI>vy|r<){&yATo?jSXj(yZ*cu6BGi5@F#fadZ8wfpfH@UU1tP0$u!e&B<$^OK|Mqmn~Rk{)%ci3SbS~c$^n%bi&Dh@r#|_2t&7- zmS4hM9CxF?%VK%#KMjY_gi=HlxI_Wpb=1O(!rOm|Do1FnqCR`rPY#(kYP>h_F+4WSKVLLcpvYs z<=J7nH0G4B>dbv#x&HNj&W?e)iExs5og<~FowGO7+RvLpJKe5pQE>pUz`RxNc&2{) zk&WOB)oT1F-Dt{sfjr8{>+@Wo_FRX4+dVZ{0JME!#E9p`0_g^rfTn=@9?AXAIb5~R zc}F^?;aHdamw8FJ7+AV)+1|oV+lILv(jrPr4RVDZLbK*JNFT-kxB6J)yP!mhuL%00 zdUBkdEC3t8?KsBCAbluuXMzPj8UdZKpmDOQ=}mdV=9(A(tBS<|D3_REW!!fhy%FiK zu|)zY>JqCjr!A8<5Aysv3wH1BBptNli-a+;DHgVb1o&h>%v)Yo9n73czCE z-6A0)Er3@#i;MH#PD47|%>a%G?4*$)%?@UFT_t34t-7n7`DWD;$?UXk#jP}9=ShR-5NG>Odee`es}*X}5i?4a<0eTH zq)rxv^&YIM@P`P>`N0KxS3P#$JPjnG5B&T|oDOekvJj0rv5OlLvFP%Eno^u5J zGgu-pfWJ|aJmLss#~U>;GMMY|tn;AAqE zYgq2m_IR#v$sIqj?M6Yu43_qH9l=XC3~C7fk%&&ZOYPaLmtKcrC7O4YpR#aay~c1t zB{UENX>Fgjb=dkdBi;F5xKWXj%opm18OW}6^h9e#M}VCb=NQ?aR*H_b+nx&9V?x*{ zX&6H2q9$)a^q&0H*hQumyK;=(v-LNr#JhclgywTz(5+eJvnyq0sH0a{8-ZzsLkkA+ zSfCUoJ5nSwjObvH@vLk3>!sr!VD4QR4%rVfIiOMcTxG@MI+y3v6(e|dj1R&}?N!vH zcs8(teI~RcMr**Aozgv!6b9><3Ss<|x>g#_tisrx#k`Dpi0=L7xX=v>P3jUwp~QVM zQyLf@leUlX6{&j0gsFV+KYfTPKt*GPm=(0)n#gpoMC=0fU73u;PFp-6l9T@E+2(B@ zNs~ef)pAA;Med#Us)+sHpcP%Ayui#cS2pf_Q0Jqs-JXJRe-i|Bv)`xY?g)*018rG@ zMaeE(c~gZd(VE7iYjxRB1V#U30S?{!RK7Pa>$w?~5^0>)2JKPnrYy^u>kQLA3ZGs7 z5rY1^dLeO2`3z*W8qH#p`uY?tQWpf|tThufw{kt2t4#?}|D_Pd;3xsrq`+-;FLA1W zNrb^$lF(SGZ*NoTkc`*O?^3B$DcJY^$-WO+#k%7E!`64lQ~mw%SBgrZ6d{|Cl^q#L z_9~K1naRo?*QgZPn`C82M)tf{$X=P(zQw)7b;-Ccu6ytA_~pqK?1ul3?H}x9SehS0mq--z`i=<2 z8@icnxa=R@yAIRivAlk9wLMJxHl82~98nz`2g)SgP1$~$}ygBDGb z3V!^9>}S6xd_vHp=0e^8OVYWAw|>tnZqV{jk2CNKh8t1DMTb0<&S2QiKZJg7-AF{s z#kFnPy3AHubo0vd9RWGCzdpDGiYDOKXt`9K0NHApgZT37GS4TxbOCb$&`US28s|6$ zn{jKXlsZE90Yl~M*E1qc#N26(q>h*G+$ck=@A_}Qd_;fkn!djNgx`+V#yLN1j*0xy z&V84;!DK+RMi*Ns5Pv5!{*K_UxM3T&^YvG_HD{MN$Kxjt3=;0j-KE>+px?f?-%g`h zlaT3`Hw~<+KHDyRjgvFf4Pif{TQ1Ny2D$y43CGQ7 zv4LW{_YHkIo%e|9;gg*@34e`ri_N}^7rwKizFnIE)l~FNMe*jEEQf6%(Kimc3@wot zrAX(#J>lXOcseb{y(I@;Ur`sCIzP`e%5q;j8Oow+b_@?rKV3B6ay~6BI<X1aE892< zym+LL=wr4l2z;0529iLVm7n3KBSXAzH!%NFuXibKI#7n#Wy`svMfXO$l$BjKmAImqwBt4fa|y0%+#ujFguFY@Am*ahsPX zZ7+%f^R+h1R}CUds@2 zM=uo@gu&=K^|Q#*Pc7ZP9sLaQ%B-zzU_GsK!`@wZqZbMdA3>aazj>XT~SKpu{6tbyh`8t zY(?yKnL15s)|gDPFA57n(EK3&UF@+yC@7vv#IkyHo1Ldx^oZ!~qZI{(p6@v!xg)y) zu*17|0F}>>h%UziJygB}-Ec3gZ1)^f?qcZR=cMtTh00Cpvd?&?c21ja>ookh5G6w# zu@Ld6SE{uAL++xw;2nNbQL!pUjM$OH4_nDUU6{kQ|8!vj08H@74}TyOBV?|?jg}NL zRGI{$oype}Pjkp0WRKy2{uxhdd1eBSYu_0jBUhSl4a%Ock{#*#KVbW94oZ|0e7Je| zLNX})!rg10WAu!nE@`C>$4&=Hm}bcypx~acv|(=KuMPkQkBu48@6J67n=vd%@H+gW z!uxfK!kF5c3-dkri9$4oGSggxhef6ewAzN_30u%%)4e=90b_YfU7ZD zgjeCeKIUuk>BL%gytymMal&h%#yNV=cvBvlS9Q;XlVf2NMVZv1C{B~1lITF&MSY(+ z_xS)&6y_9oDD<*a#Jl~OvyaZ*yv)zf&)b$UNqwFaiq|%seDG= z)?Flgeaybl2Vv1huC(&f$p=``L+H}&$1eVknmjTq*;~xBTEz(Ybn|rwUKytouC6N#~Z~Z~3Qr(b`;+JgPA)Lb?__^w?$1mpI$P^vG%1 z+{`I)E27K5ohtd?LTon?K*|T%N+KwtWuNb!&5TUHM}CWoqALx|$2q=hubVsHIx>9% z+j4xJB8p=ROYJ8yr&Ms?L&fwAnN12*sb-j)m?->(PWlU+2JVPw2Tu^Zq%LFQdY9Tq z@-FXBcM!_~4?^;nK9#HmP|+?mslFe`QGPYcwGMiHCSB=<^xf1d!*UCOV;gKR_vSeT zfeZ&V@*Kc*i!I6DlmMi7i7Oe!M#*Lm(yb~Gt^!KFeD4Yy^efqY;}=H4M3#l&ldNH1 z;U^Ws+Nx|0WTk!hl&CSzpQz?oEo1Szo4m$u3$KkC&10)hDTIlyDtydVd1GCHHTfyc zqr|3Z5Us$Meo{|!^wbUK&+DiC$$SwRK1c)fQD4tkK)IVfZ5PqDXsy-os^V4T(<&9w! zl(3wWyY+aRsYv7L>5i$HE8T4$Gd^ArEOBYTq*$ z*poNHxp?8z#aC{3nMHV&hIpHG8{x+sa;V`gs#C@y#6$TV#M@+sNTX?XFL_^o!`b(B zh0eE@7vE{5MJLZcc^3Vol(y{h;??_-Jq}Jzzr>CVY0^|UOKzJ9$`++dB7Z(oKHDs- z`4lC2W-d}KiN<02+sj||ezPXg3++3H=PXiJ#RkZ)715FBe=To67foZkxzL7;=j#1fF{ktYe=q$gV`iBKm*@%JzC;rC%vCtJ&x5LmTPJ z?Jpf~`=^`u4r(3iGZ)1> z{-$g*KRG^8M#vnTs;2STRqY_; zl-&C5NuT^m2q(;GZ}+#{Z`i5p_sq6_r5rjuGbKzkNao5S{ZPbmKVy#Ma)F*GTU_Qq zC5$EbVMS;^Vaig%|CWgS1?sGMFU*U1xpc#c?9jR&C$u*4-yfI;2<*5$DE!Qi6?Sv( zCknu%O_pah1`|JN!KeeYj(pD#)9-&hZL2uytkz}p4DwLQM=m%F6&{uv={@G{245p^ ze!PyLn)P;yi^)7?Wey^%X8<>Z^{*#~+5Zlb`d8dSFH$?0fK9crv+G-*uC@hWj%`rx zaZf1JTEH+G64&R;wu6Zc`-p0WVLkqtd?(j=dWAITCBLpltC>jL;6- zKiVV}C)Y9=K3j-kmg#$=zVv$RWcq5FAI_&NV|X~hWnQm9zi22TaV6##ZZ3~%H}H~d z$Neuy2OVV5Cg+QXRLht0+kVvl#!E;|eSEreahnlC))+HJL+dOXsJ;);$(A-oz53N% zoT8vQb4xy0zioL80#|+63II(XsCVa6IVKfPagREqI_~HQw=NN3@KWo7##c@QXMmV! zYKZDyQ>!!cUucE@+B({A>nV291TI}9odDoa*x4Y;!^@vqU!s+WE<%V)t;3&Sw3S5K z>`LL>VV$S}S=KgEwyE9y$#<3=!X&(`u|o1rUTL;Isp1SWR4X-V9T|v)X)FuAFNQQe z`PTE)|Cbns#yk424o_(8UHe=A_mTmVPUbs>T-B>%Mg0IlW3xJ1aM4)n9`>DdU{H0uW$gI0fW zzRVigxwyfCP~?)&*TO4a)RGB|y7GT9W%5-`e3BI;B$S6N`^Lw3!0kdNZ1|;eqT!<8 zA&!{XEb6%*r1At>FSpSCHJoyOZL8p& zS52^=SB{Ony(U%DK}SkOy3#3F&>cfbCo^HtXLbbV;IEGK|J@oRS332@{)ar1qhnX- zF;lSZckPLs7{YhTgK3#yiTf?cyYM@xgJa5x+?QJOS?{VBy=Hz`*kSs#=3k75pPHu# zi2ul72}=4|%>&^b+ihg8*Dc$=D`|Ip$}<##ErLh{pM#xY1x~|S;(vnuEwzaj-o)4K z{O*KF+eXVBY&7yX>Zk!y)N_mEzHhxtx!;H&X@Dd6>;CbT-rP1c&y+ zWo-m>156sd!~5bV74$k9)53Vtkuv_IVLZR@^3d^D4+ z%!WdF03+*@(|uY_YUj}h&3AtRbBjb42f2KYl_8D2JAQlbTJZeu1iG;m3$!_e+~?&glSUdsDh2%sk`;@cCB z^1I9bYeoM$iKm_zLJb1cV=`~E4NtQ=e9KahG&#m;hgO{2>jK$L;udYU20ZCXue^s5 z?))@E@@Gj~)xwn`L@qW;uYtQwkWV_XADv z`>8{7;F+gk%2lyD7sqU8M zt>>jd<~N(kt|J5~VmFf7M>S`NmA0oOz4nPNomZtj15yQmM16Q{UU$^-P`JNg%i5-G zar)5opySj$vUrnO>ooKNk7cTmx%hdu(|0!T#B7sB(-dKl1%ohe*8_%`9JaA3Kyc%E z;O*(koQqt!eVNer>;NK{L`DT5t$`Na8}p^s_H(BVg)zgIL_3ljAtXA!;+7IF znVAD%Bf3F^JR;Ka;Q0M2C4PzZoUIg++HAS5ki|~Fo1CFhT9yuClOO+Iw( zT7;3^K^b+Ol&W(Q{NGsLdk<$1q9vATQseQ^!`dCGu7#+JKmdI?T&s6z$VKE^(_%z= z0%)xF^??$t?f1pkexYP{fS(}0bI|k8kZJ%>OD(%IsSY~WaxW91PxemtTH-y5=Ni)a zcjyNvTg;oiC*)Rp^}BkPRyx}(tmpo0#efK-gbyIC4EnFMGB@{L-Y5!%>P7XZq5uxF z>Pg!v?ku1k#?>tCvD}lR6n3l&2BK4<+PN~ZKT@iHV3#aYTvI@*Fsn~BzxGuK`LiSm z*0xAo)#b`QVYEZ=Nr%$vgc_HtmX8+o1JbllqVCo(%KCov9DnD*YzwqrH;7o(jL0)w zUjTbVgM(9s>2^k?YF=Gn0bY_L$L3Jxoz>8R z+SwHYm9w%*ugnT2;031jkDxl?;Z!vjnM6()vz@JT-Rz4z(peZ18lG;6(p3u|{|RVe zRSvU^$JN5#IZ@wz(YT9?KY)}5a`$asj`KHCPqQuFWH9o2o(eS_HeVb3Ib{>&K+maw z`w82{W>y7AQMF6O^O9E6A)=mBG!A2hnMc17thI7W=ib!>@2x5|xx<_J^`3k7xZAHUZ3z(RJEI%e*ppq)QF*3SRuden)7ADhER}>$Sa$@q z`w|);ucL*058KcAkf^qos1+JFDS86odqEy$1xu*r=Mp+}3(%7L4PRun6&<-IPiAmM z+$`5}KnkHSE4}THhlxmiSfvL;|?acR~W889Uwi5Zp#nYcKIuSoGc|LKnvqh#(Pp8XFtkkv*4;8{G@E zGG!z*zJx@n+;5hH?Dg!d409UR{OjKN*OTn~zufmE?41F_fo2!UFX3N;#xy{a_L=`~ ziyGDSdG-+Uiw_pfX)cy0u1_@^OYvX6l*LGUUV4N;U-NbG>q?x7Go@_ECrG zzN%TX!`lQ(_F2W!kc>~FyT5Y2-4`ZvrW{Gczv=ymY7S~Jbu$J-IMjCinE#>M2S$hb zEU5qU;O|+^vvsLJ3b42N17|bNd8CB~zdVp$j+rnDdsT5RwN@uMaVb$Y-Wv5PWB;!Nz9EUUR-}}&A$<} z@DLu9fVqg}IYXKcY{tw$AZXObHA>}b$jfhbWT#t>^P_Xc(uirAFKnZVQLoK91BDQ` z1vg1lJd^A`cRzi8m@vzy!|4fUQyAGO)XC-ol<5*B87rj*!0NqleO!Sp-D{0&zR4?* zyMMVC;HC9EH%nBiK>Dg&rNgXe#c=wIka_d3(Ei+l9pnW5`Fwtk07uh^${n0byc|Vc zqof&4^rO^-gj~|5T!VQqP7Qcb=S}z>K+OOp%XVPu;Y^pAZu&9VqrWv^rzQ~-k%+ER zd0|@PS)MQ=+vu_jlwu7ardGQ8N1X)1k5y)dr65jfcSZ3$vzgRAX~63SDr)MLpM3zp zJkhm!7X#<{RGs*0_*kznI z{_j|ySmi!=nVX~P75OFC?eTNv7w3IPAf;o`^;28ha=8+;Xj!(YpSLdUrT>5OuV3&(A?VN2?3Qbe9%Z7{3?|z@{Lfy-gMS z$nqufu{S9+0q&36D0m}+42?T;QcymE>3%7&>{Lsa#MJ1>K?>D@6XYS&Y5Bg;xGpbN zq94bxLO00gIBi;WMvGis`O09Ixcx@RqMJei&oOs z=!ErZ#9IvxCGXraL6CNB$Tbx+$;3^?MLWjtV8bY?tcUHQtGXpJN_+thwI5#zLqZMQ zA0Eo2#b>&+_Z1Wt_5fpZR4-c8Z>8_vjlN|TR$_57sF`n8jwbE_4-Qst+QX`o2R@s# zB~^OFmnQ==S$s4Xjsmt{NZuO0r(F4B8}d%cTB z7*?FL?ut$-a_u8)e-w3Lccn?2KM&Jolqu;^b$OLHv8r}Xt@&XXkS);Acr!g?sdJu9GEzm#a7-yanEmoJgg9yPZ#RQ*SK8&``KseRBL7-j@153hHC#FtX0x^% zo{+#u6U_$t^*#30%UX$IjXe32s6d>dbEb4Qufq?IC~h-~OXQ0zHu4)6!<`44Y^#74 z7H}t2Wg#fDI~A_tmcsR^h~|LEP0)-{joJMa$wRbMAQCkU7Z1>8L4}U^M}n*ga~TI>$=4sT zjzmJ_0`=L)?6e+_PPgUVNq)00vut5TIX%>0{%cMdkONt`X}VI*P2Ke;*6G;|e8_db zTbeHJ7w~3$uhQu-l0+}e-S;%kbrI>dF$3}HIw3lDb13onrkR&LaK_GXYrK3tz5--u z<=|x&&5vyFy67aoc|*@n24A=d<8^S5t3fbG-9HMsP>k$|tL(wn%mbQ02yc*i({sy$ zMvQ zX0pN(@tgzxuXRAQA!`Y0qWQ$rzjCb{)JgXdO(|E}0>|-Rmo&5-5%TY}D1P?Pj=xi> zJI+;xpm?+!vlZ?4cWx6>`P*(evV?+rq*#KS@dKgw!9(08Jyhz=O`BqBn&Nj{Ve81Z zY|2S@dTd&cVoHB9wbO*LrMNM&JJYCq-G1VM(mAl@woueq3X)!lZQ4}eo+PXve>0Jf9LRPRB%@$^3-04)8VvrDM~ zdXA}}*U%f!sfrxQQ;l~`)UB zaXDWJddl@Uh|q;uk^;DZ4Q&#@s%zN4Q)ZSSf4C^)6MrtTt8a1_E9$=cg1bb~Xie&4 z1rQ3@Kewuurz8jc{IH#znj!z;P&s{;;i!od%;xU&u`LZ?5OVAJ>18K0uPNbU7@1=N z%$qz7jKeN4=a1klU==RE10S(&QH|0u^&aVbYXa6l$wqJnt4znl9eOdPnZ+DgK&%cS zr~V#*ne}>sY0wF`tvpyf8D2J(tb4x>?BPa#-~erE*u0q-Nu<}c+4+r7%+HGkIyYY@HvPnku*18xqoH+&pZ(TrjoH&7^S7Zvu{2(_2m?}WGGK0^2#8wuEt429k-2Fc{mC}5NGA^1 z6M1pmRTSc6wS7S6N4a6P|Hdr&0^9S<+l`i+XNrXi93z~jS~Pl1@YF?NR>QBHtK9l; zCd&a#vASN?g$4*o5+`4xU~(17uVYg{bt0Gk2V?Gr97I3o(lm>_u(vyNTvE~%K`9At zgYz3fCaSp~=LPx_H|Cp^^HwfRm$RQ@fM?2j+-CF>7Ay-hh`IJo+N*!+Wi3D8JEkPd4_Q}8>R_q)YkCs8C1X=GP!Q{h)H9PF+ z{%I~oR@B`Eu0!TG4fg}dc(Y+EO*-Y~Y%Z52V$TK>eR79JETSwAZ**X3mv{j$^JCE? zc^EeU%#H-zBYH6z{_=hHE(t#R)d+hQ4=wgRa7>oP7wC=5*#-lju&XI%DYfXw{9Evz zg#U@;G$&p&>>Wg{D^+>n?TP~p7Mvs>?U7lulqCSg{@QEJqV82=bkRo0oZe&+1=Z(1u|b-!d&4WNX43=sh|8ElmgLlHJ_=W3n;E9L`-frj|) zBMkILd?K4o*=&PZUYMJLnl5$r)!wk+=LRVc8t^;nNmW419#|%~odm^R0#FuCEnoSy zS&2KhMi*DHq0q<=KR?{RwH|mpH#M$xDL&?|6>4Yad$AvyZ7x8QWmWDxbV0zN1-nEq z=b|Zh2TG1g#qHNd@Og8O`o%t;gT=Nx9%Y}U2#QQGKrrB3)J1bR4R3wTp+DEC1u)yi z$bYF-Y-fSXxmnxHMD@;80OPC9?P^CU-RETEKBRbN6U)90g)iAx3@ysW7RG=69J6A$ zpLgcrX2-5m((CMY{1UEVcD9FTm#FLqXxSoS?{iCxJ$JTMlfJ!uz zryWEPkL7_8HE+FYA{RAwEuNY-O~>8XfxHUl>ex` z15pp~Q*y8;L`Pq7u8!tdtAa_(XBG9?7U$>|0%3&5L(1mL*~g$^3+Hu@i*52k-zXYl z)z`b)3Wo_yoVB4DV$*g;G|Fq3I9|B*rN!T{>`fh8lL1y+;eRO$oEKG!9{v zORAcf&sDmTmc=-rA$`vDr_WMWGv~u%E{5k zeg~uY4SIww+6As$EHpF6Y#(+da)-chllqmf-hSw{75r=6nS@W?HB89*@bcDUXAtd! zsVWyh`chAj?QsY0BFXHRPDULn9NQ$WKGU4BU5z*>Uw>KCP3Wz*3%si~j@Ml#c6x1C zvNn)b=ayt#H3_4IA9UH^?Q*UhTZ!OWOmWx?s7TgEen=<;pm=8dO{;b`7 zH%0|FCz>+@C-vr*PLGVRFrzKrKJ8s_R7&^lR1rkq^8~Ni14z61DlMIx`5`ELN8uPMPn_4-Fdi4qm zXg=r@kCr>1nBkO=Fz|1Xp*e5@qe4-?wbRC5p2Y|lSKd9`L+9n+LYlNV!H$k#La)LH ze;RInww;`Fc*t=rxHYDqo;v6=p;7Bt+Y80nT@Fn*Zw?MZigVN-%bComa?sv$`CP&m zRi_mAqX}r@X#!KbTA|`%K6lB@`^;%mzM-DdUNc;Rmb12vj`TRw^>Z~e(!&;g4=(c% z6w~M{R(kN{936zUE*k47w{G8;bM*kHkM6$2lg+yz{KK8!S<(TEZWvp_{EFpHJ#y{$>8G3DbCfiUmS%br zdC&;-WZ4+6pCI4A#Ri~%gK|X)ed0~=>t?^v&pyK3?TRWhO&-t|!j4<}puU=#aS^qH zO$FO!Gl=mQ-#YMnu!GsgW6^8Kk~5JjHyca&kX##XOGAF@n&?aH@4ezeRDD#!AN9WG zeOA3P_#Mse9-Vp1gfp9+7769#@pfd6OOw0?psy-v{nEi&

yC!GshN;5WG0jwOSF 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 GB>6vu=#b0+ literal 0 HcmV?d00001 diff --git a/tools/inference_builder/doc/platform-guide.md b/tools/inference_builder/doc/platform-guide.md new file mode 100644 index 00000000..0c1c0ec4 --- /dev/null +++ b/tools/inference_builder/doc/platform-guide.md @@ -0,0 +1,99 @@ +# Platform Guide: Choosing the Right Dockerfile and Base Image + +Use this guide to select the correct Dockerfile template and DeepStream base image +for your target hardware **before** writing any Dockerfile or pipeline config. + +--- + +## Quick Selection Table + +| Platform | Architecture | Example Hardware | Dockerfile Template | DeepStream Base Image | +|---|---|---|---|---| +| **x86_64 datacenter** | x86_64 | A100, H100, B200, RTX | `samples://dockerfile/ds_app/Dockerfile` | `nvcr.io/nvidia/deepstream:9.0-triton-multiarch` | +| **Jetson / Tegra** | aarch64 | Orin, AGX Orin, Thor | `samples://dockerfile/ds_app/Dockerfile.tegra` | `nvcr.io/nvidia/deepstream:9.0-triton-multiarch` | +| **arm-sbsa server** | aarch64 | GB10, GB300, DGX Spark | `samples://dockerfile/ds_app/Dockerfile.dgxspark` | `nvcr.io/nvidia/deepstream:9.0-triton-sbsa-dgx-spark` | + +--- + +## How to Identify Your Platform + +### Step 1 — Check architecture +```bash +uname -m +``` +- `x86_64` → use the **x86_64 datacenter** Dockerfile +- `aarch64` → continue to Step 2 + +### Step 2 — Distinguish Tegra (Jetson) from arm-sbsa (server) +```bash +# Tegra devices expose a device-tree model string: +cat /proc/device-tree/model 2>/dev/null +# e.g. "NVIDIA Jetson AGX Orin" → Tegra + +# Server ARM64 (GB10, GB300, DGX Spark) report GPU via nvidia-smi: +nvidia-smi -L +# e.g. "GPU 0: NVIDIA GB10" → arm-sbsa server +``` + +If `/proc/device-tree/model` contains "Jetson" → use **Dockerfile.tegra**. +If `nvidia-smi` reports GB10 / GB300 / GH200 / Grace and no Jetson device-tree → use **Dockerfile.dgxspark**. + +--- + +## Key Differences by Platform + +### x86_64 (`Dockerfile`) +- PyTorch installed via pip from `https://download.pytorch.org/whl/cu130` +- TRT OSS GPU archs: `80;86;90;100` (Ampere, Ada, Hopper, Blackwell-x86) +- CUDA headers at `/usr/local/cuda-/include` + +### Jetson / Tegra (`Dockerfile.tegra`) +- PyTorch **copied** from `nvcr.io/nvidia/pytorch:25.08-py3` (no pip wheel for Tegra) +- TRT OSS GPU archs: `110;120;121` (Ampere/Orin, Blackwell/Thor) +- Tegra BSP libraries (`libnvbufsurface.so`, etc.) **mounted at runtime** by the + NVIDIA Container Toolkit — container will fail without `--runtime nvidia` on + actual Jetson hardware +- Base image: Tegra multiarch variant (`-ma` suffix) + +### arm-sbsa server (`Dockerfile.dgxspark`) +- PyTorch **copied** from `nvcr.io/nvidia/pytorch:25.08-py3` (same as Tegra) +- TRT OSS GPU archs: `110;120;121` (same as Tegra) +- CUDA headers present in the arm-sbsa base image (no Tegra BSP dependency) +- Base image: `arm-sbsa-spark` variant — **not** the `-ma` Tegra image +- Requires `apt-get install cmake libyaml-cpp-dev pkg-config` before TRT OSS build + +--- + +## Common Mistakes to Avoid + +| Mistake | Symptom | Fix | +|---|---|---| +| Using Tegra base image on GB10/GB300 | `libnvbufsurface.so.1.0.0: cannot open shared object file` | Switch to `Dockerfile.dgxspark` and the `arm-sbsa-spark` base image | +| Installing PyTorch via pip on Tegra/arm-sbsa | No compatible wheel found, or wrong CUDA variant | Copy torch from `nvcr.io/nvidia/pytorch:25.08-py3` | +| Missing `cmake` before TRT OSS build | `cmake: command not found` | Add `apt-get install cmake` (or skip TRT OSS build if not needed) | +| Using wrong GPU arch flags | TRT plugins fail to load or slow JIT compilation | Match `-DGPU_ARCHS` to the GPU table above | +| Tegra container without `--runtime nvidia` | Missing Tegra BSP `.so` files at runtime | Run with `--runtime nvidia` via NVIDIA Container Toolkit on Jetson | + +--- + +## TAO Post-Processor Library (`libnvds_infercustomparser_tao.so`) + +Required for TAO-trained detection models (e.g. PeopleNet Transformer) that use +`NvDsInferParseCustomDDETRTAO`. It is **not** bundled in any base image and must +be built from source: + +```bash +# Inside the container (or in the Dockerfile RUN step): +git clone https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git +cd deepstream_tao_apps/post_processor +CUDA_VER=. make DS_SRC_PATH=/opt/nvidia/deepstream/deepstream +cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib/ +``` + +CUDA version by platform: +- x86_64 datacenter: `CUDA_VER=13.1` +- Jetson / arm-sbsa server: `CUDA_VER=13.0` + +On arm-sbsa (GB10/GB300), if CUDA headers are not in the container, mount them +from the host at `/usr/local/cuda-13.0` or pre-build the `.so` on the host and +`COPY` it into the Dockerfile. diff --git a/tools/inference_builder/doc/usage.md b/tools/inference_builder/doc/usage.md new file mode 100644 index 00000000..48253ab8 --- /dev/null +++ b/tools/inference_builder/doc/usage.md @@ -0,0 +1,204 @@ +# Inference Builder Usage + +## Command Line Arguments + +For generating the inference code with the corresponding server implementation, you can run the following command: + +```bash +python builder/main.py -h +usage: Inference Builder [-h] [--server-type [{triton,fastapi,serverless}]] [-o [OUTPUT_DIR]] [-a [API_SPEC]] [-c [CUSTOM_MODULE ...]] [-x] [-t] [-v VALIDATION_DIR] [--no-docker] [--test-cases-abs-path] config + +positional arguments: + config Path the the configuration + +options: + -h, --help show this help message and exit + --server-type [{triton,fastapi,serverless}] + Choose the server type + -o [OUTPUT_DIR], --output-dir [OUTPUT_DIR] + Output directory + -a [API_SPEC], --api-spec [API_SPEC] + File for OpenAPI specification + -c [CUSTOM_MODULE ...], --custom-module [CUSTOM_MODULE ...] + Custom python modules + -x, --exclude-lib Do not include common lib to the generated code. + -t, --tar-output Zip the output to a single file + -v, --version show program's version number and exit + --validation-dir VALIDATION_DIR + valid validation directory path to build validator + --no-docker Use local OpenAPI Generator instead of Docker for OpenAPI client generation + --test-cases-abs-path + Use absolute paths in generated test_cases.yaml +``` +## Configuration File + +Before using the tool, you must prepare a YAML configuration file to define the inference flow. If server integration is required, you also need to provide an OpenAPI specification that defines the server and update the configuration with server templates based on the OpenAPI specification. + +For comprehensive documentation on configuration schemas, including validation, IDE support, and detailed backend specifications, see [schemas/README.md](../schemas/README.md). + +The configuration file is a YAML file that defines the inference flow and server implementation. It contains the following sections: + +- **name**: The name of the inference pipeline, which will be also used as the name of the folder for saving the generated inference code or the name of the tarball if '-t' is specified. +- **model_repo**: Specifies the path to the model repository from which the inference pipeline searches and loads the required model files. Each model has a separate folder for their files. +- **models**: List of model definitions. A inference flow can incorporate multiple models, each might be implemented with different backends to achieve optimal performance. +- **input** (optional): Defines the top-level inputs of the inference flow. This field is required only when the pipeline includes multiple models or when at least one input is a custom type—such as in cases that require standard preprocessing like video decoding before the input data is passed to the model. +- **output** (optional): Defines the top-level outputs of the inference flow. This field is required only when the pipeline includes multiple models or when at least one output is custom type—such as in cases that require standard preprocessing like video encoding before the output data is passed out. +- **server** (optional): Defines the endpoint templates for the server implementation. This field is not required if the server type is set to "serverless". +- **routes** (optional): Defines the routing rules for the inference flow when multiple models are involved. +- **postprocessors** (optional): Defines the top-level post-processors for the inference flow. This field is required only when the pipeline includes multiple models and the output of these models need to be consolidated. + +A configuration file can be as simple as the following example: + +```yaml + +name: "detector" +model_repo: "/workspace/models" + +models: +- name: rtdetr + backend: deepstream/nvinfer + max_batch_size: 4 + input: + - name: media_url + data_type: TYPE_CUSTOM_DS_MEDIA_URL + dims: [ -1 ] + - name: mime + data_type: TYPE_CUSTOM_DS_MIME + dims: [ -1 ] + output: + - name: output + data_type: TYPE_CUSTOM_DS_METADATA + dims: [ -1 ] + parameters: + infer_config_path: + - nvdsinfer_config.yaml +``` + +With the above configuration file, you can generate inference code for the RT-DETR object detection model using the DeepStream backend, which takes image or video url as input and produces bounding boxes as output. (Step by step guide can be found in the [detection README](./builder/samples/ds_app/detection/README.md)) + +Breakdown of the configuration: + +- The inference package is named `detector`, and the model search path is set to `/workspace/models`. The pipeline uses one model and will look for the model file (in this case, an ONNX file and a yaml config for Deepstream) under the `rtdetr` directory under `/workspace/models`, as specified by the model name and model_repo. +- Inference is performed using nvinfer from the NVIDIA DeepStream SDK. A corresponding configuration file named `nvdsinfer_config.yaml` must be present under `/workspace/models/rtdetr`. +- The pipeline supports two inputs: + - media_url: the path or URL to the input media. + - mime: the media type (e.g., "video/mp4" or "image/jpeg"). +- The pipeline supports batch processing with up to 4 media items at a time as indicated by max_batch_size, and the number can be adjusted to suit the capabilities of the hardware platform and the requirements of the model. +- The output is a custom DeepStream metadata dictionary (`TYPE_CUSTOM_DS_METADATA`), which carries per-frame information such as detected bounding boxes, confidence scores, labels, segmentation maps, tracking IDs, and timestamps. The structure is flexible and returned as a dictionary with fields like `shape`, `bboxes`, `probs`, `labels`, `seg_maps`, `objects`, and `timestamp`. For complete structure details, see the [DeepStream-Specific Types section in schemas/README.md](../schemas/README.md#type_custom_ds_metadata). + +### Input and Output Definition + +Input and output definitions are required at the model level, and in some cases also at the top level of the pipeline. Each definition specifies the name, data type, dimensions, and optional flags for tensors flowing through the pipeline. + +For complete documentation on input/output specifications, supported data types (including custom types like TYPE_CUSTOM_IMAGE_BASE64, TYPE_CUSTOM_LONG_VIDEO_ASSETS, etc.), and field descriptions, see the [Data Types section in schemas/README.md](../schemas/README.md#data-types). + +### Model Definition + +The model definition specifies the inference backend, input/output tensors, batch size, and optional preprocessors/postprocessors. The definition is derived from the Triton model configuration and extended to support various backends including DeepStream, TensorRT, TensorRT-LLM, vLLM, and others. + +For complete documentation on model specifications, including: +- Supported backend types and their hierarchical structure (e.g., `deepstream/nvinfer`, `triton/tensorrt`, `tensorrtllm/pytorch`, `vllm`) +- Backend-specific parameters and configuration options +- Input/output tensor definitions +- Preprocessor and postprocessor specifications + +See the [Backend-Specific Schemas section in schemas/README.md](../schemas/README.md#backend-specific-schemas). + + +### Custom Preprocessors and Postprocessors + +Custom preprocessors and postprocessors integrate user-defined Python code into the inference flow, offering a new paradigm for programming with neural network models. + +Both custom preprocessors and postprocessors are defined using the following specification: +- **kind**: The kind of the processor: "custom" or "auto". Only "custom" processors are supported in the current release. +- **name**: The name of the processor. It must match the "name" defined in the user-implemented processor class. +- **input**: Specifies the names of the processor's inputs in order. This defines how tensors from the inference flow are passed to the processor. +- **output**: Specifies the names of the processor's outputs in order. This defines how the inference flow extracts the tensors from the processor. +- **config**: Defines the processor's configuration as a dictionary. The contents are implementation-specific. + +For a list of common preprocessors (image normalizers, tokenizers, VLM loaders) and postprocessors (masking, embedding processors) with their configurations, see the [Preprocessors and Postprocessors section in schemas/README.md](../schemas/README.md#preprocessors-and-postprocessors). + +#### Custom Preprocessor/Postprocessor Implementation Requirements + +When implementing a custom preprocessor or postprocessor, the class must adhere to the following specification: +- A class variable named `"name"` must be defined to uniquely identify the processor. +- An `__init__` method must be implemented to accept a single argument: a dictionary containing the processor's configuration (`config`). +- A `__call__` method must be defined to accept multiple positional arguments. The number and order of these arguments must match the input definition of the processor in the configuration file. +- The `__call__` method must return a tuple of tensors, in the order specified by the output definition of the processor in the configuration file. +- Input and output data are expected to be either NumPy arrays or PyTorch tensors, unless a custom data type is explicitly specified. + +### Server Definition + +The server definition is required at the top level unless the server type is set to "serverless". It specifies the server implementation along with the corresponding request and response templates. Both templates must be written in Jinja2, and are used to: +- Extract the necessary inputs from the server request. +- Format the inference outputs into the desired server response. + +The "responders" section allows users to map server implementations to operations defined in the OpenAPI specification. Each responder corresponds to a specific endpoint or operation. +For detailed information about responders, operations, and examples, see the [Server Configuration section in schemas/README.md](../schemas/README.md#server-configuration). + +### Routing + +The routes section is optional and typically used for multi-model inference flows. It defines custom routing rules that control how data flows between different models in the pipeline. + +The routes definition is a map where each entry specifies a connection between a source and destination: +- Format: `: : :` +- If the model name is omitted (e.g., `:`), the tensors are at the top level of the inference flow. +- Tensor lists are optional and specified as JSON arrays (e.g., `["tensor1", "tensor2"]`). + +For detailed examples and explanation of routing logic, see the [Routes section in schemas/README.md](../schemas/README.md#routes). + +## Runtime Environment Variables + +The following environment variables can be used to control runtime behavior of the generated inference pipelines. + +### Logging & Debugging + +| Variable | Default | Description | +|----------|---------|-------------| +| `DEBUG` | `0` | Enable debug mode (sets log level to DEBUG when non-zero) | +| `LOG_LEVEL` | `INFO` | Log verbosity level: `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` | + +### Inference Performance + +| Variable | Default | Description | +|----------|---------|-------------| +| `N_CODEC_INSTANCES` | `1` | Number of video codec instances for parallel decoding. Increase for higher throughput when processing multiple video streams. | +| `MAX_BATCH_SIZE` | `16` | Maximum batch size for live stream frame collection. Controls memory usage vs throughput trade-off. | + +### Server Configuration + +| Variable | Default | Description | +|----------|---------|-------------| +| `HTTP_PORT` | `8000` | HTTP port for FastAPI server when using `fastapi` server type. | + +### Testing & Validation + +| Variable | Default | Description | +|----------|---------|-------------| +| `TEST_HOST` | `http://127.0.0.1:8800` | Target host URL for the test runner to connect to. | +| `TEST_TOLERANCE` | `1e-5` | Numerical tolerance for floating-point comparisons in test assertions. | +| `ERROR_EXPORT_PATH` | `/tmp/inference_errors.json` | File path to export collected errors for test validation and debugging. | + +### Dynamic Configuration Override + +The generated configuration module (`config.py`) supports dynamic environment variable substitution using the pattern `$ENV_VAR|default_value`. This allows any configuration value to be overridden at runtime. + +**Format:** `$VARIABLE_NAME|default_value` + +**Example configuration:** +```yaml +models: +- name: my_model + parameters: + batch_size: $MODEL_BATCH_SIZE|8 + precision: $MODEL_PRECISION|fp16 +``` + +In this example: +- `batch_size` will use the value of `MODEL_BATCH_SIZE` environment variable if set, otherwise defaults to `8` +- `precision` will use `MODEL_PRECISION` if set, otherwise defaults to `fp16` + +Type conversion is automatic based on the default value: +- `"true"`/`"false"` → boolean +- Numeric strings → int or float +- Everything else → string \ No newline at end of file diff --git a/tools/inference_builder/lib/__init__.py b/tools/inference_builder/lib/__init__.py new file mode 100644 index 00000000..3159bfe6 --- /dev/null +++ b/tools/inference_builder/lib/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/tools/inference_builder/lib/asset_manager.py b/tools/inference_builder/lib/asset_manager.py new file mode 100644 index 00000000..38ee5957 --- /dev/null +++ b/tools/inference_builder/lib/asset_manager.py @@ -0,0 +1,363 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from .utils import get_logger +import os +from dataclasses import dataclass, field +from typing import Dict, TYPE_CHECKING +import json +import uuid +import shutil + +if TYPE_CHECKING: + from fastapi import UploadFile +from pyservicemaker.utils import MediaInfo +import tempfile +from urllib.parse import urlparse +import threading + +logger = get_logger(__name__) + +DEFAULT_ASSET_DIR = "/tmp/assets" +@dataclass +class Asset: + id: str + file_name: str + mime_type: str + size: int + duration: int + path: str + use_count: int + asset_dir: str + description: str + username: str + password: str + live: bool + managed: bool + _lock: threading.Lock = field(init=False, repr=False, compare=False, default=None) + _condition: threading.Condition = field(init=False, repr=False, compare=False, default=None) + _marked_for_deletion: bool = field(init=False, repr=False, compare=False, default=False) + + def __post_init__(self): + self._lock = threading.Lock() + self._condition = threading.Condition(self._lock) + self._marked_for_deletion = False + + def to_dict(self): + """Convert Asset to dictionary, excluding non-serializable fields.""" + return { + "id": self.id, + "file_name": self.file_name, + "mime_type": self.mime_type, + "size": self.size, + "duration": self.duration, + "path": self.path, + "use_count": self.use_count, + "asset_dir": self.asset_dir, + "description": self.description, + "username": self.username, + "password": self.password, + "live": self.live, + "managed": self.managed + } + + def lock(self): + with self._condition: + self.use_count += 1 + + def unlock(self): + with self._condition: + if self.use_count <= 0: + logger.warning("Attempted to unlock asset %s with use_count %d", + self.id, self.use_count) + return + self.use_count -= 1 + if self.use_count == 0: + # Notify waiting threads (e.g., delete_asset) + self._condition.notify_all() + + # Safety net: cleanup unmanaged assets when object is destroyed + if not self.managed and os.path.exists(self.path): + try: + os.remove(self.path) + logger.info("Removed unmanaged asset %s from %s", + self.id, self.path) + except OSError as e: + logger.exception( + "Failed to cleanup asset %s: %s", self.id, e) + + def is_marked_for_deletion(self): + """Check if this asset is marked for deletion.""" + with self._condition: + return self._marked_for_deletion + + def mark_for_deletion(self): + """Mark this asset for deletion, signaling processing loops to stop.""" + with self._condition: + self._marked_for_deletion = True + logger.info("Marked asset %s for deletion", self.id) + + @classmethod + def fromdir(cls, asset_dir): + with open(os.path.join(asset_dir, "info.json")) as f: + info = json.load(f) + + return Asset(id=info["assetId"], + path=info["path"], + file_name=info["fileName"], + mime_type=info["mimeType"], + duration=info["duration"], + username=info["username"], + password=info["password"], + description=info["description"], + asset_dir=asset_dir, + use_count=0, + size=info["size"], + live=info["live"], + managed=True) + + +class AssetManager: + _instance = None + + def __new__(cls): + if cls._instance is None: + cls._instance = super(AssetManager, cls).__new__(cls) + cls._instance._initialized = False + return cls._instance + + def __init__(self): + if self._initialized: + return + + self._asset_dir = DEFAULT_ASSET_DIR + self._asset_map:Dict[str, Asset] = dict() + os.makedirs(self._asset_dir, exist_ok=True) + asset_ids = self._get_existing_asset_ids() + self._asset_map: dict[str, Asset] = { + asset_id: Asset.fromdir(os.path.join(self._asset_dir, asset_id)) + for asset_id in asset_ids + } + self._initialized = True + + def save_file(self, file: "UploadFile", file_name: str, mime_type: str) -> Asset | None: + asset_id = str(uuid.uuid4()) + while asset_id in self._asset_map: + asset_id = str(uuid.uuid4()) + asset_dir = os.path.join(self._asset_dir, asset_id) + try: + os.makedirs(asset_dir) + except: + logger.error(f"Failed to create asset directory: {asset_dir}") + return None + + with open(os.path.join(asset_dir, file_name), "wb") as f: + shutil.copyfileobj(file, f) + try: + size = os.path.getsize(os.path.join(asset_dir, file_name)) + except: + size = 0 + mediainfo = MediaInfo.discover(os.path.join(asset_dir, file_name)) + + with open(os.path.join(asset_dir, "info.json"), "w") as f: + json.dump( + { + "assetId": asset_id, + "path": os.path.join(asset_dir, file_name), + "fileName": file_name, + "mimeType": mime_type, + "duration": mediainfo.duration, + "username": "", + "password": "", + "description": "", + "size": size, + "live": False, + }, f) + + self._asset_map[asset_id] = Asset.fromdir(asset_dir) + + logger.info(f"Saved file - asset-id: {asset_id} name: {file_name}") + + return self._asset_map[asset_id] + + def add_live_stream(self, url: str, description="", username="", password="") -> Asset | None: + asset_id = str(uuid.uuid4()) + while asset_id in self._asset_map: + asset_id = str(uuid.uuid4()) + asset_dir = os.path.join(self._asset_dir, asset_id) + try: + os.makedirs(asset_dir) + except Exception as e: + logger.error(f"Failed to create asset directory: {asset_dir}") + return None + + with open(os.path.join(asset_dir, "info.json"), "w") as f: + json.dump( + { + "assetId": asset_id, + "path": url, + "fileName": "", + "mimeType": "", + "duration": 0, + "username": username, + "password": password, + "description": description, + "size": 0, + "live": True + }, f) + + self._asset_map[asset_id] = Asset.fromdir(asset_dir) + + logger.info(f"Added live stream - asset-id: {asset_id} url: {url}") + + return self._asset_map[asset_id] + + + def list_assets(self): + return list(self._asset_map.values()) + + def get_asset(self, asset_id): + if asset_id in self._asset_map: + return self._asset_map[asset_id] + else: + # check if the asset is an id or a path + # Handle file:// URIs by converting them to paths + file_path = asset_id + if asset_id.startswith("file://"): + parsed = urlparse(asset_id) + file_path = parsed.path + + if file_path.startswith("/") and os.path.exists(file_path): + # Check if this path already exists in the asset map + for existing_asset in self._asset_map.values(): + if existing_asset.path == file_path: + return existing_asset + + mediainfo = MediaInfo.discover(file_path) + asset = Asset(id=str(uuid.uuid4()), + path=file_path, + file_name=os.path.basename(file_path), + mime_type="", + duration=mediainfo.duration, + username="", + password="", + description="", + asset_dir=file_path, + use_count=0, + size=os.path.getsize(file_path), + live=False, + managed=True) + self._asset_map[asset.id] = asset + return asset + elif (asset_id.startswith("http://") or + asset_id.startswith("https://")): + # Download the video from the web + try: + # Extract filename from URL + parsed_url = urlparse(asset_id) + file_name = os.path.basename(parsed_url.path) + if not file_name: + file_name = "downloaded_video" + + # Create a temporary directory + temp_dir = tempfile.mkdtemp(prefix="web_asset_") + temp_file_path = os.path.join(temp_dir, file_name) + + # Download the file + logger.info(f"Downloading video from {asset_id}") + import requests # lazy import to avoid GIL error + response = requests.get( + asset_id, stream=True, timeout=30) + response.raise_for_status() + + with open(temp_file_path, "wb") as f: + for chunk in response.iter_content(chunk_size=8192): + f.write(chunk) + + # Get media info + mediainfo = MediaInfo.discover(temp_file_path) + file_size = os.path.getsize(temp_file_path) + + logger.info(f"Downloaded video to {temp_file_path}") + + return Asset(id=str(uuid.uuid4()), + path=temp_file_path, + file_name=file_name, + mime_type="", + duration=mediainfo.duration, + username="", + password="", + description=f"Downloaded from {asset_id}", + asset_dir=temp_dir, + use_count=0, + size=file_size, + live=False, + managed=False) + except Exception as e: + logger.exception( + "Failed to download video from %s: %s", asset_id, e) + return None + elif asset_id.startswith("rtsp://"): + return self.add_live_stream(asset_id) + else: + logger.error(f"Invalid asset ID: {asset_id}") + return None + + def delete_asset(self, asset_id, timeout=None): + """ + Delete an asset, waiting for it to be released if currently in use. + + Args: + asset_id: The ID of the asset to delete + timeout: Maximum time to wait in seconds (None for indefinite wait) + + Returns: + bool: True if asset was deleted, False if asset not found or timeout occurred + """ + if asset_id not in self._asset_map: + return False + + asset = self._asset_map[asset_id] + + # Mark asset for deletion first (signals processing loops to stop) + logger.info(f"Marking asset {asset_id} for deletion") + asset.mark_for_deletion() + logger.info(f"Marked asset {asset_id} for deletion") + + # Wait for asset to be released + with asset._condition: + if asset.use_count > 0: + logger.info(f"Asset {asset_id} is in use (use_count={asset.use_count}), waiting for release...") + # Wait until use_count becomes 0 + if not asset._condition.wait_for(lambda: asset.use_count == 0, timeout=timeout): + logger.error(f"Timeout waiting for asset {asset_id} to be released") + return False + logger.info(f"Asset {asset_id} released, proceeding with deletion") + + # Now safe to delete + asset_dir = os.path.join(self._asset_dir, asset_id) + if os.path.exists(asset_dir): + shutil.rmtree(asset_dir) + self._asset_map.pop(asset_id) + logger.info(f"Removed asset {asset_id} and cleaned up associated resources") + return True + + def _get_existing_asset_ids(self): + entries = os.listdir(self._asset_dir) + return [ + entry for entry in entries if os.path.isdir(os.path.join(self._asset_dir, entry)) + and os.path.isfile(os.path.join(self._asset_dir, entry, "info.json")) + ] diff --git a/tools/inference_builder/lib/codec.py b/tools/inference_builder/lib/codec.py new file mode 100644 index 00000000..e46e4659 --- /dev/null +++ b/tools/inference_builder/lib/codec.py @@ -0,0 +1,100 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from pyservicemaker import BufferProvider, Buffer, Pipeline, Flow, BufferRetriever, as_tensor, ColorFormat +from queue import Queue, Empty, Full +import numpy as np +from .utils import get_logger +from typing import List +import base64 +import torch + +logger = get_logger(__name__) + +png_data = base64.b64decode("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAEElEQVR4nGK6HcwNCAAA//8DTgE8HuxwEQAAAABJRU5ErkJggg==") +jpg_data = base64.b64decode("/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigAooooAKKKKACiiigD/2Q==") + + +class ImageInput(BufferProvider): + DEFAULT_HEIGHT = 1080 + DEFAULT_WIDTH = 1920 + + def __init__(self, format): + super().__init__() + self.format = format + self.height = ImageInput.DEFAULT_HEIGHT + self.width = ImageInput.DEFAULT_WIDTH + self.framerate = 1 + self.device = 'cpu' + self.queue = Queue(maxsize=1) + + def generate(self, size): + tensor = self.queue.get() + return tensor.wrap(ColorFormat.I420) + + def send(self, data): + self.queue.put(data) + +class ImageOutput(BufferRetriever): + def __init__(self, max_queue_size: int=1): + super().__init__() + self._timeout = 10 + self._output = Queue(maxsize=max_queue_size) + + def consume(self, buffer): + try: + tensor = buffer.extract(0).clone() + torch_tensor = torch.utils.dlpack.from_dlpack(tensor) + self._output.put(torch_tensor) + except Full: + logger.error(f"ImageOutput queue is full, buffer dropped") + return 1 + + def get(self): + try: + data = self._output.get(timeout=self._timeout) + except Empty: + logger.error("ImageOutput timeout, failed to decode the image, input data may be corrupted") + return None + return data + + +class ImageDecoder: + def __init__(self, formats: List[str], device_id: int=0): + self._piplines = [Pipeline(f"image_decoder_{format}") for format in formats] + self._image_inputs = {format: ImageInput(format) for format in formats} + self._image_output = ImageOutput() + self._flows = [] + for pipline, format in zip(self._piplines, formats): + image_input = self._image_inputs[format] + flow = Flow(pipline).inject([image_input]).decode().retrieve(self._image_output, gpu_id=device_id) + self._flows.append(flow) + pipline.start() + + if "PNG" in formats: + logger.info("PNG decoder warmup:") + warmup_data = np.frombuffer(png_data, dtype=np.uint8) + self.decode(as_tensor(warmup_data.copy(), "PNG"), "PNG") + if "JPEG" in formats: + logger.info("JPEG decoder warmup:") + warmup_data = np.frombuffer(jpg_data, dtype=np.uint8) + self.decode(as_tensor(warmup_data.copy(), "JPEG"), "JPEG") + logger.info("Image decoder initialized") + + + def decode(self, tensor, format: str): + self._image_inputs[format].send(tensor) + return self._image_output.get() diff --git a/tools/inference_builder/lib/errors.py b/tools/inference_builder/lib/errors.py new file mode 100644 index 00000000..cc4c37a8 --- /dev/null +++ b/tools/inference_builder/lib/errors.py @@ -0,0 +1,1163 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Enhanced Error Handling Module for Inference Builder + +This module provides rich error context, categorization, and troubleshooting guidance +to make debugging easier for both humans and AI tools. +""" + +import traceback +import time +import uuid +import json +import threading +import inspect +import os +from dataclasses import dataclass, field, asdict +from typing import ClassVar, Dict, List, Optional, Any, Union +from enum import Enum +import numpy as np + +# Try to import torch, but make it optional +try: + import torch + TORCH_AVAILABLE = True +except ImportError: + TORCH_AVAILABLE = False + + +class ErrorCategory(Enum): + """Categorize errors for easier filtering and analysis""" + CONFIGURATION = "configuration" + DATA_VALIDATION = "data_validation" + ASSET_NOT_FOUND = "asset_not_found" + PROCESSING = "processing" + BACKEND = "backend" + TIMEOUT = "timeout" + RESOURCE = "resource" + NETWORK = "network" + INTERNAL = "internal" + CODEC = "codec" + QUEUE = "queue" + + +class ErrorSeverity(Enum): + """Error severity levels""" + CRITICAL = "critical" # Service-breaking + ERROR = "error" # Request-breaking + WARNING = "warning" # Degraded but continuing + INFO = "info" # Informational only + + +@dataclass +class Error: + """ + Base Error class for simple error messages. + + This is the base class that EnhancedError inherits from. + Use this for simple errors that don't need rich context. + Use EnhancedError (via ErrorFactory) for structured errors with full context. + """ + message: str + + def __bool__(self): + """Return False so error objects evaluate to False in boolean context""" + return False + + def __str__(self): + """Human-readable string representation""" + return self.message + + +@dataclass +class EnhancedError(Error): + """ + Enhanced error class with rich context for AI-powered troubleshooting + + This class provides comprehensive error information including: + - Categorization and severity + - Contextual information (component, operation, model) + - Technical details (stack traces, error codes) + - Data context (inputs, expected vs actual) + - Troubleshooting guidance and remediation steps + - Error chaining for root cause analysis + + Inherits from Error base class, which provides: + - message field + - __bool__() override (returns False for boolean checks) + """ + + # Core error information (message inherited from Error) + category: ErrorCategory + severity: ErrorSeverity = ErrorSeverity.ERROR + + # Contextual information + component: str = "" # e.g., "DataFlow", "ModelOperator", "ImageInputDataFlow" + operation: str = "" # e.g., "bind_input", "_process_custom_data" + request_id: str = field(default_factory=lambda: str(uuid.uuid4())) + timestamp: float = field(default_factory=time.time) + + # Technical details + error_code: str = "" # e.g., "ERR_DF_001", "ERR_MO_005" + stack_trace: Optional[str] = None + exception_type: Optional[str] = None + + # Data context + input_data: Dict[str, Any] = field(default_factory=dict) + expected_data: Dict[str, Any] = field(default_factory=dict) + actual_data: Dict[str, Any] = field(default_factory=dict) + + # Pipeline context + model_name: Optional[str] = None + dataflow_names: List[str] = field(default_factory=list) + tensor_names: List[str] = field(default_factory=list) + + # Troubleshooting guidance + troubleshooting_hints: List[str] = field(default_factory=list) + related_config: Dict[str, Any] = field(default_factory=dict) + remediation_steps: List[str] = field(default_factory=list) + + # Error chain for root cause analysis + caused_by: Optional['EnhancedError'] = None + + # Additional metadata + metadata: Dict[str, Any] = field(default_factory=dict) + + def __str__(self): + """Human-readable string representation""" + parts = [f"[{self.error_code or 'ERROR'}]"] + if self.component: + parts.append(f"{self.component}") + if self.operation: + parts.append(f".{self.operation}()") + parts.append(f": {self.message}") + return " ".join(parts) + + def to_dict(self, include_stack_trace: bool = True, sanitize_data: bool = True) -> Dict: + """ + Convert to dictionary for structured logging + + Args: + include_stack_trace: Whether to include full stack trace (can be verbose) + sanitize_data: Whether to sanitize large data structures + + Returns: + Dictionary representation suitable for JSON serialization + """ + result = { + "error_id": self.request_id, + "timestamp": self.timestamp, + "iso_timestamp": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(self.timestamp)), + "category": self.category.value, + "severity": self.severity.value, + "component": self.component, + "operation": self.operation, + "message": self.message, + "error_code": self.error_code, + "exception_type": self.exception_type, + } + + if include_stack_trace and self.stack_trace: + result["stack_trace"] = self.stack_trace + + # Add data context + if sanitize_data: + result["input_data"] = self._sanitize_data(self.input_data) + result["actual_data"] = self._sanitize_data(self.actual_data) + else: + result["input_data"] = self.input_data + result["actual_data"] = self.actual_data + + result["expected_data"] = self.expected_data + + # Add pipeline context + if self.model_name: + result["model_name"] = self.model_name + if self.dataflow_names: + result["dataflow_names"] = self.dataflow_names + if self.tensor_names: + result["tensor_names"] = self.tensor_names + + # Add troubleshooting information + if self.troubleshooting_hints: + result["troubleshooting_hints"] = self.troubleshooting_hints + if self.remediation_steps: + result["remediation_steps"] = self.remediation_steps + if self.related_config: + result["related_config"] = self._sanitize_config(self.related_config) + + # Add metadata + if self.metadata: + result["metadata"] = self.metadata + + # Add error chain + if self.caused_by: + result["caused_by"] = self.caused_by.to_dict( + include_stack_trace=False, # Don't include nested stack traces + sanitize_data=sanitize_data + ) + + return result + + def _sanitize_data(self, data: Dict) -> Dict: + """Sanitize large tensors/arrays for logging""" + if not data: + return {} + + sanitized = {} + for k, v in data.items(): + try: + if isinstance(v, np.ndarray): + sanitized[k] = { + "type": "numpy.ndarray", + "shape": str(v.shape), + "dtype": str(v.dtype), + "sample": self._safe_sample(v) + } + elif TORCH_AVAILABLE and isinstance(v, torch.Tensor): + sanitized[k] = { + "type": "torch.Tensor", + "shape": str(list(v.shape)), + "dtype": str(v.dtype), + "device": str(v.device), + "sample": self._safe_sample(v.cpu().numpy() if v.is_cuda else v.numpy()) + } + elif isinstance(v, (list, tuple)): + if len(v) > 10: + sanitized[k] = { + "type": type(v).__name__, + "length": len(v), + "sample": str(v[:3]) + " ... " + str(v[-1:]) + } + else: + sanitized[k] = v + elif isinstance(v, dict): + sanitized[k] = self._sanitize_data(v) + elif isinstance(v, str) and len(v) > 500: + sanitized[k] = v[:500] + "... [truncated]" + else: + sanitized[k] = v + except Exception as e: + sanitized[k] = f"" + + return sanitized + + def _safe_sample(self, arr: np.ndarray, max_elements: int = 5) -> str: + """Get a safe sample from array""" + try: + flat = arr.flatten() + if len(flat) <= max_elements: + return str(flat.tolist()) + else: + sample = flat[:max_elements].tolist() + return f"{sample} ... (total: {len(flat)} elements)" + except Exception: + return "" + + def _sanitize_config(self, config: Dict) -> Dict: + """Sanitize configuration data""" + if not config: + return {} + + sanitized = {} + for k, v in config.items(): + if isinstance(v, dict): + sanitized[k] = self._sanitize_config(v) + elif isinstance(v, (list, tuple)) and len(v) > 20: + sanitized[k] = f"{type(v).__name__}(length={len(v)})" + else: + sanitized[k] = v + return sanitized + + def to_json(self, **kwargs) -> str: + """Convert to JSON string""" + return json.dumps(self.to_dict(**kwargs), indent=2, default=str) + + def log(self, logger, as_json: bool = True): + """ + Log error with appropriate level + + Args: + logger: Logger instance + as_json: If True, log as structured JSON; otherwise log as formatted text + """ + if as_json: + error_dict = self.to_dict() + log_msg = json.dumps(error_dict, indent=2, default=str) + else: + log_msg = self._format_text() + + if self.severity == ErrorSeverity.CRITICAL: + logger.critical(log_msg) + elif self.severity == ErrorSeverity.ERROR: + logger.error(log_msg) + elif self.severity == ErrorSeverity.WARNING: + logger.warning(log_msg) + else: + logger.info(log_msg) + + def _format_text(self) -> str: + """Format error as human-readable text""" + lines = [ + "=" * 80, + f"ERROR: {self.error_code or 'UNKNOWN'}", + f"Severity: {self.severity.value.upper()}", + f"Category: {self.category.value}", + "=" * 80, + f"Message: {self.message}", + ] + + if self.component or self.operation: + lines.append(f"Location: {self.component}.{self.operation}()") + + if self.model_name: + lines.append(f"Model: {self.model_name}") + + if self.dataflow_names: + lines.append(f"Dataflow: {', '.join(self.dataflow_names)}") + + if self.tensor_names: + lines.append(f"Tensors: {', '.join(self.tensor_names)}") + + if self.exception_type: + lines.append(f"Exception Type: {self.exception_type}") + + if self.input_data: + sanitized_input = self._sanitize_data(self.input_data) + lines.append(f"\nInput Data: {sanitized_input}") + + if self.expected_data: + lines.append(f"\nExpected Data: {self.expected_data}") + + if self.actual_data: + sanitized_actual = self._sanitize_data(self.actual_data) + lines.append(f"\nActual Data: {sanitized_actual}") + + if self.related_config: + lines.append(f"\nRelated Config: {self.related_config}") + + if self.troubleshooting_hints: + lines.append("\nTroubleshooting Hints:") + for i, hint in enumerate(self.troubleshooting_hints, 1): + lines.append(f" {i}. {hint}") + + if self.remediation_steps: + lines.append("\nRemediation Steps:") + for i, step in enumerate(self.remediation_steps, 1): + lines.append(f" {i}. {step}") + + if self.stack_trace: + lines.append("\nStack Trace:") + lines.append(self.stack_trace) + + if self.caused_by: + lines.append("\nCaused by:") + lines.append(f" {self.caused_by}") + + lines.append("=" * 80) + + return "\n".join(lines) + + +class ErrorFactory: + """ + Factory for creating standardized errors with consistent codes and hints + + This factory maintains an error catalog with predefined error codes, categories, + and troubleshooting guidance. It ensures consistent error handling across the codebase. + + The factory can automatically extract component and operation names from context: + - Pass `caller=self` to auto-extract class name as component + - Pass `auto_operation=True` to auto-detect calling method name + """ + + # Error code definitions with troubleshooting hints + ERROR_CATALOG: ClassVar[Dict[str, Dict[str, Any]]] = { + # DataFlow errors (DF) + "ERR_DF_001": { + "message": "Required tensor not found in dataflow input", + "category": ErrorCategory.DATA_VALIDATION, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Check that all required input tensors are provided", + "Verify the tensor names match the configuration", + "Consider marking the tensor as optional if it's not always needed", + "Review the model input configuration" + ], + "remediation": [ + "Add the missing tensor to the input data", + "Update configuration to mark tensor as optional", + "Check upstream processor output", + "Verify route configuration" + ] + }, + "ERR_DF_002": { + "message": "Invalid data type in custom data processing", + "category": ErrorCategory.DATA_VALIDATION, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Ensure base64 binary data is provided as bytes or string", + "Check data encoding format", + "Verify MIME type matches data format", + "Review data type conversions" + ], + "remediation": [ + "Convert data to expected format (bytes or string)", + "Verify base64 encoding is correct", + "Check data type in request payload" + ] + }, + "ERR_DF_003": { + "message": "Asset not found", + "category": ErrorCategory.ASSET_NOT_FOUND, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Verify asset ID exists in AssetManager", + "Check if asset was properly uploaded/registered", + "Ensure asset hasn't been deleted or expired", + "Verify asset path and permissions" + ], + "remediation": [ + "Upload the asset before referencing it", + "Check asset ID spelling/format", + "Verify asset lifecycle management", + "Check AssetManager logs for registration issues" + ] + }, + "ERR_DF_004": { + "message": "Multiple result queues not supported in single dataflow", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Restructure dataflow to have single queue output", + "Split into multiple dataflows if needed" + ], + "remediation": [ + "Refactor to use single queue per dataflow", + "Create separate dataflows for multiple queues" + ] + }, + "ERR_DF_005": { + "message": "Queue full, dropping frames", + "category": ErrorCategory.QUEUE, + "severity": ErrorSeverity.WARNING, + "hints": [ + "Consumer is too slow, increase processing speed", + "Increase queue size if appropriate", + "Check for bottlenecks in pipeline" + ], + "remediation": [ + "Optimize downstream processing", + "Increase queue maxsize", + "Add backpressure handling" + ] + }, + "ERR_DF_006": { + "message": "Failed to inject tensors into input flows", + "category": ErrorCategory.DATA_VALIDATION, + "severity": ErrorSeverity.ERROR, + "hints": [ + "No matching input tensors found in the request" + ], + "remediation": [ + "Provide at least one valid tensor in the request", + "Check input tensor names against model configuration", + "Verify request payload format", + "Review input flow configuration" + ] + }, + + # Model Operator errors (MO) + "ERR_MO_001": { + "message": "Empty result from preprocessing", + "category": ErrorCategory.PROCESSING, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Check preprocessor logic and return values", + "Verify input data is valid", + "Review preprocessor configuration", + "Ensure preprocessor returns non-empty data" + ], + "remediation": [ + "Debug preprocessor implementation", + "Verify input data format", + "Check preprocessor output configuration", + "Review preprocessing chain" + ] + }, + "ERR_MO_002": { + "message": "Model output incomplete", + "category": ErrorCategory.PROCESSING, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Verify model generates all required outputs", + "Check if postprocessor is needed", + "Review model configuration", + "Ensure all output tensors are generated" + ], + "remediation": [ + "Add missing output tensors", + "Implement required postprocessor", + "Update model output configuration", + "Check model implementation" + ] + }, + "ERR_MO_003": { + "message": "No output dataflow bound to model", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Check route configuration", + "Ensure model output is connected to downstream", + "Review pipeline setup" + ], + "remediation": [ + "Add output binding in route configuration", + "Connect model to output dataflow", + "Review inference pipeline setup" + ] + }, + "ERR_MO_004": { + "message": "Invalid result from preprocessing", + "category": ErrorCategory.PROCESSING, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Preprocessor must return valid data structure", + "Check for errors in preprocessing chain", + "Verify data format compatibility" + ] + }, + + # Processor errors (PROC) + "ERR_PROC_001": { + "message": "Processor output count mismatch", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.WARNING, + "hints": [ + "Verify processor returns correct number of outputs", + "Check processor configuration matches implementation", + "Review processor output specification in the configuration", + "Ensure output list length matches config" + ], + "remediation": [ + "Update processor to return correct number of outputs", + "Fix processor configuration", + "Review processor implementation" + ] + }, + "ERR_PROC_002": { + "message": "Failed to load AutoProcessor", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Verify model home path is correct", + "Check if model supports AutoProcessor", + "Ensure transformers library is installed", + "Verify model files are present" + ], + "remediation": [ + "Check model_home path", + "Download model files", + "Use custom processor instead", + "Install required dependencies" + ] + }, + "ERR_PROC_003": { + "message": "Custom processor module invalid", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Custom module must have create_instance() method", + "Check custom processor implementation", + "Verify module imports correctly" + ], + "remediation": [ + "Implement create_instance() in custom module", + "Fix custom processor module", + "Check module path and imports" + ] + }, + "ERR_PROC_004": { + "message": "Failed to create custom processor", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Check processor configuration", + "Verify processor class exists", + "Verify the processor name in the configuration matches the name in the processor class" + ] + }, + + # Image processing errors (IMG) + "ERR_IMG_001": { + "message": "Unsupported image format", + "category": ErrorCategory.DATA_VALIDATION, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Supported formats: JPEG, PNG", + "Check MIME type of uploaded image", + "Convert image to supported format", + "Verify image encoding" + ], + "remediation": [ + "Convert image to JPEG or PNG", + "Check image MIME type", + "Re-encode image in supported format" + ] + }, + "ERR_IMG_002": { + "message": "Invalid base64 image data", + "category": ErrorCategory.DATA_VALIDATION, + "severity": ErrorSeverity.ERROR, + "hints": [ + "Base64 image must be bytes or string", + "Check data encoding", + "Verify base64 format: data:image/[type];base64,[data]" + ], + "remediation": [ + "Encode image as valid base64 string", + "Check data URL format", + "Verify data type (bytes/string)" + ] + }, + "ERR_IMG_003": { + "message": "Image decoder not initialized", + "category": ErrorCategory.INTERNAL, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Image decoder failed to initialize", + "Check codec dependencies", + "Verify system libraries" + ] + }, + + # Video processing errors (VIDEO) + "ERR_VIDEO_001": { + "message": "Invalid video frame sampling parameters", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.WARNING, + "hints": [ + "Frames or chunks parameters differ across assets", + "Ensure consistent parameters for batch processing", + "Review asset query parameters" + ] + }, + + # Route configuration errors (ROUTE) + "ERR_ROUTE_001": { + "message": "Invalid route configuration", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Check route format: 'model:[tensor, ...]' -> 'model:[tensor, ...]'", + "Verify JSON syntax in data specifications", + "Review route configuration documentation" + ], + "remediation": [ + "Fix route configuration format", + "Validate JSON in route data", + "Review routing examples" + ] + }, + "ERR_ROUTE_002": { + "message": "Model not found in route configuration", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Model referenced in route doesn't exist", + "Check model name spelling", + "Verify model is defined in configuration" + ], + "remediation": [ + "Add model to configuration", + "Fix model name in route", + "Review model definitions" + ] + }, + + # AsyncDispatcher errors (ASYNC) + "ERR_ASYNC_001": { + "message": "AsyncDispatcher failed to start - collector is None", + "category": ErrorCategory.INTERNAL, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Collector not properly initialized", + "Check pipeline setup", + "Review initialization order" + ] + }, + "ERR_ASYNC_002": { + "message": "AsyncDispatcher failed to start - event loop is None", + "category": ErrorCategory.INTERNAL, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Event loop not properly initialized", + "Check async setup", + "Review initialization order" + ] + }, + "ERR_ASYNC_003": { + "message": "Consumer queue reached maximum size", + "category": ErrorCategory.QUEUE, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Too many concurrent requests", + "Increase queue size", + "Add rate limiting", + "Check consumer processing speed" + ], + "remediation": [ + "Increase n_max_async_queues parameter", + "Implement request throttling", + "Optimize consumer processing" + ] + }, + + # System errors (SYS) + "ERR_SYS_001": { + "message": "Model repository does not exist", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Check model_repo path in configuration", + "Verify directory exists and is accessible", + "Check file permissions" + ], + "remediation": [ + "Create the model repository directory and correctly mount it into the container.", + "Fix model_repo path in configuration", + "Check directory permissions" + ] + }, + "ERR_SYS_002": { + "message": "Inference pipeline incomplete", + "category": ErrorCategory.CONFIGURATION, + "severity": ErrorSeverity.CRITICAL, + "hints": [ + "Either input or output is empty", + "Check route configuration", + "Review pipeline setup" + ], + "remediation": [ + "Add input/output bindings", + "Fix route configuration", + "Review pipeline configuration" + ] + }, + } + + @classmethod + def _get_caller_info(cls, caller=None, auto_operation: bool = False): + """ + Extract component and operation names from caller context + + Args: + caller: The calling object (usually `self`). If provided, extracts class name. + auto_operation: If True, extracts the calling method name from stack + + Returns: + tuple: (component_name, operation_name) + """ + component = None + operation = None + + # Extract component from caller object + if caller is not None: + component = caller.__class__.__name__ + + # Extract operation from call stack + if auto_operation: + # Get the calling frame (skip this method and the create/from_exception method) + frame = inspect.currentframe() + try: + # Go up the stack: _get_caller_info -> create/from_exception -> actual caller + caller_frame = frame.f_back.f_back + if caller_frame: + operation = caller_frame.f_code.co_name + finally: + del frame # Avoid reference cycles + + return component, operation + + @classmethod + def create( + cls, + error_code: str, + message: Optional[str] = None, + caller: Optional[Any] = None, + auto_operation: bool = True, + **kwargs + ) -> EnhancedError: + """ + Create error from catalog with additional context + + Args: + error_code: Error code from ERROR_CATALOG + message: Custom message (overrides catalog message) + caller: The calling object (usually `self`). Auto-extracts class name as component. + auto_operation: If True, auto-detects calling method name as operation. + **kwargs: Additional context fields for EnhancedError + + Returns: + EnhancedError instance with all context + + Example: + # Automatic component/operation detection: + error = ErrorFactory.create( + "ERR_DF_001", + caller=self, # Extracts "DataFlow" from self.__class__.__name__ + auto_operation=True, # Extracts "put" from calling method + tensor_names=["image"] + ) + + # Manual specification (still supported): + error = ErrorFactory.create( + "ERR_DF_001", + component="DataFlow", + operation="put", + tensor_names=["image"] + ) + """ + # Auto-detect component and operation if requested + auto_component, auto_operation_name = cls._get_caller_info(caller, auto_operation) + + # Use auto-detected values if not explicitly provided + if auto_component and 'component' not in kwargs: + kwargs['component'] = auto_component + if auto_operation_name and 'operation' not in kwargs: + kwargs['operation'] = auto_operation_name + + if error_code not in cls.ERROR_CATALOG: + # Remove conflicting keys from kwargs + final_category = kwargs.pop('category', ErrorCategory.INTERNAL) + final_severity = kwargs.pop('severity', ErrorSeverity.ERROR) + error = EnhancedError( + message=message or f"Unknown error code: {error_code}", + category=final_category, + severity=final_severity, + error_code=error_code, + troubleshooting_hints=[ + "This error code is not in the catalog", + "Check error code spelling", + "Review error handling implementation" + ], + **kwargs + ) + # Add to global collector if enabled + cls._add_to_collector(error) + return error + + template = cls.ERROR_CATALOG[error_code] + + # Use custom message or template message + final_message = message or template["message"] + + # If custom message provided, append template message as hint + hints = list(template.get("hints", [])) + if message and message != template["message"]: + hints.insert(0, f"Base error: {template['message']}") + + # Merge catalog values with provided kwargs + # User-provided kwargs override catalog defaults + final_category = kwargs.pop('category', template.get("category", ErrorCategory.INTERNAL)) + final_severity = kwargs.pop('severity', template.get("severity", ErrorSeverity.ERROR)) + + error = EnhancedError( + message=final_message, + category=final_category, + severity=final_severity, + error_code=error_code, + troubleshooting_hints=hints, + remediation_steps=list(template.get("remediation", [])), + **kwargs + ) + # Add to global collector if enabled + cls._add_to_collector(error) + return error + + @classmethod + def _add_to_collector(cls, error: EnhancedError): + """Add error to global collector if enabled""" + global _global_error_collector + if _global_error_collector is not None: + _global_error_collector.add(error) + + @classmethod + def from_exception( + cls, + exc: Exception, + component: Optional[str] = None, + operation: Optional[str] = None, + caller: Optional[Any] = None, + auto_operation: bool = True, + error_code: Optional[str] = None, + category: ErrorCategory = ErrorCategory.INTERNAL, + severity: ErrorSeverity = ErrorSeverity.ERROR, + **kwargs + ) -> EnhancedError: + """ + Create EnhancedError from Python exception + + Args: + exc: The exception object + component: Component where error occurred (or use caller for auto-detection) + operation: Operation that failed (or use auto_operation=True) + caller: The calling object (usually `self`). Auto-extracts class name as component. + auto_operation: If True, auto-detects calling method name as operation. + error_code: Optional error code + category: Error category + severity: Error severity + **kwargs: Additional context + + Returns: + EnhancedError with exception details + + Example: + # Automatic component/operation detection: + except Exception as e: + error = ErrorFactory.from_exception( + e, + caller=self, # Extracts class name + auto_operation=True # Extracts method name + ) + + # Manual specification (still supported): + except Exception as e: + error = ErrorFactory.from_exception( + e, + component="ModelOperator", + operation="run" + ) + """ + # Auto-detect component and operation if requested + auto_component, auto_operation_name = cls._get_caller_info(caller, auto_operation) + + # Use auto-detected values if not explicitly provided + if component is None and auto_component: + component = auto_component + if operation is None and auto_operation_name: + operation = auto_operation_name + + # Remove conflicting keys from kwargs to avoid duplicate parameter errors + # (kwargs might contain category/severity if passed by caller) + kwargs.pop('category', None) + kwargs.pop('severity', None) + kwargs.pop('component', None) + kwargs.pop('operation', None) + kwargs.pop('error_code', None) + + error = EnhancedError( + message=str(exc), + category=category, + severity=severity, + component=component, + operation=operation, + error_code=error_code or "ERR_EXCEPTION", + exception_type=type(exc).__name__, + stack_trace=traceback.format_exc(), + troubleshooting_hints=[ + f"Exception type: {type(exc).__name__}", + f"Exception message: {str(exc)}", + "Review stack trace for details" + ], + **kwargs + ) + # Add to global collector if enabled + cls._add_to_collector(error) + return error + + @classmethod + def get_catalog_summary(cls) -> Dict[str, Any]: + """Get summary of error catalog for documentation""" + summary = { + "total_errors": len(cls.ERROR_CATALOG), + "by_category": {}, + "by_severity": {}, + "errors": {} + } + + for code, info in cls.ERROR_CATALOG.items(): + category = info.get("category", ErrorCategory.INTERNAL).value + severity = info.get("severity", ErrorSeverity.ERROR).value + + summary["by_category"][category] = summary["by_category"].get(category, 0) + 1 + summary["by_severity"][severity] = summary["by_severity"].get(severity, 0) + 1 + + summary["errors"][code] = { + "message": info["message"], + "category": category, + "severity": severity, + "hints_count": len(info.get("hints", [])), + "remediation_count": len(info.get("remediation", [])) + } + + return summary + + +class ErrorCollector: + """ + Collect and analyze errors for patterns and statistics + + This class maintains a thread-safe collection of errors and provides + statistics and analysis capabilities for monitoring and debugging. + """ + + def __init__(self, max_errors: int = 1000): + """ + Initialize error collector + + Args: + max_errors: Maximum number of errors to keep in memory + """ + self._errors: List[EnhancedError] = [] + self._error_counts: Dict[str, int] = {} + self._max_errors = max_errors + self._lock = threading.RLock() # RLock allows same thread to acquire multiple times + self._start_time = time.time() + + def add(self, error: EnhancedError): + """Add error to collection (thread-safe)""" + with self._lock: + self._errors.append(error) + self._error_counts[error.error_code] = \ + self._error_counts.get(error.error_code, 0) + 1 + + # Trim if exceeds max size (keep most recent) + if len(self._errors) > self._max_errors: + self._errors = self._errors[-self._max_errors:] + + def get_stats(self, include_recent: int = 10) -> Dict: + """ + Get error statistics for monitoring + + Args: + include_recent: Number of recent errors to include + + Returns: + Dictionary with error statistics + """ + with self._lock: + stats = { + "collection_period_seconds": time.time() - self._start_time, + "total_errors": len(self._errors), + "unique_error_codes": len(self._error_counts), + "by_category": self._count_by("category"), + "by_severity": self._count_by("severity"), + "by_component": self._count_by("component"), + "by_model": self._count_by("model_name"), + "by_code": dict(sorted( + self._error_counts.items(), + key=lambda x: x[1], + reverse=True + )[:20]), # Top 20 error codes + } + + if include_recent > 0: + stats["recent_errors"] = [ + e.to_dict(include_stack_trace=False) + for e in self._errors[-include_recent:] + ] + + return stats + + def get_errors_by_category(self, category: ErrorCategory) -> List[EnhancedError]: + """Get all errors of a specific category""" + with self._lock: + return [e for e in self._errors if e.category == category] + + def get_errors_by_code(self, error_code: str) -> List[EnhancedError]: + """Get all errors with specific error code""" + with self._lock: + return [e for e in self._errors if e.error_code == error_code] + + def get_critical_errors(self) -> List[EnhancedError]: + """Get all critical errors""" + with self._lock: + return [e for e in self._errors if e.severity == ErrorSeverity.CRITICAL] + + def clear(self): + """Clear all collected errors""" + with self._lock: + self._errors.clear() + self._error_counts.clear() + self._start_time = time.time() + + def _count_by(self, field: str) -> Dict[str, int]: + """Count errors by field value""" + counts = {} + for error in self._errors: + value = getattr(error, field, None) + if value is None or value == "": + continue + + # Handle enum values + if hasattr(value, 'value'): + key = value.value + # Handle lists + elif isinstance(value, list): + if len(value) == 0: + continue + key = ", ".join(str(v) for v in value[:3]) # First 3 items + if len(value) > 3: + key += "..." + else: + key = str(value) + + counts[key] = counts.get(key, 0) + 1 + + return dict(sorted(counts.items(), key=lambda x: x[1], reverse=True)[:20]) + + def export_to_json(self, filepath: str, include_stack_traces: bool = False): + """Export all errors to JSON file""" + with self._lock: + data = { + "exported_at": time.time(), + "stats": self.get_stats(include_recent=0), + "errors": [ + e.to_dict(include_stack_trace=include_stack_traces) + for e in self._errors + ] + } + + with open(filepath, 'w') as f: + json.dump(data, f, indent=2, default=str) + f.flush() + os.fsync(f.fileno()) + + +# Global error collector instance (optional) +_global_error_collector = None + +def get_global_error_collector() -> ErrorCollector: + """Get or create global error collector""" + global _global_error_collector + if _global_error_collector is None: + _global_error_collector = ErrorCollector() + return _global_error_collector + + +def enable_global_error_collection(max_errors: int = 1000): + """Enable global error collection""" + global _global_error_collector + _global_error_collector = ErrorCollector(max_errors=max_errors) + + +def disable_global_error_collection(): + """Disable global error collection""" + global _global_error_collector + _global_error_collector = None + diff --git a/tools/inference_builder/lib/inference.py b/tools/inference_builder/lib/inference.py new file mode 100644 index 00000000..9b25f29e --- /dev/null +++ b/tools/inference_builder/lib/inference.py @@ -0,0 +1,2051 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import atexit +import base64 +from concurrent.futures import ThreadPoolExecutor, Future +import os +import threading +from queue import Queue, Empty, Full +from abc import ABC, abstractmethod +from config import global_config +from .utils import get_logger, split_tensor_in_dict, FutureConsumer, QueueConsumer +from .codec import ImageDecoder +import custom +from omegaconf import OmegaConf +from dataclasses import dataclass +from typing import Dict, List, Tuple, Union, Generator +import numpy as np +from collections import namedtuple +import json +from pyservicemaker import Pipeline, as_tensor +from pyservicemaker.utils import MediaExtractor, MediaChunk +import torch +from .asset_manager import AssetManager +import time +import asyncio +import inspect +from .errors import ( + Error, + EnhancedError, + ErrorFactory, + ErrorCategory, + ErrorSeverity, + enable_global_error_collection, + get_global_error_collector +) + + +logger = get_logger(__name__) + +py_datatype_mapping = { + "TYPE_UINT8": int, + "TYPE_UINT16": int, + "TYPE_UINT32": int, + "TYPE_UINT64": int, + "TYPE_INT8": int, + "TYPE_INT16": int, + "TYPE_INT32": int, + "TYPE_INT64": int, + "TYPE_FP16": float, + "TYPE_FP32": float, + "TYPE_FP64": float, + "TYPE_STRING": str, + "TYPE_CUSTOM_DS_IMAGE": str, + "TYPE_CUSTOM_DS_MIME": str, + "TYPE_CUSTOM_LIST": str, + "TYPE_CUSTOM_DS_MEDIA_URL": str, + "TYPE_CUSTOM_DS_SOURCE_CONFIG": str, + "TYPE_CUSTOM_BINARY_BASE64": str, + "TYPE_CUSTOM_VIDEO_CHUNK_ASSETS": str, + "TYPE_CUSTOM_LONG_VIDEO_ASSETS": str, + "TYPE_CUSTOM_IMAGE_ASSETS": str, + "TYPE_CUSTOM_IMAGE_BASE64": str +} + +np_datatype_mapping = { + "TYPE_INVALID": None, + "TYPE_BOOL": np.bool_, + "TYPE_UINT8": np.ubyte, + "TYPE_UINT16": np.uint16, + "TYPE_UINT32": np.uint32, + "TYPE_UINT64": np.uint64, + "TYPE_INT8": np.byte, + "TYPE_INT16": np.int16, + "TYPE_INT32": np.int32, + "TYPE_INT64": np.int64, + "TYPE_FP16": np.float16, + "TYPE_FP32": np.float32, + "TYPE_FP64": np.float64, + "TYPE_STRING": np.string_, + "TYPE_CUSTOM_DS_IMAGE": np.ubyte, + "TYPE_CUSTOM_DS_MIME": np.string_, + "TYPE_CUSTOM_DS_MEDIA_URL": np.string_, + "TYPE_CUSTOM_DS_SOURCE_CONFIG": str, + "TYPE_BF16": None, + "TYPE_CUSTOM_OBJECT": None +} + +torch_datatype_mapping = { + "TYPE_INVALID": None, + "TYPE_BOOL": torch.bool, + "TYPE_UINT8": torch.uint8, + "TYPE_UINT16": torch.int16, + "TYPE_UINT32": torch.int32, + "TYPE_UINT64": torch.int64, + "TYPE_INT8": torch.int8, + "TYPE_INT16": torch.int16, + "TYPE_INT32": torch.int32, + "TYPE_INT64": torch.int64, + "TYPE_FP16": torch.float16, + "TYPE_FP32": torch.float32, + "TYPE_FP64": torch.float64, + "TYPE_STRING": None, + "TYPE_CUSTOM_DS_IMAGE": torch.int8, + "TYPE_CUSTOM_DS_MIME": None, + "TYPE_CUSTOM_DS_MEDIA_URL": None, + "TYPE_CUSTOM_DS_SOURCE_CONFIG": str, + "TYPE_BF16": None, + "TYPE_CUSTOM_OBJECT": None +} + +@dataclass +class Stop: + reason: str + + def __bool__(self): + return False + +Path = namedtuple('Path', ['source', 'target']) +Route = namedtuple('Route', ['model', 'data']) + +class DataFlow: + """A single data flow from or to a model""" + def __init__( + self, + configs: List[Dict], + tensor_names: List[Tuple[str, str]], + inbound: bool = False, + outbound: bool = False, + timeout=1.0 + ): + self._configs = configs + self._tensor_names = tensor_names + self._inbound = inbound + self._outbound = outbound + self._timeout = timeout + self._queue = Queue() + self._optional = False + self._stop_event = threading.Event() + if self._inbound or self._outbound: + self._optional = all([ + config["optional"] if "optional" in config else False + for config in self._configs + ]) + self._queue_consumer = None + + def _process_custom_data(self, tensor: np.ndarray, data_type: str) -> Union[List, np.ndarray, Queue, EnhancedError]: + """ + Process custom data types that are not standard numpy types. + + Args: + tensor: Input tensor data + data_type: The custom data type string (e.g., "TYPE_CUSTOM_BINARY_BASE64") + + Returns: + Union[List, np.ndarray, Queue, EnhancedError]: + - List: For processed data like base64 decoded arrays + - np.ndarray: For tensor data + - Queue: For streaming data (in subclasses) + - EnhancedError: If processing fails (e.g., decoder not initialized) + + Note: + Subclasses override this method to handle specific data types. + The return value is assigned to collected[o_name] in the put() method. + """ + processed = tensor + if self._inbound: + if data_type == "TYPE_CUSTOM_LIST": + logger.debug("DataFlow _process_custom_data: %s", data_type) + processed = [input for input in tensor] + elif data_type == "TYPE_CUSTOM_BINARY_BASE64": + logger.debug("DataFlow _process_custom_data: %s", data_type) + processed = [] + for input in tensor: + if not isinstance(input, np.str_): + error = ErrorFactory.create( + "ERR_DF_002", + message=f"base64 binary must be bytes or string, got {type(input).__name__}", + caller=self, + input_data={"input_type": type(input).__name__}, + expected_data={"valid_types": ["bytes", "np.bytes_", "str", "np.str_"]} + ) + error.log(logger, as_json=False) + return error + try: + decoded = base64.b64decode(input) + except Exception as e: + error = ErrorFactory.create( + "ERR_DF_002", + message=f"Failed to decode base64 string: {e}", + caller=self, + input_data={"input": input}, + expected_data={"valid_encoding": "base64"} + ) + error.log(logger, as_json=False) + return error + processed.append(np.frombuffer(decoded, dtype=np.uint8)) + return processed + + def _is_collected_valid(self, collected: Dict): + if not collected: + logger.info("No data collected from the dataflow: %s", self.in_names) + return False + # check output data integrity + if self._outbound: + for config in self._configs: + name = config["name"] + optional = "optional" in config and config["optional"] + if name not in collected and not optional: + return False + return True + + @property + def in_names(self): + return [i[0] for i in self._tensor_names] + + @property + def o_names(self): + return [i[1] for i in self._tensor_names] + + @property + def optional(self): + return self._optional + + def get_config(self, name: str): + if not self._configs: + return None + return next((config for config in self._configs if config["name"] == name), None) + + def put(self, item: Union[Dict, Error, Stop]): + logger.debug("[DataFlow.put] in_names=%s, o_names=%s, item_type=%s", self.in_names, self.o_names, type(item).__name__) + if not item: + if self._queue_consumer is None: + # pass Error or Stop to the downstream + self._queue.put(item, timeout=self._timeout) + return + # check input data integrity + if self._inbound: + for config in self._configs: + name = config["name"] + optional = "optional" in config and config["optional"] + if name not in item and not optional: + error = ErrorFactory.create( + "ERR_DF_001", + message=f"{name} is not optional and not found from the dataflow input configs", + caller=self, + dataflow_names=self.in_names, + tensor_names=[name], + expected_data={"required_tensors": [c["name"] for c in self._configs if not c.get("optional", False)]}, + actual_data={"provided_tensors": list(item.keys())}, + related_config={"config": config, "all_configs": self._configs} + ) + error.log(logger, as_json=False) + return + # collect data and deposit it to the queue + collected = {} + for i_name, o_name in self._tensor_names: + if i_name not in item: + continue + tensor = item[i_name] + # handling custom data type + if self._inbound or self._outbound: + config = self.get_config(i_name) + if config and not config["data_type"] in np_datatype_mapping: + result = self._process_custom_data(tensor, config["data_type"]) + # Check if processing returned an error + if isinstance(result, EnhancedError): + self._queue.put(result) + return + collected[o_name] = result + else: + collected[o_name] = tensor + else: + collected[o_name] = tensor + # check output data integrity + if not self._is_collected_valid(collected): + error = ErrorFactory.create( + "ERR_DF_007", + message=f"Invalid data collected from the dataflow: {self.in_names}", + caller=self, + severity=ErrorSeverity.WARNING, + dataflow_names=self.in_names, + actual_data={"collected_keys": list(collected.keys()) if collected else []} + ) + error.log(logger, as_json=False) + self._queue.put(error) + return + + # deposit the collected data to the queue + values = {} + results_queues = {} + for k, v in collected.items(): + if isinstance(v, Queue): + results_queues[k] = v + else: + values[k] = v + + if results_queues: + if len(results_queues) > 1: + error = ErrorFactory.create( + "ERR_DF_004", + message=f"Multiple result queues are not supported in one dataflow yet, got {len(results_queues)} queues", + caller=self, + dataflow_names=self.in_names, + actual_data={"n_queues": len(results_queues), "queue_keys": list(results_queues.keys())} + ) + error.log(logger, as_json=False) + self._queue.put(error) + return + q_key, q = next(iter(results_queues.items())) + def on_result_queue_result(item, user_data): + if not item: + # end of the inference + self._queue.put(item, timeout=self._timeout) + return + result_values = user_data[1] + result_values[q_key] = item + self._queue.put(result_values, timeout=self._timeout) + if self._queue_consumer is None: + self._queue_consumer = QueueConsumer("dataflow_queue_consumer", self._stop_event) + collected.pop(q_key) + self._queue_consumer.append_queue(q, on_result_queue_result, (q_key, collected)) + else: + self._queue.put(values, timeout=self._timeout) + return + + def get(self): + logger.debug("[DataFlow.get] Attempting get from queue: in_names=%s, o_names=%s, qsize=%s", self.in_names, self.o_names, self._queue.qsize()) + result = self._queue.get(timeout=self._timeout) + logger.debug("[DataFlow.get] Got result: in_names=%s, item_type=%s", self.in_names, type(result).__name__) + return result + + def stop(self): + self._stop_event.set() + self._queue.put(Stop("Shutdown")) + + def is_stopped(self): + return self._stop_event.is_set() + + def parse_asset_string(self, asset: str): + pieces = asset.split("?") + asset = pieces[0] + params = {} + if len(pieces) > 1: + query_string = pieces[1] + query_params = query_string.split("&") + for param in query_params: + key, value = param.split("=") + params[key] = value + return asset, params + +class VideoInputDataFlow(DataFlow): + """A data flow for live stream data""" + def __init__(self, configs: List[Dict], tensor_names: List[Tuple[str, str]], key_tensor_type: str, timeout=1.0): + super().__init__(configs, tensor_names, True, False, timeout) + self._video_tensor_type = key_tensor_type + self._video_tensor_names = [] + for tensor_name in tensor_names: + config = next((c for c in configs if c["name"] == tensor_name[0]), None) + if config and config["data_type"] == key_tensor_type: + self._video_tensor_names.append(tensor_name[1]) + # Thread pool for collecting frames in background + n_codec_instances = int(os.getenv("N_CODEC_INSTANCES", 1)) + self._frame_collector = ThreadPoolExecutor(max_workers=n_codec_instances) + logger.info(f"VideoInputDataFlow initialized with {n_codec_instances} codec instances") + + def _process_custom_data(self, tensor: np.ndarray, data_type: str): + """ + Process custom video data types. + + Returns: + Union[Queue, np.ndarray, EnhancedError]: + - Queue: Results queue for live video streams (non-blocking) + - np.ndarray: Fallback to parent processing + - EnhancedError: If asset not found or processing fails + """ + if data_type == self._video_tensor_type: + return self._process_video_assets(tensor) + else: + return super()._process_custom_data(tensor, data_type) + + def _collect_live_stream_frames(self, asset_list, chunk_params, media_chunks, results_queue, scaling=None): + """ + Collect frames from live streams in a background thread. + + Args: + asset_list: List of locked assets + chunk_params: List of dicts with n_frames and max_chunks for each asset + media_chunks: List of MediaChunk configurations + results_queue: Queue to put results into + scaling: Optional target resolution as (width, height) tuple + """ + unlocked = False + try: + max_batch_size = int(os.getenv("MAX_BATCH_SIZE", 16)) + batch_size = min(max_batch_size, len(media_chunks)) + extractor_kwargs = {"n_thread": 1, "batch_size": batch_size} + if scaling is not None: + extractor_kwargs["scaling"] = scaling + with MediaExtractor(media_chunks, **extractor_kwargs) as media_extractor: + qs = media_extractor() + eos_flags = [False] * len(qs) + chunks_yielded = [0] * len(qs) # Track chunks per stream + + while not all(eos_flags): + results = [] + for idx, q in enumerate(qs): + # Check if this specific asset is marked for deletion + if asset_list[idx].is_marked_for_deletion(): + logger.info(f"Stream {idx} asset marked for deletion, stopping processing for this stream") + eos_flags[idx] = True + continue + + # Check if this stream has reached its maximum chunks limit + max_chunks = chunk_params[idx].get("max_chunks") + if max_chunks is not None and chunks_yielded[idx] >= max_chunks: + logger.info("Stream %s reached maximum chunks limit: %s", idx, max_chunks) + eos_flags[idx] = True + continue + + n_frames = chunk_params[idx]["n_frames"] + frames = [] + frame_count = 0 + + while not eos_flags[idx]: + try: + frame = q.get(timeout=5.0) + if frame is None: + logger.info("Frame extraction completed for stream %s", idx) + eos_flags[idx] = True + break + frames.append(frame) + frame_count += 1 + + # Put to results queue when we reach n_frames + if n_frames and frame_count >= n_frames: + results.append(frames) + chunks_yielded[idx] += 1 + frames = [] + frame_count = 0 + break # Exit inner loop + + except Empty: + logger.info("EOS on live stream %s", idx) + eos_flags[idx] = True + break + + # TODO WAR on pyservicemaker error + time.sleep(0) + + if results: # Only put if we have collected frames + try: + results_queue.put(results, timeout=10.0) + except Full: + logger.warning(f"Results queue is full, dropping frame batch") + break + + # Unlock assets BEFORE MediaExtractor cleanup to avoid blocking on __exit__ + results_queue.put(Stop("end")) + for asset in asset_list: + asset.unlock() + unlocked = True + + logger.info("Media processing completed") + except Exception as e: + logger.exception(f"Error in live stream frame collection: {e}") + error = ErrorFactory.from_exception(e, caller=self) + error.log(logger, as_json=False) + results_queue.put(error) + finally: + # Fallback: ensure assets are unlocked if exception occurred before unlocking + if not unlocked: + results_queue.put(Stop("end")) + for asset in asset_list: + asset.unlock() + + def _process_video_assets(self, assets: np.ndarray): + """ + Process video assets using Queue-based approach (non-blocking). + + Args: + assets: Array of asset strings with query parameters + + Returns: + Union[Queue, EnhancedError]: Results queue or error + """ + media_chunks = [] + chunk_params = [] # Store n_frames and max_chunks for each asset + asset_list = [] + expected_n_frames = None + expected_scaling = None + + for a in assets: + asset_manager = AssetManager() + asset_id, params = self.parse_asset_string(a) + asset = asset_manager.get_asset(asset_id) + if asset: + asset_list.append(asset) + n = int(params.get("frames", None)) + max_chunks = params.get("chunks", None) + if max_chunks is not None: + max_chunks = int(max_chunks) + + # Validate that all assets have the same n_frames + if expected_n_frames is None: + expected_n_frames = n + elif expected_n_frames != n: + error = ErrorFactory.create( + "ERR_VIDEO_001", + message=f"frames mismatch on multiple assets: {expected_n_frames} != {n}", + caller=self, + severity=ErrorSeverity.WARNING, + actual_data={"n_frames_first": expected_n_frames, "n_frames_current": n} + ) + error.log(logger, as_json=False) + return error + + interval = int(params.get("interval", 0)) + + # Parse scaling parameter (format: widthxheight, e.g., 1920x1080) + scaling = None + scale_param = params.get("scale", None) + if scale_param: + try: + width, height = scale_param.split("x") + scaling = (int(width), int(height)) + except (ValueError, AttributeError) as e: + error = ErrorFactory.create( + "ERR_VIDEO_001", + message=f"Invalid scale parameter format: {scale_param}. Expected format: widthxheight (e.g., 1920x1080)", + caller=self, + severity=ErrorSeverity.WARNING, + input_data={"scale_param": scale_param} + ) + error.log(logger, as_json=False) + return error + + # Validate that all assets have the same scaling + if expected_scaling is None: + expected_scaling = scaling + elif expected_scaling != scaling: + error = ErrorFactory.create( + "ERR_VIDEO_001", + message=f"scale mismatch on multiple assets: {expected_scaling} != {scaling}", + caller=self, + severity=ErrorSeverity.WARNING, + actual_data={"scale_first": expected_scaling, "scale_current": scaling} + ) + error.log(logger, as_json=False) + return error + + media_chunks.append(MediaChunk( + asset.path, + start_pts=0, + interval=interval + )) + chunk_params.append({"n_frames": n, "max_chunks": max_chunks}) + else: + error = ErrorFactory.create( + "ERR_DF_003", + message=f"Asset not found: {asset_id}", + caller=self, + input_data={ + "asset_id": asset_id, + "asset_string": a, + "params": params + }, + metadata={ + "n_frames": params.get("frames"), + "interval": params.get("interval") + } + ) + error.log(logger, as_json=False) + return error + + # Create results queue and submit background thread + results_queue = Queue(maxsize=32) + for asset in asset_list: + asset.lock() + + self._frame_collector.submit( + self._collect_live_stream_frames, asset_list, chunk_params, media_chunks, results_queue, expected_scaling + ) + return results_queue + + def _is_collected_valid(self, collected: Dict): + result = super()._is_collected_valid(collected) + if not result: + return False + return all([n in collected for n in self._video_tensor_names]) + + def stop(self): + super().stop() + if hasattr(self, '_frame_collector') and self._frame_collector: + logger.info("VideoInputDataFlow: shutting down frame collector") + self._frame_collector.shutdown(wait=True) + logger.info("VideoInputDataFlow: frame collector shut down") + self._frame_collector = None + + +class VideoFrameSamplingDataFlow(DataFlow): + """A data flow for video frame sampling - for short videos without chunking""" + def __init__(self, configs: List[Dict], tensor_names: List[Tuple[str, str]], key_tensor_type: str, timeout=1.0): + super().__init__(configs, tensor_names, True, False, timeout) + n_codec_instances = int(os.getenv("N_CODEC_INSTANCES", 1)) + self._media_extractor = MediaExtractor(chunks=[], n_thread=n_codec_instances) + self._video_tensor_type = key_tensor_type + self._video_tensor_names = [] + for tensor_name in tensor_names: + config = next((c for c in configs if c["name"] == tensor_name[0]), None) + if config and config["data_type"] == key_tensor_type: + self._video_tensor_names.append(tensor_name[1]) + self._media_extractor() + self._frame_collector = ThreadPoolExecutor(max_workers=n_codec_instances) + logger.info(f"VideoFrameSamplingDataFlow initialized for short video handling") + + def _process_custom_data(self, tensor: np.ndarray, data_type: str) -> Union[Queue, List, np.ndarray, EnhancedError]: + """ + Process custom video frame sampling data types. + + Returns: + Union[Queue, List, np.ndarray, EnhancedError]: + - Queue: Results queue for frame sampling (streaming) + - List: Fallback to parent processing + - np.ndarray: Fallback to parent processing + - EnhancedError: If asset not found or processing fails + """ + logger.debug("VideoFrameSamplingDataFlow._process_custom_data: %s", data_type) + if data_type == self._video_tensor_type: + return self._do_video_frame_sampling(tensor) + else: + return super()._process_custom_data(tensor, data_type) + + def _collect_frames_from_queue(self, assets, qs, n_frames, results_queue): + """Collect frames from queues in a separate thread - single batch, no chunking""" + total_frames = [[] for _ in qs] + + # Collect n_frames from each queue + for frame_idx in range(n_frames): + for i, q in enumerate(qs): + try: + frame = q.get(timeout=10.0) + if frame is None: + logger.info("Frame extraction completed for stream %s", i) + break + total_frames[i].append(frame) + except Empty: + logger.warning("Frame queue empty for stream %s", i) + break + + # Put the collected frames to results queue + if any(total_frames): + try: + results_queue.put(total_frames, timeout=10.0) + except Full: + error = ErrorFactory.create( + "ERR_DF_005", + caller=self, + severity=ErrorSeverity.WARNING, + metadata={ + "n_frames": n_frames, + "queue_info": "Results queue is full" + } + ) + error.log(logger, as_json=False) + + # Signal completion and unlock assets + results_queue.put(Stop("end")) + for asset in assets: + asset.unlock() + return + + + def _do_video_frame_sampling(self, assets: np.ndarray): + """Extract frames from videos - single batch, no chunking. Parameters: frames, start, duration""" + qs = [] + asset_list = [] + start_times = [] # Store per-asset start times + n_frames = None + duration = None + + for asset_str in assets: + asset_manager = AssetManager() + asset_id, params = self.parse_asset_string(asset_str) + asset = asset_manager.get_asset(asset_id) + if not asset: + error = ErrorFactory.create( + "ERR_DF_003", + message=f"Asset not found: {asset_id}", + caller=self, + input_data={"asset_id": asset_id, "asset_string": asset_str, "params": params} + ) + error.log(logger, as_json=False) + return error + + asset_list.append(asset) + + # Validate frames parameter (required) + if "frames" not in params: + error = ErrorFactory.create( + "ERR_VIDEO_001", + message="Missing required parameter 'frames' for video frame sampling", + caller=self, + severity=ErrorSeverity.CRITICAL, + input_data={"asset_id": asset_id, "params": params}, + expected_data={"required_params": ["frames"]} + ) + error.log(logger, as_json=False) + return error + + try: + n = int(params["frames"]) + if n <= 0: + raise ValueError("frames must be positive") + except (TypeError, ValueError) as e: + error = ErrorFactory.create( + "ERR_VIDEO_001", + message=f"Invalid 'frames' value: {params['frames']} - {e}", + caller=self, + severity=ErrorSeverity.CRITICAL, + input_data={"asset_id": asset_id, "frames": params["frames"]} + ) + error.log(logger, as_json=False) + return error + + if n_frames is None: + n_frames = n + elif n_frames != n: + error = ErrorFactory.create( + "ERR_VIDEO_001", + message=f"frames mismatch on multiple assets: {n_frames} != {n}", + caller=self, + severity=ErrorSeverity.WARNING + ) + error.log(logger, as_json=False) + return error + + # Validate duration parameter (optional, default asset duration) + n = int(params.get("duration", asset.duration)) + if duration is None: + duration = n + elif duration != n: + error = ErrorFactory.create( + "ERR_VIDEO_001", + message=f"duration mismatch on multiple assets: {duration} != {n}", + caller=self, + severity=ErrorSeverity.WARNING + ) + error.log(logger, as_json=False) + return error + + # Extract start parameter (optional, default 0) - can vary per asset + start = int(params.get("start", 0)) + start_times.append(start) + + # Calculate frame sampling interval + interval = duration / n_frames if n_frames > 0 else 0 + + # Setup MediaExtractor queues for each asset + results_queue = Queue() + for asset, start_time in zip(asset_list, start_times): + asset.lock() + chunk = MediaChunk( + asset.path, + start_pts=start_time, + duration=duration if duration else -1, + interval=interval if interval else 0 + ) + qs.append(self._media_extractor.append(chunk)) + + # Submit frame collection task to thread pool + self._frame_collector.submit( + self._collect_frames_from_queue, asset_list, qs, n_frames, results_queue + ) + return results_queue + + def _is_collected_valid(self, collected: Dict): + result = super()._is_collected_valid(collected) + if not result: + return False + return all([n in collected for n in self._video_tensor_names]) + + def stop(self): + super().stop() + if self._media_extractor: + # explicitly call __exit__ due to MediaExtractor internal threads holding the reference + self._media_extractor.__exit__(None, None, None) + self._media_extractor = None + if self._frame_collector is not None: + logger.info(f"VideoFrameSamplingDataFlow: shutting down frame collector") + self._frame_collector.shutdown(wait=True) + logger.info(f"VideoFrameSamplingDataFlow: frame collector shut down") + self._frame_collector = None + +class ImageInputDataFlow(DataFlow): + """A data flow for image data""" + def __init__(self, configs: List[Dict], tensor_names: List[Tuple[str, str]], key_tensor_type: str, timeout=1.0): + super().__init__(configs, tensor_names, True, False, timeout) + self._image_decoder = ImageDecoder(["JPEG", "PNG"]) + self._image_tensor_names = [] + for tensor_name in tensor_names: + config = next((c for c in configs if c["name"] == tensor_name[0]), None) + if config and config["data_type"] == key_tensor_type: + self._image_tensor_names.append(tensor_name[1]) + if not self._image_tensor_names: + raise Exception("Image tensor name not found in the ImageInputDataFlow") + + def _process_custom_data(self, images: np.ndarray, data_type: str) -> Union[List, np.ndarray, EnhancedError]: + """ + Process custom image data types. + + Args: + images: Input image data (base64 or asset references) + data_type: The custom data type string + + Returns: + Union[List, np.ndarray, EnhancedError]: + - List: Decoded images (list of tensors) + - np.ndarray: Fallback to parent processing + - EnhancedError: If decoder not initialized or processing fails + + Note: + Returns EnhancedError (not raises) when decoder is not initialized, + allowing the error to be propagated through the pipeline. + """ + logger.debug("ImageInputDataFlow._process_custom_data: %s", data_type) + if self._image_decoder is None: + return ErrorFactory.create( + "ERR_IMG_003", + caller=self, + severity=ErrorSeverity.CRITICAL + ) + if data_type == "TYPE_CUSTOM_IMAGE_BASE64": + return self._process_base64_image(images) + elif data_type == "TYPE_CUSTOM_IMAGE_ASSETS": + return self._process_image_assets(images) + else: + return super()._process_custom_data(images, data_type) + + def _is_collected_valid(self, collected: Dict): + result = super()._is_collected_valid(collected) + if not result: + return False + return all([n in collected for n in self._image_tensor_names]) + + def _process_base64_image(self, images: np.ndarray): + result = [] + for image in images: + if not isinstance(image, np.str_): + error = ErrorFactory.create( + "ERR_IMG_002", + message=f"base64 image must be bytes or string, got {type(image).__name__}", + caller=self, + input_data={"image_type": type(image).__name__}, + expected_data={"valid_types": ["bytes", "np.bytes_", "str", "np.str_"]} + ) + error.log(logger, as_json=False) + return error + try: + data_prefix, data_payload = image.split(",") + mime_type = data_prefix.split(";")[0].split(":")[1] + format = None + if mime_type == "image/jpeg" or mime_type == "image/jpg": + format = "JPEG" + elif mime_type == "image/png": + format = "PNG" + else: + error = ErrorFactory.create( + "ERR_IMG_001", + message=f"Unsupported image format: {mime_type}", + caller=self, + input_data={"mime_type": mime_type, "data_prefix": data_prefix}, + expected_data={"supported_formats": ["image/jpeg", "image/jpg", "image/png"]} + ) + error.log(logger, as_json=False) + return error + data_payload = base64.b64decode(data_payload) + except Exception: + error = ErrorFactory.create( + "ERR_DF_002", + message=f"Failed to decode base64 string for image data: {image}", + caller=self, + input_data={"input": image}, + expected_data={"valid_encoding": "base64"} + ) + error.log(logger, as_json=False) + return error + tensor = as_tensor(np.frombuffer(data_payload, dtype=np.uint8).copy(), format) + result.append(self._image_decoder.decode(tensor, format)) + logger.debug("ImageInputDataFlow._process_base64_image generates %s tensors", len(result)) + return result + + def _process_image_assets(self, assets: np.ndarray): + result = [] + for asset in assets: + asset_manager = AssetManager() + asset = asset_manager.get_asset(asset) + if not asset: + error = ErrorFactory.create( + "ERR_DF_003", + message=f"Asset not found: {asset}", + caller=self, + input_data={"asset_id": asset} + ) + error.log(logger, as_json=False) + return error + asset.lock() + format = None + if asset.mime_type == "image/jpeg" or asset.mime_type == "image/jpg": + format = "JPEG" + elif asset.mime_type == "image/png": + format = "PNG" + else: + error = ErrorFactory.create( + "ERR_IMG_001", + message=f"Unsupported image format: {asset.mime_type}", + caller=self, + input_data={"mime_type": asset.mime_type, "asset_path": asset.path}, + expected_data={"supported_formats": ["image/jpeg", "image/jpg", "image/png"]} + ) + error.log(logger, as_json=False) + asset.unlock() + return error + with open(asset.path, "rb") as f: + data = f.read() + tensor = as_tensor(np.frombuffer(data, dtype=np.uint8).copy(), format) + result.append(self._image_decoder.decode(tensor, format)) + asset.unlock() + return result + +inbound_dataflow_mapping = { + "TYPE_CUSTOM_IMAGE_BASE64": ImageInputDataFlow, + "TYPE_CUSTOM_IMAGE_ASSETS": ImageInputDataFlow, + "TYPE_CUSTOM_LONG_VIDEO_ASSETS": VideoInputDataFlow, + "TYPE_CUSTOM_VIDEO_CHUNK_ASSETS": VideoFrameSamplingDataFlow +} +class ModelBackend(ABC): + """Interface for standardizing the model backend """ + def __init__(self, model_config: Dict, model_home: str, device_id=0): + self._model_config = model_config + self._model_home = model_home + self._device_id = device_id + + @property + def device_id(self): + return self._device_id + + @property + def model_home(self): + return self._model_home + + @abstractmethod + def __call__(self, *args, **kwargs): + raise Exception("Not Implemented") + + def stop(self): + logger.info(f'Backend for {self._model_config["name"]} stopped') + +class Processor(ABC): + def __init__(self, config: Dict, model_home: str): + self._name = config['name'] + self._kind = config['kind'] if 'kind' in config else 'auto' + self._input = config['input'] if 'input' in config else [] + self._output = config['output'] if 'output' in config else [] + self._config = { 'device_id': 0, 'model_home': model_home } + if 'config' in config: + self._config.update(config['config']) + self._name = config['name'] + self._processor = None + + @property + def name(self): + return self._name + + @property + def input(self): + return self._input + + @property + def output(self): + return self._output + + @property + def kind(self): + return self._kind + + @property + def config(self): + return self._config + + @abstractmethod + def __call__(self, *args, **kwargs): + pass + +class AutoProcessor(Processor): + """AutoPrrocessor loads the preprocessor from pretrained""" + def __init__(self, config: Dict, model_home: str): + super().__init__(config, model_home) + import transformers + self._processor = transformers.AutoProcessor.from_pretrained(model_home) + if self._processor is None: + error = ErrorFactory.create( + "ERR_PROC_002", + message=f"Failed to load AutoProcessor from {model_home}", + caller=self, + severity=ErrorSeverity.CRITICAL, + related_config={"model_home": model_home, "config": config} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + + def __call__(self, *args): + # TODO value parser should be configurable + return self._processor(*args) + +class CustomProcessor(Processor): + """CustomProcessor loads the processor from custom module""" + def __init__(self, config: Dict, model_home: str): + super().__init__(config, model_home) + if not hasattr(custom, "create_instance"): + error = ErrorFactory.create( + "ERR_PROC_003", + caller=self, + severity=ErrorSeverity.CRITICAL, + related_config={"config": config, "model_home": model_home} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + self._processor = custom.create_instance(self.name, self.config) + if self._processor is not None: + logger.info(f"Custom processor {self._processor.name} created") + else: + error = ErrorFactory.create( + "ERR_PROC_004", + message=f"Failed to create processor {self.name}", + caller=self, + severity=ErrorSeverity.CRITICAL, + related_config={"processor_name": self.name, "config": config} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + + def __call__(self, *args): + ret = self._processor(*args) + if not isinstance(ret, tuple): + ret = ret, + return ret + +class Collector(ABC): + """Collector is an interface for collecting data from the data flow""" + def collect(self): + raise NotImplementedError("Not implemented") + + def stop(self): + raise NotImplementedError("Not implemented") + +class SingleFlowCollector(Collector): + """SingleFlowCollector is a collector for a single data flow""" + def __init__(self, data_flow: DataFlow): + self._data_flow = data_flow + + def collect(self): + return self._data_flow.get() + + def stop(self): + return self._data_flow.stop() + +class AggregationFlowCollector(Collector): + """AggregationFlowCollector is a collector aggregating multiple data flows""" + def __init__(self, data_flows: List[DataFlow], timeout=None): + self._data_flows = data_flows + self._executor = ThreadPoolExecutor(max_workers=1) + self._queue = Queue() + self._stop_event = threading.Event() + self._timeout = timeout + self._futures = self._executor.submit(self._collect) + + def collect(self): + return self._queue.get(timeout=self._timeout) + + def _collect(self): + logger.info(f"AggregationFlowCollector starts collecting data") + while not self._stop_event.is_set(): + result = {} + completed = [] + for data_flow in self._data_flows: + # continue reading from each data flow until we get some data + while not self._stop_event.is_set(): + try: + data = data_flow.get() + if isinstance(data, Error) or isinstance(data, Stop): + completed.append(data) + else: + result.update(data) + break + except Empty: + continue + if result: + self._queue.put(result) + if completed and all([isinstance(c, Stop) for c in completed]): + self._queue.put(Stop("All data flows completed")) + elif any([isinstance(c, Error) for c in completed]): + self._queue.put(Error("One or more data flows ended in error")) + + def stop(self): + logger.info(f"AggregationFlowCollector destructing...") + self._stop_event.set() + for data_flow in self._data_flows: + data_flow.stop() + self._executor.shutdown(wait=True) + self._queue.put(Stop("Shutdown")) + logger.info(f"AggregationFlowCollector destructed") + +class MultiFlowCollector(Collector): + """MultiFlowCollector is a collector for multiple data flows""" + def __init__(self, data_flows: List[DataFlow], timeout=None): + self._data_flows = data_flows + self._executor = ThreadPoolExecutor(max_workers=len(data_flows)) + self._queue = Queue() + self._stop_event = threading.Event() + self._condition = threading.Condition() + self._active_flow = -1 + self._timeout = timeout + self._futures = [self._executor.submit(self._poll, i) for i in range(len(self._data_flows))] + + def collect(self): + data = self._queue.get(timeout=self._timeout) + return data + + def _poll(self, index: int): + logger.info("Start polling data flow %s", self._data_flows[index].in_names) + data_flow = self._data_flows[index] + n_data = 0 + while not self._stop_event.is_set(): + try: + data = data_flow.get() + is_stop = isinstance(data, Stop) + if is_stop and n_data == 0: + # empty data flow, skip it + logger.info(f"Empty data flow {data_flow.in_names}, skip it") + continue + elif not is_stop: + n_data += 1 + # try grabbing the queue + with self._condition: + while self._active_flow != index and self._active_flow != -1: + self._condition.wait() + if self._active_flow == -1: + self._active_flow = index + self._queue.put(data) + with self._condition: + if isinstance(data, Stop): + logger.info("Data flow %s ended in: %s", data_flow.in_names, data) + self._active_flow = -1 + n_data = 0 + self._condition.notify_all() + except Empty: + continue + + + def stop(self): + logger.info(f"MultiFlowCollector destructing...") + self._stop_event.set() + for data_flow in self._data_flows: + data_flow.stop() + logger.info(f"MultiFlowCollector data flows stopped") + self._executor.shutdown(wait=True) + self._queue.put(Stop("Shutdown")) + logger.info(f"MultiFlowCollector destructed") + + +class AsyncDispatcher: + """AsyncDispatcher is a dispatcher of synchronous data flows to asynchronous queues""" + def __init__(self, collector: Collector, loop: asyncio.AbstractEventLoop, n_max_async_queues: int = 100): + self._collector = collector + self._loop = loop + self._consumer_queues = Queue(maxsize=n_max_async_queues) + self._stop_event = threading.Event() + self._dispatcher_thread = threading.Thread(target=self.run, daemon=True) + self._dispatcher_thread.start() + + def append_async_queue(self, async_queue: asyncio.Queue): + try: + self._consumer_queues.put_nowait(async_queue) + except Full: + error = ErrorFactory.create( + "ERR_ASYNC_003", + caller=self, + severity=ErrorSeverity.CRITICAL, + metadata={"queue_maxsize": self._consumer_queues.maxsize} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + + def run(self): + if self._collector is None: + error = ErrorFactory.create( + "ERR_ASYNC_001", + caller=self, + severity=ErrorSeverity.CRITICAL + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + if self._loop is None: + error = ErrorFactory.create( + "ERR_ASYNC_002", + caller=self, + severity=ErrorSeverity.CRITICAL + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + logger.info("AsyncDispatcher started") + while not self._stop_event.is_set(): + try: + async_queue = self._consumer_queues.get(timeout=1.0) + except Empty: + continue + except Exception as e: + logger.exception(e) + continue + + # For this consumer queue, keep collecting until Stop/Error is received + logger.debug("[AsyncDispatcher] Starting collection loop for new async_queue") + collect_attempts = 0 + while not self._stop_event.is_set(): + try: + logger.debug("[AsyncDispatcher] Attempting to collect (attempt #%s)", collect_attempts) + data = self._collector.collect() + logger.debug("[AsyncDispatcher] Collected data: %s", type(data).__name__) + except Empty: + collect_attempts += 1 + if collect_attempts % 100 == 0: + logger.debug("[AsyncDispatcher] Still waiting for data after %s attempts", collect_attempts) + continue + except Exception as e: + logger.exception(e) + data = Error(str(e)) + try: + logger.debug("[AsyncDispatcher] Putting data into async_queue") + async def _async_put(q, item): + await q.put(item) + asyncio.run_coroutine_threadsafe(_async_put(async_queue, data), self._loop) + logger.debug("[AsyncDispatcher] Successfully put data into async_queue") + except Exception as e: + logger.exception(e) + continue + + if isinstance(data, Stop): + logger.info("AsyncDispatcher delivered Stop message: %s", data) + break + + logger.info("AsyncDispatcher stopped") + + def stop(self): + self._stop_event.set() + logger.info("AsyncDispatcher stopping") + +class ModelOperator: + """An model operator runs a single model""" + def __init__(self, model_config:Dict, model_repo: str): + self._model_name = model_config["name"] + self._model_home = os.path.join(model_repo, self._model_name) + self._in: List[DataFlow] = [] + self._out: List[DataFlow] = [] + self._running = False + self._preprocessors = [] + self._postprocessors = [] + self._model_config = model_config + self._backend = None + self._stop_event = threading.Event() + self._collector = None + self._future_consumer = None + + + @property + def model_name(self): + return self._model_name + + @property + def model_config(self): + return self._model_config.copy() + + @property + def inputs(self): + return self._in.copy() + + @property + def outputs(self): + return self._out.copy() + + def bind_input(self, configs: List[Dict], targets: List[str]=[]): + if not targets: + targets = [i['name'] for i in configs] + flow = None + tensor_names = [(i['name'], o) for i, o in zip(configs, targets)] + tensor_types = [i['data_type'] for i in configs] + image_tensor_type = None + for tensor_type in tensor_types: + if tensor_type in inbound_dataflow_mapping: + image_tensor_type = tensor_type + break + if image_tensor_type is None: + flow = DataFlow(configs, tensor_names, inbound=True) + else: + # customized inbound data flow + flow = inbound_dataflow_mapping[image_tensor_type](configs, tensor_names, image_tensor_type) + self._in.append(flow) + logger.info("Data flow < %s -> %s > connected to model %s", flow.in_names, flow.o_names, self._model_name) + return flow + + def bind_output(self, configs: List[Dict], sources: List[str]=[]): + if not sources: + sources = [i['name'] for i in configs] + tensor_names = [(i, o['name']) for i, o in zip(sources, configs)] + flow = DataFlow(configs, tensor_names, outbound=True) + self._out.append(flow) + logger.info(f"model {self._model_name} connected to Data flow < {flow.in_names} -> {flow.o_names} >") + return flow + + def import_input(self, input: DataFlow): + self._in.append(input) + + def import_output(self, output: DataFlow): + self._out.append(output) + + def set_backend(self, backend: ModelBackend): + self._backend = backend + + def _pass_error_or_stop_downstream(self, data: Union[Error, Stop]): + """ + Pass Error or Stop message to downstream dataflows. + + Args: + data: Error or Stop object to pass downstream + + Note: + If _future_consumer exists, the error/stop is wrapped in a Future + and sent through the consumer. Otherwise, it's sent directly to + output dataflows. + """ + if self._future_consumer is None: + # pass the error or stop message downstream + for out in self._out: + logger.debug("Passing error or stop message to %s", out.in_names) + out.put(data) + else: + f = Future() + f.set_result(data) + self._future_consumer.append_future(f) + + def run(self): + logger.debug("Model operator for %s started", self._model_name) + + # create preprocessors + for kind, processors in [("preprocessors", self._preprocessors), ("postprocessors", self._postprocessors)]: + if kind in self._model_config: + for config in self._model_config[kind]: + ProcessorClass = None + if config["kind"] == "auto": + ProcessorClass = AutoProcessor + elif config["kind"] == "custom": + ProcessorClass = CustomProcessor + if ProcessorClass is not None: + processors.append( + ProcessorClass( + config=config, + model_home=self._model_home + ) + ) + else: + raise Exception("Invalid Processor") + # backend loop + self._collector = self._create_collector() + if not self._out: + error = ErrorFactory.create( + "ERR_MO_003", + caller=self, + model_name=self._model_name, + severity=ErrorSeverity.CRITICAL, + related_config={"model_config": self._model_config} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + while not self._stop_event.is_set(): + try: + # collect input data until Stop is received + data = self._collector.collect() + if isinstance(data, Stop) or isinstance(data, Error): + self._pass_error_or_stop_downstream(data) + continue + logger.info("Input collected from %s: %s", self._collector.__class__.__name__, data) + + # convert data to args and kwargs based on if explicit batching is required + args = [] + kwargs = data + values = [v for v in data.values()] + lengths = [ + len(v) if isinstance(v, list) or v.ndim > 0 else 0 + for v in values + ] + if any(isinstance(v, list) for v in values) and \ + all(length == lengths[0] for length in lengths): + logger.info( + "Explicit batching detected, " + "splitting the data into multiple inference requests" + ) + # construct multiple inference requests + args = split_tensor_in_dict(kwargs) + kwargs = {} + # call preprocess() before passing args to the backend + processed, passthrough_tensors = self._preprocess(args if args else [kwargs]) + in_names = [i["name"] for i in self._model_config["input"]] + if not processed: + error = ErrorFactory.create( + "ERR_MO_001", + caller=self, + model_name=self._model_name, + input_data={ + "args": str(args)[:500] if args else "", + "kwargs_keys": list(kwargs.keys()) if kwargs else [] + }, + related_config={ + "preprocessors": [p.name for p in self._preprocessors], + "model_input": in_names + } + ) + error.log(logger, as_json=False) + self._pass_error_or_stop_downstream(error) + continue + if args: + # explicitly batched data + args = processed + elif kwargs: + # implicitly batched data + kwargs = processed[0] + else: + error = ErrorFactory.create( + "ERR_MO_004", + message="Invalid result from preprocess: both args and kwargs are empty", + caller=self, + model_name=self._model_name, + input_data={ + "processed": str(processed)[:500] if processed else "", + "passthrough_tensors_keys": list(passthrough_tensors[0].keys()) if passthrough_tensors else [] + } + ) + error.log(logger, as_json=False) + self._pass_error_or_stop_downstream(error) + continue + # execute inference backend and collect result + logger.debug("Model %s invokes backend %s with %s", self._model_name, self._backend.__class__.__name__, args if args else kwargs) + rs = self._backend(*args, **kwargs) + if isinstance(rs, Future): + def on_future_result(result: Dict|Error|Stop, user_data: List): + if isinstance(result, Error) or isinstance(result, Stop): + # Pass error/stop directly - already in FutureConsumer callback context + for out in self._out: + out.put(result) + return + self._on_inference_result(result, user_data[0]) + if self._future_consumer is None: + self._future_consumer = FutureConsumer( + name=self._model_name, + stop_event=self._stop_event, + result_callback=on_future_result + ) + self._future_consumer.append_future(rs, passthrough_tensors) + elif inspect.isgenerator(rs): + self._on_inference_result(rs, passthrough_tensors) + elif isinstance(rs, Error) or isinstance(rs, Stop): + self._pass_error_or_stop_downstream(rs) + continue + else: + error_msg = ( + f"Invalid result from backend {self._backend.__class__.__name__}: {rs}" + " Expected a Future or a generator" + ) + raise ValueError(error_msg) + except Empty: + continue + except Exception as e: + error = ErrorFactory.from_exception( + e, + caller=self, + category=ErrorCategory.BACKEND if "backend" in str(e).lower() else ErrorCategory.INTERNAL, + model_name=self._model_name, + dataflow_names=[name for o in self._out for name in o.in_names], + input_data={ + "data_keys": list(data.keys()) if 'data' in locals() and isinstance(data, dict) else [] + }, + related_config={ + "model_config": { + "name": self._model_config.get("name"), + "input": [i["name"] for i in self._model_config.get("input", [])], + "output": [o["name"] for o in self._model_config.get("output", [])] + }, + "backend": self._backend.__class__.__name__ if self._backend else None, + "n_preprocessors": len(self._preprocessors), + "n_postprocessors": len(self._postprocessors) + } + ) + error.log(logger, as_json=False) + + # Pass error downstream + self._pass_error_or_stop_downstream(error) + + logger.info(f"Model operator {self._model_name} stopped") + + def stop(self): + logger.info(f"Model operator {self._model_name} is stopping") + self._stop_event.set() + if self._collector is not None: + self._collector.stop() + if self._backend is not None: + self._backend.stop() + self._in.clear() + self._out.clear() + self._preprocessors.clear() + self._postprocessors.clear() + + def _on_inference_result(self, results: Generator, passthrough_tensors: Dict): + for r in results: + logger.debug( + "Model %s generated result from backend %s: %s", + self._model_name, self._backend.__class__.__name__, r + ) + # iterate the result list and postprocess each of them + for out in self._out: + output_data = {n : [] for n in out.in_names} + if isinstance(r, list): + # we get a batch + if len(passthrough_tensors) == 1: + passthrough_tensors = passthrough_tensors*len(r) + for i, result in enumerate(r): + if passthrough_tensors: + result.update(passthrough_tensors[i]) + result = self._postprocess(result) + if not all([n in result for n in out.in_names]): + error = ErrorFactory.create( + "ERR_MO_002", + message=f"Model output incomplete (batch item {i})", + caller=self, + model_name=self._model_name, + dataflow_names=out.in_names, + expected_data={"required_outputs": out.in_names}, + actual_data={"provided_outputs": list(result.keys())}, + related_config={"postprocessors": [p.name for p in self._postprocessors]} + ) + error.log(logger, as_json=False) + continue + # collect the result + for n, v in output_data.items(): + if n in result: + v.append(result[n]) + else: + v.append(None) + else: + # implicit batching + if passthrough_tensors: + r.update(passthrough_tensors[0]) + output_data = self._postprocess(r) + if not all([n in output_data for n in out.in_names]): + error = ErrorFactory.create( + "ERR_MO_002", + message="Model output incomplete", + caller=self, + model_name=self._model_name, + dataflow_names=out.in_names, + expected_data={"required_outputs": out.in_names}, + actual_data={"provided_outputs": list(output_data.keys())}, + related_config={"postprocessors": [p.name for p in self._postprocessors]} + ) + error.log(logger, as_json=False) + continue + logger.debug("ModelOperator of %s deposits result: %s", self._model_name, output_data) + out.put(output_data) + + def _preprocess(self, args: List): + # go through the preprocess chain + outcome = args + for preprocessor in self._preprocessors: + result = [] + for data in outcome: + # initialize the processed as the original values + processed = {k: v for k, v in data.items()} + # trigger the preprocessor if all the input tensors are present + if all([i in data for i in preprocessor.input]): + input = [processed.pop(i) for i in preprocessor.input] + logger.debug("%s invokes preprocessor %s with given input %s", self._model_name, preprocessor.name, input) + output = preprocessor(*input) + logger.debug("%s preprocessor %s generated output %s", self._model_name, preprocessor.name, output) + if len(output) != len(preprocessor.output): + error = ErrorFactory.create( + "ERR_PROC_001", + message=f"Number of preprocessing output doesn't match the configuration, expecting {len(preprocessor.output)}, while getting {len(output)}", + caller=self, + severity=ErrorSeverity.WARNING, + model_name=self._model_name, + expected_data={"output_count": len(preprocessor.output), "output_names": preprocessor.output}, + actual_data={"output_count": len(output)}, + related_config={"preprocessor": preprocessor.name} + ) + error.log(logger, as_json=False) + continue + # update as processed + for key, value in zip(preprocessor.output, output): + if value is not None: + processed[key] = value + else: + logger.info( + "Pre-processor %s skipped on mismatching input", + preprocessor.name + ) + result.append(processed) + # update outcome + outcome = result + # correct the data type and extract the passthrough tensors + passthrough_tensors = [] + for data in outcome: + passthrough_tensor = {} + for key in data: + value = data[key] + i_config = next((i for i in self._model_config['input'] if i["name"] == key), None) + if i_config is None: + logger.info("%s from preprocessed is not found in the model input config, adding it as a passthrough tensor", key) + passthrough_tensor[key] = value + else: + data_type = i_config["data_type"] + if isinstance(value, np.ndarray): + data_type = np_datatype_mapping[data_type] + if value.dtype != data_type: + data[key] = value.astype(data_type) + elif isinstance(value, torch.Tensor): + data_type = torch_datatype_mapping[data_type] + if value.dtype != data_type: + data[key] = value.to(data_type) + for key in passthrough_tensor: + data.pop(key) + passthrough_tensors.append(passthrough_tensor) + return outcome, passthrough_tensors + + def _postprocess(self, data: Dict): + processed = {k: v for k, v in data.items()} + for processor in self._postprocessors: + if not all([i in processed for i in processor.input]): + logger.info( + "Post-processor %s skipped on mismatching input", + processor.name + ) + continue + input = [processed.pop(i) for i in processor.input] + logger.debug("Post-processor %s invoked with given input %s", processor.name, input) + output = processor(*input) + logger.debug("Post-processor generated output %s", output) + if len(output) != len(processor.output): + error = ErrorFactory.create( + "ERR_PROC_001", + message=f"Number of postprocessing output doesn't match the configuration, expecting {len(processor.output)}, while getting {len(output)}", + caller=self, + severity=ErrorSeverity.WARNING, + model_name=self._model_name, + expected_data={"output_count": len(processor.output), "output_names": processor.output}, + actual_data={"output_count": len(output)}, + related_config={"postprocessor": processor.name} + ) + error.log(logger, as_json=False) + continue + # update as processed + for key, value in zip(processor.output, output): + processed[key] = value + return processed + + def _create_collector(self): + if len(self._in) == 1: + logger.info("Single data flow input detected, using single flow collector on model %s", self._model_name) + return SingleFlowCollector(self._in[0]) + else: + outputs = [set(d.o_names) for d in self._in] + intersection = set.intersection(*outputs) + if len(intersection) == 0 and not any([d.optional for d in self._in]): + logger.info("Aggregation data flow input detected, using aggregation flow collector on model %s", self._model_name) + return AggregationFlowCollector(self._in, timeout=1.0) + else: + logger.info("Multi data flow input detected, using multi flow collector on model %s", self._model_name) + return MultiFlowCollector(self._in, timeout=1.0) + +class InferenceBase: + """The base model that drives the inference flow""" + def initialize(self): + # Enable global error collection FIRST - before any error can occur + enable_global_error_collection(max_errors=5000) + atexit.register(InferenceBase._export_errors) + logger.info("Enhanced error collection enabled (with atexit export)") + + def parse_route(i1, i2) -> Route: + m1 = '' + m2 = '' + d1 = [] + d2 = [] + s = i1.split(':') + t = i2.split(':') + if len(s) > 2 or len(t) > 2: + error = ErrorFactory.create( + "ERR_ROUTE_001", + message=f"Invalid route format: {i1} -> {i2}", + component="InferenceBase", + operation="initialize", + severity=ErrorSeverity.CRITICAL, + input_data={"source": i1, "target": i2} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + else: + m1 = s[0] + m2 = t[0] + if len(s) == 2 and s[1]: + data = json.loads(s[1]) + if isinstance(data, list): + d1 = data + else: + error = ErrorFactory.create( + "ERR_ROUTE_001", + message="Invalid route: source data must be a list", + component="InferenceBase", + operation="initialize.parse_route", + severity=ErrorSeverity.CRITICAL, + input_data={"source_data": data} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + if len(t) == 2 and t[1]: + data = json.loads(t[1]) + if isinstance(data, list): + d2 = data + else: + error = ErrorFactory.create( + "ERR_ROUTE_001", + message="Invalid route: target data must be a list", + component="InferenceBase", + operation="initialize.parse_route", + severity=ErrorSeverity.CRITICAL, + input_data={"target_data": data} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + + return Route(Path(m1, m2), Path(d1, d2)) + + + self._operators: ModelOperator = [] + self._inputs: List[DataFlow] = [] + self._outputs: List[DataFlow] = [] + self._input_config = OmegaConf.to_container(global_config.input) + self._output_config = OmegaConf.to_container(global_config.output) + self._model_repo = global_config.model_repo + self._ready = False + + if not os.path.exists(self._model_repo): + error = ErrorFactory.create( + "ERR_SYS_001", + message=f"Model repository {self._model_repo} does not exist", + caller=self, + severity=ErrorSeverity.CRITICAL, + related_config={"model_repo": self._model_repo} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + + # set up the inference flow + for model_config in global_config.models: + self._operators.append(ModelOperator(OmegaConf.to_container(model_config), self._model_repo)) + + # initialize the operators + for operator in self._operators: + model_config = next((m for m in global_config.models if m.name == operator.model_name), None) + model_home = os.path.join(self._model_repo, operator.model_name) + backend_spec = model_config.backend.split('/') + backend_instance = self._create_backend(backend_spec, model_config, model_home) + if backend_instance is None: + raise RuntimeError(f"Unable to create backend {model_config.backend}") + operator.set_backend(backend_instance) + + if hasattr(global_config, "routes"): + # go through the routing table + for k, v in global_config.routes.items(): + route = parse_route(k, v) + logger.debug("Adding route %s", route) + # neither source nor target model is specified. + if not route.model.source and not route.model.target: + # this is a direct passthrough in the top level, we can use a standalone dataflow + if not route.data.source and not route.data.target: + logger.error(f"Invalid route: {route}, source or target is required for a direct pass") + continue + dataflow = None + if route.data.source: + s_configs = [OmegaConf.to_container(c) for c in global_config.input if c.name in route.data.source] + if len(s_configs) != len(route.data.source): + logger.error(f"Not all the sources are found in the input configs, unable to create passthrough dataflow") + continue + o_tensor_names = route.data.target if route.data.target else route.data.source + if any(n not in [c.name for c in global_config.output] for n in o_tensor_names): + logger.warning(f"Not all the output tensors from {o_tensor_names} are found in the output configs, consider adding a postprocessor to generate the missing tensors") + tensor_names = [(i['name'], o) for i, o in zip(s_configs, o_tensor_names)] + dataflow = DataFlow(configs=s_configs, tensor_names=tensor_names, inbound=True) + elif route.data.target: + t_configs = [OmegaConf.to_container(c) for c in global_config.output if c.name in route.data.target] + if len(t_configs) != len(route.data.target): + logger.error(f"Not all the targets are found in the output configs, unable to create passthrough dataflow") + continue + if any(n not in [c.name for c in global_config.input] for n in route.data.target): + logger.error(f"Not all the targets are found in the input configs, unable to create passthrough dataflow") + continue + tensor_names = [(i, i) for i in route.data.target] + dataflow = DataFlow(configs=t_configs, tensor_names=tensor_names, outbound=True) + else: + logger.error(f"Invalid route: {route}, source or target is required for a direct pass") + continue + if dataflow is not None: + self._inputs.append(dataflow) + self._outputs.append(dataflow) + elif route.model.target: + operator1 = next((o for o in self._operators if o.model_name == route.model.target), None) + if operator1 is None: + error = ErrorFactory.create( + "ERR_ROUTE_002", + message=f"Model {route.model.target} in the routes not found", + caller=self, + severity=ErrorSeverity.CRITICAL, + input_data={"model_name": route.model.target}, + related_config={"available_models": [o.model_name for o in self._operators]} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + # both source and target model are specified. + if route.model.source: + # this is the model provides data + operator2 = next((o for o in self._operators if o.model_name == route.model.source), None) + if operator2 is None: + error = ErrorFactory.create( + "ERR_ROUTE_002", + message=f"Model {route.model.source} in the routes not found", + caller=self, + severity=ErrorSeverity.CRITICAL, + input_data={"model_name": route.model.source}, + related_config={"available_models": [o.model_name for o in self._operators]} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + flow = None + if route.data.source and route.data.target: + tensor_names = [(i, o) for i, o in zip(route.data.source, route.data.target)] + flow = DataFlow(configs=None, tensor_names=tensor_names) + elif route.data.source: + tensor_names = [(i, i) for i in route.data.source] + flow = DataFlow(configs=None, tensor_names=tensor_names) + elif route.data.target: + tensor_names = [(i, i) for i in route.data.target] + flow = DataFlow(configs=None, tensor_names=tensor_names) + else: + logger.error(f"Invalid route: {route}, source or target is required for connecting two models, {operator2.model_name} and {operator1.model_name}") + continue + operator2.import_output(flow) + operator1.import_input(flow) + else: + # this is the top level input + if route.data.source: + s_configs = [] + for s in route.data.source: + c = next((c for c in global_config.input if c.name == s), None) + if c is None: + logger.error(f"Input {s} not found in the input configs, unable to create dataflow") + continue + s_configs.append(OmegaConf.to_container(c)) + else: + s_configs = [OmegaConf.to_container(c) for c in global_config.input] + self._inputs.append(operator1.bind_input(s_configs, route.data.target)) + # only source model is specified. + elif route.model.source: + # this is the top level output + operator = next((o for o in self._operators if o.model_name == route.model.source), None) + if operator is None: + error = ErrorFactory.create( + "ERR_ROUTE_002", + message=f"Model {route.model.source} in the routes not found", + caller=self, + severity=ErrorSeverity.CRITICAL, + input_data={"model_name": route.model.source}, + related_config={"available_models": [o.model_name for o in self._operators]} + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + if route.data.target: + configs = [OmegaConf.to_container(c) for c in global_config.output if c.name in route.data.target] + self._outputs.append(operator.bind_output(configs, route.data.source)) + else: + configs = [OmegaConf.to_container(c) for c in global_config.output if c.name in route.data.source] + if route.data.source == [c['name'] for c in configs]: + self._outputs.append(operator.bind_output(configs)) + else: + logger.warning(f"Output of {operator.model_name} is not compatible with top level output, be sure to add a top level postprocessor") + dataflow = DataFlow(configs=None, tensor_names=[(i, i) for i in route.data.source]) + operator.import_output(dataflow) + self._outputs.append(dataflow) + else: + logger.warning("Empty route entry") + elif len(self._operators) == 1: + # default flow for single model use case without an explicit route + operator = self._operators[0] + # direct connection from top level input to the model + self._inputs.append(operator.bind_input(OmegaConf.to_container(global_config.input))) + # direct connection from the model to top level output + self._outputs.append(operator.bind_output(OmegaConf.to_container(global_config.output))) + else: + logger.error("Unable to set up inference routes") + if len(self._inputs) == 0 or len(self._outputs) == 0: + error = ErrorFactory.create( + "ERR_SYS_002", + message="Either input or output is empty, inference pipeline is not complete", + caller=self, + severity=ErrorSeverity.CRITICAL, + actual_data={ + "n_inputs": len(self._inputs), + "n_outputs": len(self._outputs) + }, + related_config={ + "models": [o.model_name for o in self._operators] + } + ) + error.log(logger, as_json=False) + raise RuntimeError(str(error)) + self._executor = ThreadPoolExecutor(max_workers=len(self._operators)) + self._future = None + + # sanity check on vision pipeline + try: + Pipeline("vision") + except Exception as e: + logger.exception(e) + + # post processing: + self._processors = [] + if hasattr(global_config, "postprocessors"): + configs = OmegaConf.to_container(global_config.postprocessors) + for config in configs: + if config["kind"] == "custom": + self._processors.append( + CustomProcessor(config, self._model_repo) + ) + + # data collector + self._collector = ( + AggregationFlowCollector(self._outputs) + if len(self._outputs) > 1 + else SingleFlowCollector(self._outputs[0]) + ) + # async dispatcher + self._async_dispatcher = None + # stop event for request lifecycle + self._stop_event = threading.Event() + + + # start the inference flow + for operator in self._operators: + self._submit(operator) + + self._ready = True + logger.info("Inference Engine initialized for %s", global_config.name) + logger.info("Inputs: %s", [f.o_names for f in self._inputs]) + logger.info("Outputs: %s", [f.o_names for f in self._outputs]) + + def is_healthy(self): + return self._ready + + def finalize(self): + if self._stop_event is not None: + self._stop_event.set() + if self._async_dispatcher is not None: + self._async_dispatcher.stop() + self._async_dispatcher = None + if self._collector is not None: + self._collector.stop() + self._collector = None + for operator in self._operators: + operator.stop() + self._executor.shutdown() + + logger.info("Inference pipeline is finalized") + + @staticmethod + def _export_errors(): + """Export collected errors to JSON file for test validation. + + Uses ERROR_EXPORT_PATH env var to determine the full file path + (defaults to /tmp/inference_errors.json). + """ + error_export_path = os.environ.get("ERROR_EXPORT_PATH", "/tmp/inference_errors.json") + try: + collector = get_global_error_collector() + if collector: + stats = collector.get_stats(include_recent=100) + collector.export_to_json(error_export_path, include_stack_traces=False) + logger.info("Exported %s errors to %s", stats['total_errors'], error_export_path) + except Exception as e: + logger.warning("Failed to export errors: %s", e) + + def _create_backend(self, backend_spec: List[str], model_config: Dict, model_home: str) -> ModelBackend | None: + raise NotImplementedError("Subclass must implement this method") + + def _on_operator_done(self, future: Future, operator: ModelOperator): + """Callback when an operator thread completes. Handles exceptions by logging to error JSON.""" + try: + future.result() # This raises if the thread had an exception + except Exception as e: + error = ErrorFactory.from_exception( + e, + caller=self, + category=ErrorCategory.INTERNAL, + model_name=operator.model_name, + related_config={ + "model_config": { + "name": operator.model_config.get("name"), + "preprocessors": operator.model_config.get("preprocessors", []), + "postprocessors": operator.model_config.get("postprocessors", []) + } + } + ) + error.log(logger, as_json=False) + + logger.critical(f"Operator {operator.model_name} thread failed with exception: {e}") + logger.critical("Forcing application exit due to model thread failure") + + # Export errors and force exit - no graceful shutdown for unrecoverable critical exception + InferenceBase._export_errors() + os._exit(1) + + def _submit(self, op: ModelOperator): + future = self._executor.submit(lambda: op.run()) + future.add_done_callback(lambda f: self._on_operator_done(f, op)) \ No newline at end of file diff --git a/tools/inference_builder/lib/responder.py b/tools/inference_builder/lib/responder.py new file mode 100644 index 00000000..2e5c24ca --- /dev/null +++ b/tools/inference_builder/lib/responder.py @@ -0,0 +1,137 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from lib.asset_manager import AssetManager +from lib.utils import create_jinja2_env, stack_tensors_in_dict, convert_list, get_logger +from omegaconf.errors import ConfigKeyError +from omegaconf import OmegaConf +import base64 +from config import global_config +import json +import re +from pydantic import BaseModel +from typing import Dict, Any + +jinja2_env = create_jinja2_env() + +class ResponderBase: + def __init__(self): + self._action_map = {} + self._inference = None + self._request_templates = {} + self._response_templates = {} + self._asset_manager = AssetManager() + self.logger = get_logger(__name__) + + # load the request and response templates + try: + input_config = OmegaConf.to_container(global_config.server.responders) + except ConfigKeyError: + raise ValueError("No responders found in the config") + for rp, value in input_config.items(): + req_tpls = value.get("requests", {}) + for k, tpl in req_tpls.items(): + if rp not in self._request_templates: + self._request_templates[rp] = {} + if isinstance(tpl, list): + self._request_templates[rp][k] = tpl + else: + self._request_templates[rp][k] = base64.b64decode(tpl).decode() + res_tpls = value.get("responses", {}) + for k, tpl in res_tpls.items(): + if rp not in self._response_templates: + self._response_templates[rp] = {} + if isinstance(tpl, list): + self._response_templates[rp][k] = tpl + else: + self._response_templates[rp][k] = base64.b64decode(tpl).decode() + + async def take_action(self, action_name:str, *args): + action = self._action_map.get(action_name, None) + if not action: + raise ValueError(f"Unknown action: {action_name}") + return await action(*args) + + def healthy_ready(self): + return self._inference and self._inference.is_healthy() + + def process_request(self, responder: str, request: BaseModel) -> Dict[str, Any]: + self.logger.debug(f"Processing request {request}") + + result = json.loads(request.model_dump_json()) + + # find the request template for the endpoint + templates = self._request_templates.get(responder, None) + if not templates: + # no template to be applied on the request + return result + + request_class = next(iter(templates.keys())) + template = templates[request_class] + json_string = jinja2_env.from_string(template).render(request=result) + try: + result = json.loads(json_string) + except Exception as e: + self.logger.error(f"Error parsing request template: {e}") + self.logger.error(f"Json string: {json_string}") + raise e + + # template filters on each field + for key, value in templates.items(): + if not key in result: + continue + if isinstance(value, list): + # this is regex filter for fields + text = result.pop(key) + if not isinstance(text, str): + continue + regx = value[0] + keys = value[1:] + matches = re.findall(regx, text) + for match in matches: + if len(keys) != len(match): + continue + for x, y in zip(keys, match): + if y: + result.setdefault(x, []).append(y) + return result + + def process_response(self, responder: str, request, response: Dict[str, Any]) -> str: + self.logger.debug(f"Processing response {response}") + # Load the response template for the endpoint + templates = self._response_templates.get(responder, None) + if not templates: + # no template to be applied on the response + return response + + response_class = next(iter(templates.keys())) + template = templates[response_class] + json_string = jinja2_env.from_string(template).render(request=request, response=response) + return json_string + + def process_streamed_response(self, responder: str, request, response: Dict[str, Any]) -> str: + self.logger.debug(f"Processing streamed response {response}") + # Load the response template for the endpoint + templates = self._response_templates.get(responder, None) + if not templates: + # no template to be applied on the response + return response + keys = list(templates.keys()) + if len(keys) < 2: + return response + template = templates[keys[1]] + json_string = jinja2_env.from_string(template).render(request=request, response=response) + return json_string diff --git a/tools/inference_builder/lib/utils.py b/tools/inference_builder/lib/utils.py new file mode 100644 index 00000000..56bd152c --- /dev/null +++ b/tools/inference_builder/lib/utils.py @@ -0,0 +1,387 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import os +import re +import sys +import logging +import time +from typing import Callable, Optional, List, Dict, Any +import importlib +import numpy as np +import torch +import jinja2 +import json +from queue import Queue, Full, Empty +from concurrent.futures import Future +import threading + +kDebug = int(os.getenv("DEBUG", "0")) +PACKAGE_NAME = "ib" + +class NumpyFlatEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, np.ndarray): + return obj.flatten().tolist() + return super().default(obj) + + +def concat_tensors_in_dict(list_of_tensor_dicts: List) -> Dict: + result = {} + + # Iterate over each dictionary in the list + for d in list_of_tensor_dicts: + for key, value in d.items(): + if isinstance(value, np.ndarray): + result[key] = np.concatenate(result[key], value) if key in result else value + elif isinstance(value, torch.Tensor): + result[key] = torch.cat((result[key], value)) if key in result else value + else: + result[key] = result[key] + value if key in result else value + return result + +def stack_tensors_in_dict(list_of_tensor_dicts: List) -> Dict: + """ + [{'k1': 'v1', 'k2': 'v2'}, {'k1': 'v3', 'k2': 'v4'}] -> + {'k1': ['v1', 'v3'], 'k2': ['v2', 'v4']} + """ + result = {} + + # Iterate over each dictionary in the list + for d in list_of_tensor_dicts: + for key, value in d.items(): + if key not in result: + result[key] = [] # Create a new list for each new key + result[key].append(value) # Append the value to the list + # Iterate over the combined dictionary + for key in result: + tensor_list = result[key] + if isinstance(tensor_list[0], np.ndarray): + result[key] = np.stack(tensor_list, axis=0) + elif isinstance(tensor_list[0], torch.Tensor): + result[key] = torch.stack(tensor_list, dim=0) + + return result + +def split_tensor_in_dict(dict_of_tensor_list: Dict) -> List: + """ + {'k1': ['v1', 'v2'], 'k2': ['v3', 'v4']} -> + [{'k1': 'v1', 'k2': 'v3'}, {'k1': 'v2', 'k2': 'v4'}] + """ + values = [dict_of_tensor_list[k] for k in dict_of_tensor_list] + result = [] + + def _len(v): + if isinstance(v, list): + return len(v) + if isinstance(v, np.ndarray) and v.ndim > 0: + return len(v) + return 1 + + length = min(_len(v) for v in values) + for i in range(length): + result.append({ + k: v.item() if isinstance(v, np.ndarray) and v.ndim == 0 else v[i] + for k, v in dict_of_tensor_list.items() + }) + + return result + + +def convert_list(i: List, f: Callable): + # If the item is a list, apply the function recursively + if isinstance(i, list): + return [convert_list(item, f) for item in i] + else: + return f(i) + +def import_class(module_name, class_name): + # Import the module using importlib + module = importlib.import_module(module_name) + + # Get the class from the module using getattr + class_ = getattr(module, class_name) + + return class_ + +def create_jinja2_env(): + def start_with(field, s): + return field.startswith(s) + + def replace(value, pattern, text): + return re.sub(pattern, text, value) + + def extract(value, pattern): + match = re.search(pattern, value) + return match.group(1) if match else '' + + def raise_helper(message): + raise Exception(message) + + def tolist(value): + if hasattr(value, 'tolist'): + # Convert NumPy array to list and flatten to 1D + return value.flatten().tolist() + elif isinstance(value, list): + # Already a list, return as is + return value + else: + # Fallback: try to convert to list + return list(value) + + jinja2_env = jinja2.Environment() + jinja2_env.tests["startswith"] = start_with + jinja2_env.filters["replace"] = replace + jinja2_env.filters["extract"] = extract + jinja2_env.filters["tolist"] = tolist + jinja2_env.filters["zip"] = zip + jinja2_env.globals["raise"] = raise_helper + + return jinja2_env + +def get_logger(name: Optional[str] = None) -> logging.Logger: + """ Get component logger + + Parameters: + name: a module name + + Returns: A Logger Instance + """ + + log_level = os.getenv("LOG_LEVEL", "INFO").upper() + if kDebug: + log_level = logging.DEBUG + name = f"{PACKAGE_NAME}.{name}" + log_format = "%(asctime)s [%(levelname)s] [%(name)s]: %(message)s" + # sys.stdout.reconfigure(encoding="utf-8") + sys.stderr.reconfigure(encoding="utf-8") + print(f"logger {str(name)}, log_level: {str(log_level)}") + logging.basicConfig( + level=log_level, + format=log_format, + handlers=[logging.StreamHandler(sys.stderr)], + ) + logger = logging.getLogger(name) + logger.propagate = True + # formatter = logging.Formatter(log_format) + # stream_handler = logging.StreamHandler(sys.stdout) + # stream_handler.setFormatter(formatter) + # stream_handler.setLevel(log_level) + # logger.handlers.clear() + # logger.addHandler(stream_handler) + return logger + +def flush(logger): + for h in logger.handlers: + h.flush() + + +class SimpleLogger: + def __init__(self, name: str = ""): + self.name = name + def log_print(self, level, *args, **kwargs): + asctime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + prefix = f"{asctime} [{str(level)}] [{self.name}]: " + print(prefix, *args, **kwargs) + + def debug(self, *args, **kwargs): + if kDebug: + self.log_print("DEBUG", *args, **kwargs) + + def info(self, *args, **kwargs): + self.log_print("INFO", *args, **kwargs) + + def warning(self, *args, **kwargs): + self.log_print("WARNING", *args, **kwargs) + + def error(self, *args, **kwargs): + self.log_print("ERROR", *args, **kwargs) + +def tensor_info(tensor): + return f" shape: {tensor.shape}, dtype: {tensor.dtype}, dtype: {tensor.device}" + + +logger = get_logger(__name__) + +class FutureWrapper: + """A future wrapper for collecting results from an asynchronous operation""" + def __init__(self, future: Future, depot: Queue, *user_data): + self._future = future + self._depot = depot + self._user_data = list(user_data) + self._future.add_done_callback(self._on_done) + + + def __repr__(self): + return f"FutureWrapper(done={self._future.done()})" + + def _on_done(self, future: Future): + try: + self._depot.put_nowait(self) + except Full: + # fallback policy: best-effort enqueue with small timeout or log-and-drop + try: + self._depot.put(self, timeout=1) + except Full: + logger.warning( + f"FutureWrapper failed to enqueue to depot, dropped" + "consider increasing the future depot size" + ) + + @property + def user_data(self): + return self._user_data + + def result(self): + return self._future.result() + + def done(self): + return self._future.done() + + def cancel(self): + self._future.cancel() + +class FutureConsumer: + def __init__(self, + name: str, + stop_event: threading.Event, + result_callback: Callable[[Any, Any], None]): + self._name = name + self._stop_event = stop_event + self._future_depot = Queue() + self._future_lock = threading.Lock() + self._future_list = [] + self._result_callback = result_callback + self._future_consumer_thread = threading.Thread( + target=self.run, + daemon=True + ) + self._future_consumer_thread.start() + + def append_future(self, future: Future, *user_data): + future_wrapper = FutureWrapper(future, self._future_depot, *user_data) + with self._future_lock: + self._future_list.append(future_wrapper) + + def run(self): + if self._stop_event is None: + logger.error(f"Future consumer {self._name} failed to start, stopped event is None") + return + if not callable(self._result_callback): + logger.error(f"Future consumer {self._name} failed to start, result callback is not callable") + return + + logger.info(f"Future consumer for {self._name} started") + # Keep consuming completion signals and emit results in FIFO order of submission + while not self._stop_event.is_set(): + try: + # Wait for any future to complete; we only use this as a signal + future_wrapper = self._future_depot.get(timeout=1) + except Empty: + continue + except Exception as e: + logger.exception(e) + continue + + # Flush all completed futures from the head of the list (preserving order) + while True: + with self._future_lock: + if not self._future_list: + logger.info(f"Future consumer {self._name} future list is empty.") + break + if not self._future_list[0].done(): + logger.info(f"Future consumer {self._name} the first future in the list is not actually done. {self._future_list}") + break + future_wrapper = self._future_list.pop(0) + self._result_callback(future_wrapper.result(), future_wrapper.user_data) + + logger.info(f"Future consumer for {self._name} stopped") + +class ResultQueue: + def __init__(self, + queue: Queue, + result_callback: Callable[[Any, Any], None], + user_data: Any, + stop_event: Optional[threading.Event] = None): + self._queue = queue + self._result_callback = result_callback + self._user_data = user_data + self._stop_event = stop_event + + def __repr__(self): + return f"ResultQueue(queue={self._queue}, result_callback={self._result_callback}, user_data={self._user_data})" + + def get_all(self): + while self._stop_event is None or not self._stop_event.is_set(): + try: + item = self._queue.get(timeout=1.0) + except Empty: + # nothing to drain right now + continue + except Exception as e: + logger.exception(e) + break + self._result_callback(item, self._user_data) + if not item: + break + logger.debug(f"ResultQueue drained") + +class QueueConsumer: + """Consume ResultQueues in a single daemon thread and emit results. + + Submit work via append_queue(queue, result_callback, user_data=None). + Items pulled from the provided `queue` will be forwarded to + `result_callback(item, user_data)`. + """ + + def __init__(self, + name: str, + stop_event: threading.Event, + queue_get_timeout: float = 1.0): + self._name = name + self._stop_event = stop_event + self._queue_get_timeout = queue_get_timeout + self._queue_depot = Queue() + self._queue_consumer_thread = threading.Thread(target=self.run, daemon=True) + self._queue_consumer_thread.start() + + def append_queue(self, + queue: Queue, + result_callback: Callable[[Any, Any], None], + user_data: Any = None): + if not callable(result_callback): + logger.error(f"Queue consumer {self._name} append_queue failed: result_callback is not callable") + return + result_queue = ResultQueue(queue, result_callback, user_data, self._stop_event) + self._queue_depot.put(result_queue) + + def run(self): + if self._stop_event is None: + logger.error(f"Queue consumer {self._name} failed to start, stopped event is None") + return + + logger.info(f"Queue consumer for {self._name} started") + while not self._stop_event.is_set(): + try: + q = self._queue_depot.get(timeout=self._queue_get_timeout) + except Empty: + continue + except Exception as e: + logger.exception(e) + continue + q.get_all() + + logger.info(f"Queue consumer for {self._name} stopped") diff --git a/tools/inference_builder/mcp.png b/tools/inference_builder/mcp.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0bb1cb124ef85a5316b5dcdbfb87c28f7e5ccb GIT binary patch literal 150765 zcmc$`cT`l{vo*?5F#v)I0VNm^1QZZS62*ilIZKozIp@%zC?Jv~XHdymKyntL2?8R} zgeHiD7McdhLK9wX@Z8_`{`khYcZ~bSV{km(&F;O|UaMBstXZ?Rzr3vEak6t{BqSuq zr5@f>Bq1T4AR#%}cJwfOLK7xo3IF@YUQzN6Nq#5&47@pHEFmL7LQ)t)zNJSB?~mC$ zd}2>R!u$*Q?;mdiQhE}S-889t63Q+*bK9;lT8@e9yLFvesF_*RoJUrbqr*p8pt2?qIa+ zcd3QPj%tpCI&nqEOre_8s-8#()-JST-+jAIT!N5ecICsmPGYtA18r^X2Qad|pLZtG z!~_4n;jTD3@z38kS9w0W{QLQvKyJprub*GK9C+mK>vt{xjl*xw&d&0z`Aqb6cfWTK zvecy@ssE&)qH?8Y@*LmZd9DUa9h<;nv5}9`<^uj9iQ&)A$(gbdL|!95ETmVS@4bM3 z&d}+J{QLU;16r!TuWyH*Y(Dt+wY=f0#eWa^Zyk=zMsuxA_0ZoD_}K_0@=!F^(vm#? zAjN!Y?S5l+etuNr_(v{e#YsqF&M3phWKFdW?Y~$0=YM}p|HE7O|K)K0yhfKs?&j5h zC;NvX_rEJWI-0M{Zlo*ns%J)IUVh7^tgF>9m}n#?OifMA&czkY?C9*AlatdfW;i4` zSddm&s9;s5x#*(R(b2KiN6VVrl`%A=aVt@_lZ{22Czig)+0)Ungr3q5bz|>h^{Fvu zBNv-8t+<-SZt%UjbFm}#rsVQ;hmwp;5Q>i_)HE*chJo*NM|{R$v2iK@HebS zMfmvmvTAE}8lHZuor#!SCr&N87}EMC$QmnnFa4kAt>E4<^!v$5+_2p`eE4w0qqK-t z!!tn-2sv_OA?Osko6j=ezn4f$OS7vQ;i0&jrTl2oW!Nlb+(C%?=pkh_HDt6LXUGPf z`O@xPI@zRu!-$9O$|?U32@A+YxWmrZEx${0`RQMcmRn&XUf8>v=BJN*7M0izB|k!Y zFV5icJ)<@5CGP81C1qt;wPc(3@()*6SC@#}ifj53j~@p(EsW;XxUXkdR6HTB5qgqD z-Ft_JbLZ!+u7pcfXmP5jspX`nKS;lo=Ba#r#$m|qI;_b3V{LL@z=7@kH1S_yv0<

Tk78Z7j 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 uV|bf~Zy!Ii`tRIzyE0>}0fQm`XxY?v{Zaa0z literal 0 HcmV?d00001 diff --git a/tools/inference_builder/mcp/QUICK_NORMALIZATION_REFERENCE.md b/tools/inference_builder/mcp/QUICK_NORMALIZATION_REFERENCE.md new file mode 100644 index 00000000..7dd0504c --- /dev/null +++ b/tools/inference_builder/mcp/QUICK_NORMALIZATION_REFERENCE.md @@ -0,0 +1,211 @@ +# Quick Normalization Reference + +## The Two Critical Parameters + +When generating DeepStream nvinfer configs, **BOTH** of these parameters must exactly match your model's training preprocessing: + +### 1. `net-scale-factor` +**Purpose**: Scales pixel values (typically from [0-255] range) + +**Common values**: +- `0.00392156862745098` (1/255) - Most common, scales to [0,1] +- `0.5` - Scales by half +- `1.0` - No scaling + +### 2. `offsets` (per-channel mean subtraction) +**Purpose**: Subtracts mean values from each color channel after scaling + +**Format**: `R;G;B` (Red;Green;Blue) + +**Common values**: +- **Not specified** or `0;0;0` - No mean subtraction +- `127.5;127.5;127.5` - For [-1,1] normalization +- `123.675;116.28;103.53` - ImageNet mean values + +--- + +## Quick Decision Tree + +### Step 1: Check your training code + +```python +# Example 1: Simple [0,1] scaling +image = image / 255.0 +``` +**Config**: `net_scale_factor: 0.00392156862745098`, **no offsets** + +--- + +```python +# Example 2: [-1,1] normalization +image = (image / 255.0 - 0.5) * 2 +# or: image = (image - 127.5) / 127.5 +``` +**Config**: `net_scale_factor: 0.00392156862745098`, `offsets: "127.5;127.5;127.5"` + +--- + +```python +# Example 3: ImageNet normalization +transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) +``` +**Config**: `net_scale_factor: 0.00392156862745098`, `offsets: "123.675;116.28;103.53"` +*(mean values × 255)* + +--- + +```python +# Example 4: Custom scaling +image = image * 0.5 +``` +**Config**: `net_scale_factor: 0.5`, **no offsets** + +--- + +```python +# Example 5: Custom scaling with mean subtraction +image = (image * 0.01) - custom_mean +``` +**Config**: `net_scale_factor: 0.01`, `offsets: "{R};{G};{B}"` *(your custom mean values)* + +--- + +```python +# Example 6a: Division by std (uniform std across channels) +image = image / 255.0 +image = (image - mean) / std # If std=0.229 for all channels +``` +**Config**: `net_scale_factor: 0.0171302428` *(1/(255×0.229))*, `offsets: "2.118;1.991;1.773"` *(mean/std)* + +⚠️ **Note**: This only works if std is the same for all channels. For per-channel std (e.g., ImageNet `std=[0.229, 0.224, 0.225]`), you need to bake normalization into the ONNX model or use a custom preprocessing plugin, as DeepStream only supports a single scale factor. + +--- + +```python +# Example 6b: Multiplication by scale factor d +image = image * d / 255.0 # Where d might be 1/std or a custom constant +``` +**Config**: `net_scale_factor: d/255` *(if d=0.5, then 0.5/255 = 0.00196078)* + +**Note**: The scale factor becomes `d/255` instead of `1/255`. This pattern is used when training applies a custom scale factor `d`. + +--- + +## The Formula + +DeepStream applies: +``` +output_pixel = (input_pixel × net_scale_factor) - offset +``` + +### Examples: + +**[0,1] normalization** (no offsets): +``` +output = pixel × 0.00392156862745098 +output = pixel / 255 +Result: [0, 1] range +``` + +**[-1,1] normalization** (with offsets): +``` +output = (pixel × 0.00392156862745098) - 0.5 +output = (pixel / 255) - 0.5 +Result: [-0.5, 0.5] range → typically then multiplied by 2 in the model +``` + +**ImageNet normalization**: +``` +For red channel: +output = (pixel × 0.00392156862745098) - 0.485 +output = (pixel / 255) - 0.485 +``` + +--- + +## Common Mistakes + +### ❌ Mistake 1: Using default values without checking training +```yaml +# Default assumes [0,1] normalization +net-scale-factor: 0.00392156862745098 +# No offsets +``` +**Problem**: If your model was trained with ImageNet normalization or [-1,1] range, this will give wrong results! + +### ❌ Mistake 2: Forgetting per-channel offsets +```python +# Training code used: +image = (image / 255) - 0.5 # [-1,1] normalization +``` +```yaml +# But config only sets scale factor: +net-scale-factor: 0.00392156862745098 +# Missing: offsets: "127.5;127.5;127.5" +``` +**Problem**: Mean subtraction is missing, results will be incorrect! + +### ❌ Mistake 3: Wrong offset values +```yaml +# Model trained with ImageNet mean +net-scale-factor: 0.00392156862745098 +offsets: "127.5;127.5;127.5" # WRONG! Should be ImageNet means +``` +**Problem**: Using wrong per-channel values will shift colors incorrectly! + +--- + +## Verification Checklist + +Before deploying your config: + +- [ ] I checked my training code for the exact preprocessing steps +- [ ] I verified the `net-scale-factor` matches the scaling in training +- [ ] I verified the `offsets` match any mean subtraction in training +- [ ] If training had NO mean subtraction, I did NOT set offsets +- [ ] If training had per-channel means, I set the correct RGB values +- [ ] I tested with a known input and compared results + +--- + +## When in Doubt + +1. **Test with known inputs**: Use images with known pixel values +2. **Compare outputs**: Run the same image through training and inference +3. **Check model documentation**: Look for preprocessing specifications +4. **Ask the model creator**: They should know the exact normalization used + +--- + +## Real-World Examples + +### YOLOv5 +```yaml +net-scale-factor: 0.00392156862745098 # Scales to [0,1] +# No offsets - training used simple /255 normalization +``` + +### ResNet-50 (ImageNet pre-trained) +```yaml +net-scale-factor: 0.00392156862745098 # Scales to [0,1] +offsets: "123.675;116.28;103.53" # ImageNet per-channel means +``` + +### TAO ChangeNet ([-1,1] range) +```yaml +net-scale-factor: 0.00392156862745098 # Scales to [0,1] +offsets: "127.5;127.5;127.5" # Subtracts 0.5 per channel +``` + +--- + +## Remember + +> **Both `net-scale-factor` AND `offsets` are equally critical!** +> +> Using the wrong scale factor OR wrong per-channel offsets will result in poor inference accuracy, regardless of how good your model is. + +For detailed information, see: +- [NORMALIZATION_GUIDE.md](NORMALIZATION_GUIDE.md) - Comprehensive guide +- [EXAMPLE_DEEPSTREAM_CONFIG.md](EXAMPLE_DEEPSTREAM_CONFIG.md) - Usage examples + diff --git a/tools/inference_builder/mcp/README-MCP.md b/tools/inference_builder/mcp/README-MCP.md new file mode 100644 index 00000000..c4f16f15 --- /dev/null +++ b/tools/inference_builder/mcp/README-MCP.md @@ -0,0 +1,217 @@ +# MCP Server Internal Documentation + +This document provides detailed technical documentation for the Inference Builder MCP server. For getting started and basic usage, see the [main README](../README.md#mcp-integration). + +## Tool Reference + +### `generate_inference_pipeline` + +Generates an inference pipeline from a YAML configuration file. + +| Parameter | Required | Description | +|-----------|----------|-------------| +| `config_file` | Yes | Path to the YAML configuration file | +| `server_type` | No | Type of server to generate (`triton`, `fastapi`, `nim`, `serverless`) | +| `output_dir` | No | Output directory for generated code | +| `api_spec` | No | Path to OpenAPI specification file | +| `custom_modules` | No | List of custom Python module files | +| `exclude_lib` | No | Exclude common library from generated code | +| `tar_output` | No | Create a tar.gz archive of the output | +| `validation_dir` | No | Validation directory path to build validator | +| `no_docker` | No | Use local OpenAPI Generator instead of Docker | +| `test_cases_abs_path` | No | Use absolute paths in generated test_cases.yaml | + +### `build_docker_image` + +Builds a Docker image from a generated inference pipeline. + +| Parameter | Required | Description | +|-----------|----------|-------------| +| `image_name` | Yes | Name for the Docker image | +| `dockerfile` | Yes | Path to Dockerfile (must be placed in the output directory) | + +### `prepare_model_repository` + +Prepares a model repository by downloading models from NGC or Hugging Face and copying configuration files. + +| Parameter | Required | Description | +|-----------|----------|-------------| +| `model_configs` | Yes | List of model configurations to prepare | +| `config_dir` | No | Base directory for resolving relative config paths | + +### `docker_run_image` + +Runs a Docker image with optional model repository mounting and environment configuration. + +| Parameter | Required | Default | Description | +|-----------|----------|---------|-------------| +| `image_name` | Yes | - | Name of the Docker image to run | +| `model_repo_host` | No | - | Host path to model repository | +| `model_repo_container` | No | `/models` | Container path for model repository | +| `server_type` | No | `serverless` | Server type hint | +| `env` | No | - | Environment variables to set | +| `cmd` | No | - | Command-line arguments. For serverless flows, supply input values here using `-- ` flags. **Use hyphens, not underscores** in argument names (e.g., `media_url` → `--media-url`). Each flag and value is a separate list item: `["--media-url", "/path/to/video.mp4"]` | +| `gpus` | No | `all` | GPU devices to use | +| `timeout` | No | `300` | Timeout in seconds | + +### `generate_nvinfer_config` + +Generates a DeepStream nvinfer runtime configuration file (nvdsinfer_config.yaml). + +**IMPORTANT**: Before generating a new config file, first call `prepare_model_repository` to download the model and check for existing nvinfer configuration files. Models from NGC typically include a configuration file (YAML or TXT) with all required inference parameters - always prefer using this provided configuration when available. + +| Parameter | Required | Default | Description | +|-----------|----------|---------|-------------| +| `output_path` | Yes | - | Path where the generated config file should be saved | +| `onnx_file` | Yes | - | Name of the ONNX model file | +| `network_type` | Yes | - | Network type (0=detection, 1=classification, 2=segmentation, 3=instance_segmentation, 100=custom) | +| `input_dims` | Yes | - | Input dimensions in format `channel;height;width` (e.g., `3;224;224`) | +| `label_file` | Yes | - | Name of the label file | +| `precision_mode` | No | `2` | Precision mode (0=FP32, 1=INT8, 2=FP16) | +| `custom_lib_path` | No | - | Path to a C++ shared library (.so) for custom output parsing. Required for all models except classic ResNet when network_type is 0-3. For TAO models, build from https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps/tree/master/post_processor | +| `custom_parse_func` | No | - | Symbol name of the custom parsing function. (0) Detection: built-in assumes ResNet; (1) Classification: built-in treats as softmax; (2,3) Segmentation: required; (100) Custom: not required | +| `num_classes` | No | - | Number of detected classes | +| `gie_unique_id` | No | `1` | Unique ID for this GIE | +| `net_scale_factor` | No | `0.00392156862745098` | Scale factor for normalization | +| `offsets` | No | - | Mean subtraction values in format `R;G;B` | +| `classifier_threshold` | No | `0.0` | Confidence threshold for classification | +| `input_tensor_from_meta` | No | `0` | Whether to read input from metadata (0 or 1) | +| `output_tensor_meta` | No | `0` | Whether to output raw tensor format (0 or 1) | + +**Important**: The `net_scale_factor` and `offsets` parameters must match your model's training preprocessing. See: +- [QUICK_NORMALIZATION_REFERENCE.md](QUICK_NORMALIZATION_REFERENCE.md) - Quick reference guide +- [STD_NORMALIZATION_CALCULATOR.md](STD_NORMALIZATION_CALCULATOR.md) - For models with std normalization + +## Resource Navigation + +### Documentation Resources + +| URI | Description | +|-----|-------------| +| `docs://README.md` | Main project README with overview, getting started, and installation | +| `docs://mcp/README-MCP.md` | This document - MCP server internal documentation | + +### Schema Resources + +| URI | Description | +|-----|-------------| +| `schema://config.schema.json` | Main JSON Schema for configuration files | +| `schema://readme` | Comprehensive schema documentation | +| `schema://index.json` | Schema navigation index mapping backend types to parameter schemas | +| `schema://backends/{backend}.schema.json` | Backend-specific schemas (deepstream, triton, vllm, etc.) | +| `schema://backends/parameters/{backend}-parameters.schema.json` | Detailed parameter schemas | + +**Schema Navigation Flow:** +1. Read `schema://config.schema.json` for the main configuration structure +2. When a model specifies a `backend` type (e.g., `vllm`, `triton/python`), read `schema://index.json` to find the corresponding parameter schema path +3. Read the backend-specific parameter schema to get valid parameter options + +### Sample Resources + +Sample resources are dynamically discovered and categorized: + +| URI Pattern | Description | +|-------------|-------------| +| `samples://config/{path}` | Pipeline/application configuration YAML files | +| `samples://runtime_config/{path}` | DeepStream nvinfer runtime configuration files | +| `samples://runtime_preprocess/{path}` | DeepStream nvdspreprocess runtime configuration files | +| `samples://openapi/{path}` | OpenAPI server specification YAML files | +| `samples://dockerfile/{path}` | Sample Dockerfiles | +| `samples://processor/{path}` | Preprocessor/postprocessor Python modules | + +## Usage Examples + +### Generate a DeepStream Pipeline + +``` +Use the generate_inference_pipeline tool to create a DeepStream object detection pipeline using the ds_detect.yaml configuration with serverless output. +``` + +### Explore Available Samples + +``` +List the available MCP resources to see sample configurations, Dockerfiles, and processors. +``` + +### View Sample Configurations + +``` +Read the samples://config/ds_app/detection/ds_detect.yaml resource to see the DeepStream detection configuration. +``` + +### Build Docker Image + +``` +Build a Docker image from the generated deepstream-app pipeline with the name 'my-detector' using the build_docker_image tool. +``` + +## Workflow Integration + +### Typical Development Workflow + +1. **Explore Samples**: Browse `samples://config/*` resources to see available configurations +2. **Examine Configurations**: Read sample resources to understand configuration patterns +3. **Create Your Config**: Modify a sample configuration or create your own +4. **Generate Pipeline**: Use `generate_inference_pipeline` to create your code +5. **Build Container**: Use `build_docker_image` to create a deployable container + +### Integration with Version Control + +The generated code can be: +- Committed to version control +- Used as a starting point for custom modifications +- Shared with team members +- Deployed to production environments + +## Troubleshooting + +### Common Issues + +**MCP Server Not Found** +- Ensure the MCP server is running +- Check that the path in your MCP client configuration is correct +- Verify Python environment has required dependencies + +**Configuration Validation Errors** +- Check that required fields are present in your YAML +- Ensure model definitions are complete +- Verify backend specifications are correct + +**Pipeline Generation Failures** +- Check that the configuration file path is correct +- Ensure all required dependencies are installed +- Verify that the output directory is writable + +### Debug Mode + +To run the MCP server with debug output: + +```bash +python -u mcp_server.py +``` + +## Extending the MCP Server + +To add new tools or resources: + +1. **Add new tools** to the `InferenceBuilderMCPServer` class in `mcp_server.py` +2. **Update tool schemas** in the `list_tools` method +3. **Implement tool logic** in the `call_tool` method +4. **Add tests** for new functionality in `test_mcp_server.py` + +### Server Types + +The `server_type` parameter supports: + +| Type | Description | +|------|-------------| +| `fastapi` | RESTful API server with automatic OpenAPI generation | +| `serverless` | Standalone command-line application | + +### Custom Processors + +Custom preprocessors and postprocessors can be integrated: + +1. Create custom processor classes following the base interface +2. Reference them in your configuration file +3. Use the `custom_modules` parameter when generating pipelines diff --git a/tools/inference_builder/mcp/STD_NORMALIZATION_CALCULATOR.md b/tools/inference_builder/mcp/STD_NORMALIZATION_CALCULATOR.md new file mode 100644 index 00000000..c20130b1 --- /dev/null +++ b/tools/inference_builder/mcp/STD_NORMALIZATION_CALCULATOR.md @@ -0,0 +1,395 @@ +# Standard Deviation Normalization Calculator + +## Understanding Std Normalization + +### Case 1: Division by Std (Most Common) + +When training uses standard deviation normalization by **dividing** by std: +```python +normalized = (pixel/255 - mean) / std +``` + +This can be rewritten as: +```python +normalized = pixel * (1/(255*std)) - (mean/std) +``` + +Which maps to DeepStream parameters: +- `net_scale_factor = 1/(255 * std)` +- `offsets = mean/std` + +**Example**: If `std = 0.229`, then `net_scale_factor = 1/(255 × 0.229) = 0.0171302428` + +--- + +### Case 2: Multiplication by Scale Factor (Alternative) + +If training uses a scaling factor `d` (where `d` might be related to std): +```python +normalized = pixel * d / 255 +``` + +This maps to DeepStream parameters: +- `net_scale_factor = d/255` +- `offsets` depend on any mean subtraction + +**Example**: If `d = 0.5`, then `net_scale_factor = 0.5/255 = 0.00196078431` + +**Note**: This is less common but may be used in custom preprocessing schemes where `d` could be `1/std` or another scaling factor. + +## The Challenge + +**DeepStream limitation**: Only supports a **single** `net_scale_factor` value, but many models use **per-channel** std values. + +**Example**: ImageNet uses `std=[0.229, 0.224, 0.225]` - different for each channel! + +## Solutions + +### Solution 1: Uniform Std (Best for DeepStream) + +If your model uses the **same std for all channels**, you can directly convert: + +#### Example: Uniform std = 0.229 +```python +# Training normalization +mean = [0.485, 0.456, 0.406] +std = [0.229, 0.229, 0.229] # Same for R, G, B +``` + +#### Calculation: +```python +net_scale_factor = 1 / (255 * 0.229) = 0.0171302428 + +offsets_R = 0.485 / 0.229 = 2.118122 +offsets_G = 0.456 / 0.229 = 1.991266 +offsets_B = 0.406 / 0.229 = 1.772926 +``` + +#### DeepStream Config: +```yaml +net-scale-factor: 0.0171302428 +offsets: 2.118122;1.991266;1.772926 +``` + +--- + +### Solution 2: Average Std (Approximation) + +If std values are close but not identical, use the average: + +#### Example: ImageNet std = [0.229, 0.224, 0.225] +```python +# Training normalization +mean = [0.485, 0.456, 0.406] +std = [0.229, 0.224, 0.225] # Different per channel +``` + +#### Calculation: +```python +avg_std = (0.229 + 0.224 + 0.225) / 3 = 0.226 + +net_scale_factor = 1 / (255 * 0.226) = 0.0173510648 + +offsets_R = 0.485 / 0.226 = 2.146018 +offsets_G = 0.456 / 0.226 = 2.017699 +offsets_B = 0.406 / 0.226 = 1.796460 +``` + +#### DeepStream Config: +```yaml +net-scale-factor: 0.0173510648 +offsets: 2.146018;2.017699;1.796460 +``` + +⚠️ **Trade-off**: This is an approximation. Accuracy may be slightly reduced because we're not using the exact per-channel std values. + +--- + +### Solution 3: Ignore Std (Mean-only, Less Accurate) + +Use only mean subtraction, ignore std division: + +#### Calculation: +```python +net_scale_factor = 1 / 255 = 0.00392156862745098 + +offsets_R = 0.485 * 255 = 123.675 +offsets_G = 0.456 * 255 = 116.28 +offsets_B = 0.406 * 255 = 103.53 +``` + +#### DeepStream Config: +```yaml +net-scale-factor: 0.00392156862745098 +offsets: 123.675;116.28;103.53 +``` + +⚠️ **Limitation**: This does NOT include std normalization, only mean subtraction. Results will be less accurate. + +--- + +### Solution 4: Bake into ONNX (Recommended for Per-Channel Std) + +The most accurate solution: Include preprocessing in the ONNX model itself. + +#### PyTorch Example: +```python +import torch +import torch.nn as nn + +class ModelWithPreprocessing(nn.Module): + def __init__(self, base_model, mean, std): + super().__init__() + self.base_model = base_model + # Register mean and std as buffers + self.register_buffer('mean', torch.tensor(mean).view(1, 3, 1, 1)) + self.register_buffer('std', torch.tensor(std).view(1, 3, 1, 1)) + + def forward(self, x): + # x is in [0, 255] range + x = x / 255.0 # Scale to [0, 1] + x = (x - self.mean) / self.std # Per-channel normalization + return self.base_model(x) + +# Wrap your model +mean = [0.485, 0.456, 0.406] +std = [0.229, 0.224, 0.225] +wrapped_model = ModelWithPreprocessing(original_model, mean, std) + +# Export to ONNX +torch.onnx.export(wrapped_model, dummy_input, "model_with_preprocessing.onnx") +``` + +#### DeepStream Config: +```yaml +# No normalization needed - it's in the model! +net-scale-factor: 1.0 +# No offsets +``` + +**Benefits**: +- ✅ Exact per-channel std normalization +- ✅ No accuracy loss +- ✅ Simpler DeepStream config + +--- + +## Quick Calculator + +### Method 1: Division by Std (Standard Approach) + +**Given Training Parameters**: +- **mean**: [mean_r, mean_g, mean_b] +- **std**: [std_r, std_g, std_b] + +**Training formula**: `(pixel/255 - mean) / std` + +#### If std is uniform (std_r = std_g = std_b = d): + +``` +net_scale_factor = 1 / (255 × d) +offset_r = mean_r / d +offset_g = mean_g / d +offset_b = mean_b / d +``` + +**Example**: If `d = 0.229`, `mean = [0.485, 0.456, 0.406]` +``` +net_scale_factor = 1 / (255 × 0.229) = 0.0171302428 +offsets = 2.118;1.991;1.773 +``` + +#### If std varies per channel (approximation): + +``` +avg_std = (std_r + std_g + std_b) / 3 +net_scale_factor = 1 / (255 × avg_std) +offset_r = mean_r / avg_std +offset_g = mean_g / avg_std +offset_b = mean_b / avg_std +``` + +--- + +### Method 2: Multiplication by Scale Factor + +**Given Training Parameters**: +- **scale_factor**: d (a custom scaling constant) + +**Training formula**: `pixel × d / 255` + +#### Calculation: + +``` +net_scale_factor = d / 255 +``` + +**Example**: If `d = 0.5` +``` +net_scale_factor = 0.5 / 255 = 0.00196078431 +``` + +**Example**: If `d = 1/0.229` (inverse of std) +``` +net_scale_factor = (1/0.229) / 255 = 4.366812 / 255 = 0.0171302428 +``` + +**Note**: The scale factor becomes `d/255` instead of `1/255`. + +--- + +## Common Datasets + +### ImageNet +``` +mean = [0.485, 0.456, 0.406] +std = [0.229, 0.224, 0.225] +``` + +**Recommended**: Bake into ONNX or use average std approximation + +### COCO (if normalized) +``` +mean = [0.485, 0.456, 0.406] +std = [0.229, 0.224, 0.225] +``` +Same as ImageNet + +### CIFAR-10 +``` +mean = [0.4914, 0.4822, 0.4465] +std = [0.2023, 0.1994, 0.2010] +``` + +**Average std**: 0.2009 + +--- + +## Decision Tree + +``` +Do you use std normalization in training? +│ +├─ No → Use simple config: +│ net_scale_factor: 1/255 +│ offsets: mean × 255 (if mean subtraction used) +│ +└─ Yes → Is std the same for all channels? + │ + ├─ Yes → Use combined config: + │ net_scale_factor: 1/(255×std) + │ offsets: mean/std + │ + └─ No → Choose approach: + │ + ├─ Approximation (easier): + │ net_scale_factor: 1/(255×avg_std) + │ offsets: mean/avg_std + │ ⚠️ Slight accuracy loss + │ + ├─ Mean-only (less accurate): + │ net_scale_factor: 1/255 + │ offsets: mean × 255 + │ ⚠️ Missing std normalization + │ + └─ Bake into ONNX (best): + Include preprocessing in model + ✅ Full accuracy, per-channel std +``` + +--- + +## Verification + +To verify your config is correct: + +1. **Test with known input**: + ```python + test_pixel = 128 # Middle gray + + # Training preprocessing: + train_value = (test_pixel/255 - mean) / std + + # DeepStream preprocessing: + ds_value = (test_pixel * net_scale_factor) - offset + + # These should match! + ``` + +2. **Compare outputs**: Run inference on the same image in training and DeepStream, compare results + +3. **Check accuracy**: Use validation dataset to measure accuracy drop + +--- + +## Python Helper Script + +```python +def calculate_deepstream_params(mean, std, use_average=False): + """ + Calculate DeepStream normalization parameters. + + Args: + mean: List of per-channel means [R, G, B] (in [0,1] range) + std: List of per-channel stds [R, G, B] + use_average: If True, use average std (approximation) + + Returns: + tuple: (net_scale_factor, offsets_string) + """ + mean_r, mean_g, mean_b = mean + std_r, std_g, std_b = std + + # Check if std is uniform + is_uniform = (std_r == std_g == std_b) + + if is_uniform: + # Exact calculation for uniform std + net_scale_factor = 1.0 / (255 * std_r) + offset_r = mean_r / std_r + offset_g = mean_g / std_g + offset_b = mean_b / std_b + print("✅ Uniform std detected - using exact calculation") + elif use_average: + # Approximation using average std + avg_std = (std_r + std_g + std_b) / 3 + net_scale_factor = 1.0 / (255 * avg_std) + offset_r = mean_r / avg_std + offset_g = mean_g / avg_std + offset_b = mean_b / avg_std + print(f"⚠️ Using average std approximation: {avg_std:.6f}") + else: + print("❌ Per-channel std detected. Consider baking into ONNX!") + print(" Using average std approximation...") + avg_std = (std_r + std_g + std_b) / 3 + net_scale_factor = 1.0 / (255 * avg_std) + offset_r = mean_r / avg_std + offset_g = mean_g / avg_std + offset_b = mean_b / avg_std + + offsets = f"{offset_r:.6f};{offset_g:.6f};{offset_b:.6f}" + + print(f"\nDeepStream Config:") + print(f" net-scale-factor: {net_scale_factor}") + print(f" offsets: {offsets}") + + return net_scale_factor, offsets + +# Example usage: +# ImageNet normalization +mean = [0.485, 0.456, 0.406] +std = [0.229, 0.224, 0.225] +calculate_deepstream_params(mean, std, use_average=True) +``` + +--- + +## Summary + +- **Best accuracy**: Bake std normalization into ONNX model +- **Good approximation**: Use average std (if stds are similar) +- **Uniform std**: Direct conversion works perfectly +- **Mean-only**: Simplest but least accurate (ignores std) + +Always verify your configuration with test data before deploying! + diff --git a/tools/inference_builder/mcp/examples.md b/tools/inference_builder/mcp/examples.md new file mode 100644 index 00000000..8406782a --- /dev/null +++ b/tools/inference_builder/mcp/examples.md @@ -0,0 +1,113 @@ +# Using Inference Builder with AI Agents — Examples and Guidelines + +## General Guidelines + +1. **Start simple, then refine.** Begin with a short, clear prompt that states the core requirements. Use follow-up messages to add details or adjust behavior. + +2. **Ask for self-check and verification.** Tell the agent to validate its work (e.g., run a smoke test or sanity check) so the result is correct before you rely on it. + +3. **Request documentation and diagrams.** Ask the agent to produce a README and architecture diagrams. These make the solution easier to understand and easier to extend later. + +4. **Use helper scripts for operations.** Request small scripts for common tasks (e.g., “create a script to start, stop, rebuild, get status, and fetch logs for the microservice”). These simplify testing and debugging. + +5. **Correct course early.** If the agent goes off track, give a direct hint right away. For example: + - If no free GPU is available, tell it to stop and retry later. + - If it picks the wrong model, ask it to double-check the choice. + +## Sample Prompts + +### 1. Create a very basic Deepstream Application + +***Use deepstream inference builder tool to create an object detection pipeline with PeopleNet Transformer model from NGC and verify it with a smoke test.*** + +The Agent is expected to draft a plan based on the prompt and generates required files accordingly (file names may differ in each run unless explicitly specified): + +- peoplenet_transformer_pipeline.yaml (pipeline configuration yaml) +- Dockerfile +- nvdsinfer_config.yaml (nvinfer configuration yaml) +- peoplenet.tgz (python code for inference) +- models/peoplenet (folder for required model files) + +The Agent is expected to fix all the build and runtime errors while doing the smoke test. + +### 2. Create an advanced Deepstream Application Supporting Tracker and Multi-stream Inputs + +***Use deepstream inference builder tool to create an object detection pipeline with the PeopleNet transformer model from NGC; the pipeline should support 4 video inputs in parallel and track all the objects in the inputs using NVDCF tracker. Do a smoke test once done.*** + +The Agent is expected to draft a plan based on the prompt and generates required files accordingly (file names may differ in each run unless explicitly specified): + +- peoplenet_transformer_pipeline.yaml (pipeline configuration yaml) +- Dockerfile +- nvdsinfer_config.yaml (nvinfer configuration yaml) +- peoplenet.tgz (python code for inference) +- models/peoplenet (folder for required model files) + +The Agent is expected to fix all the build and runtime errors while doing the smoke test. + +### 3. Create a Deepstream Inference Application with Customized Logic + +***Use deepstream inferenc builder tool to create an object detection pipeline with PeopleNet transformer model from NGC; the pipeline accepts video url as input and output detected bounding boxes. Count the number of people in each frame and raise an alarm whenever the number exceeds 10 by writing it down to a file. Do a smoke test once done.*** + +The Agent is expected to draft a plan based on the prompt and generates required files accordingly (file names may differ in each run unless explicitly specified): + +- peoplenet_transformer_pipeline.yaml (pipeline configuration yaml) +- Dockerfile +- nvdsinfer_config.yaml (nvinfer configuration yaml) +- processor.py (Customized processor for counting and raising alarm) +- peoplenet.tgz (python code for inference) +- models/peoplenet (folder for required model files) + +The Agent is expected to fix all the build and runtime errors while doing the smoke test. + + +### 4. Create a Realtime Video Intelligence Microservice (rtvi) with vllm Backend and Deepstream Accelerated Decoder + +#### 4.1. Start with the Master Prompt as below + +***Locate the MCP tool deepstream-inference-builder and complete the task: Start a new project under name rtvi_vlm and create a video summarization/caption microservice there using Qwen3-VL-2B-Instruct model driven by vllm backend and Deepstream accelerated decoder. The microservice supports adding/deleting RTSP streams as assets and generating video caption for added streams. The given RTSP stream will be chunked to a batch of frames with a given interval for summarization. I also want to build a container image for the microservice to run on B200. Do a smoke test on the image once done.*** + +The Agent is expected to understand the prompt and creates a folder named “rtvi_vlm” and generates all the files there: +- config.yaml (pipeline configuration yaml) +- Dockerfile +- openapi.yaml (server specification) +- processors.py (customized code) +- rtvi_vlm.tgz (backbone python code) +- model-repo (folder for required model files) + +The Agent is responsible for the smoke testing and troubleshooting of any issues encountered with the generated container image. + +#### 4.2. Add Helper Scripts for Manual Testing with Follow-up Prompts + +***Generate a service management script to start, restart, stop, rebuild the service and check the service status, also fetch the service logs. Generate a client script to add/delete streams and trigger a summarization request on streams.*** + +With the generated server and client script, we can ask Cursor to intensively test stream summarization, and during this process Cursor will fix the generated processor code based on the container log. +We'll need to go through this a few times because Cursor has to figure out the best model setup by running it. + +You can ask Cursor to use your live stream: `rtsp://:/`. + +#### 4.3. New feature request + +New features can always be added through follow-up prompts: + +***Now let's add a new feature to the project. After the model generates summarizations, let's postprocess it for each chunk and send them to a Kafka server. Create an environment variable to toggle the feature.*** + +#### 4.4. Document the project for future development + +***Write a detailed documentation for the project to ensure seamless and consistent future work.*** + +Subsequently, the project remains open, allowing for continued adjustment, addition, or removal of features using the same methods. + +#### 4.5. YOLO26s Detection Deepstream Application + +***Download the YOLO26s detection model using the ultralytics library, then convert the model to ONNX model that supports dynamic batch, in Python virtual environment. Write a DeepStream custom parser for the model. Use deepstream inference builder tool to create an object detection pipeline with the model and custom parser. Do a smoke test once done.*** + +The Agent is expected to draft a plan based on the prompt and generates required files accordingly (file names may differ in each run unless explicitly specified): + +- yolo26s_pipeline.yaml (pipeline configuration yaml) +- Dockerfile +- nvdsinfer_config.yaml (nvinfer configuration yaml) +- yolo26s-detection.tgz (python code for inference) +- models/yolo26s (folder for required model files) +- custom_parser (DeepStream custom parser for the model) + +The Agent is expected to fix all the build and runtime errors while doing the smoke test. diff --git a/tools/inference_builder/mcp/mcp_server.py b/tools/inference_builder/mcp/mcp_server.py new file mode 100644 index 00000000..21a219ff --- /dev/null +++ b/tools/inference_builder/mcp/mcp_server.py @@ -0,0 +1,1994 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. +# All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +MCP (Model Context Protocol) Server for Inference Builder + +This module provides an MCP server that exposes Inference Builder functionality +to MCP-compatible clients like Cursor. +""" + +import asyncio +import os +import sys +from pathlib import Path +from typing import Any, Dict +from mcp.server import Server +from mcp.server.stdio import stdio_server +from mcp.types import ( + CallToolRequest, + CallToolResult, + ListToolsRequest, + ListToolsResult, + Tool, + TextContent, + Resource, +) +import subprocess +import logging +import time +import shutil +import uuid + +# Add the builder directory to Python path +sys.path.append(str(Path(__file__).parent.parent / "builder")) + + +def load_allowed_servers() -> list: + """Load allowed server types from the builder's allowed_servers.txt file. + + Returns: + List of allowed server type strings. + + Raises: + FileNotFoundError: If the configuration file is not found. + ValueError: If the file is empty or contains invalid entries. + """ + file_path = Path(__file__).parent.parent / "builder" / "allowed_servers.txt" + + if not file_path.exists(): + raise FileNotFoundError( + f"Allowed servers configuration file not found: {file_path}" + ) + + allowed_servers = [] + with open(file_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line and not line.startswith('#'): + allowed_servers.append(line) + + if not allowed_servers: + raise ValueError(f"No valid server types found in {file_path}") + + return allowed_servers + + +# Load allowed server types from configuration file +ALLOWED_SERVERS = load_allowed_servers() + + +class InferenceBuilderMCPServer: + """MCP Server that exposes Inference Builder functionality""" + + def __init__(self): + self.server = Server("deepstream-inference-builder") + self.logger = logging.getLogger("deepstream-inference-builder") + + # Register handlers using decorators + self._setup_handlers() + + def _setup_handlers(self): + """Setup MCP server handlers using decorators""" + + @self.server.list_tools() + async def handle_list_tools(): + # The low-level server expects a list[Tool], not ListToolsResult + result = await self.list_tools(None) + return result.tools + + @self.server.call_tool() + async def handle_call_tool(name: str, arguments: Dict[str, Any]): + # Bridge to existing implementation which returns CallToolResult + from mcp.types import CallToolRequestParams + params = CallToolRequestParams(name=name, arguments=arguments) + request = CallToolRequest(params=params) + result = await self.call_tool(request) + if getattr(result, "isError", False): + # Let the low-level server wrap this as an error result + message = "" + for block in getattr(result, "content", []) or []: + if getattr(block, "type", "") == "text": + message = getattr(block, "text", "") + break + raise RuntimeError(message or "Tool execution error") + # Return unstructured content so low-level server wraps it properly + return getattr(result, "content", []) + + @self.server.list_resources() + async def handle_list_resources(): + """List available schema and sample resources""" + self.logger.info("list_resources handler called") + resources = [] + + # Add base schema resources + try: + self.logger.info("Creating base schema resources...") + base_resources = [ + # Schema resources + Resource( + uri="schema://config.schema.json", + name="Configuration Schema", + description=( + "JSON Schema for inference builder configuration files. " + "Defines required fields (name, model_repo, models), " + "tensor specifications, backend types, and server configuration." + ), + mimeType="application/json" + ), + Resource( + uri="schema://readme", + name="Schema Documentation", + description=( + "Comprehensive documentation for configuration schemas including " + "examples, backend-specific parameters, data types, " + "preprocessors/postprocessors, and server responder configuration." + ), + mimeType="text/markdown" + ), + Resource( + uri="schema://index.json", + name="Schema Index", + description=( + "Index mapping backend types to their parameter schemas. " + "Use this to find the correct parameter schema for a given backend " + "(e.g., 'vllm' -> 'backends/parameters/vllm-parameters.schema.json'). " + "Read this first to understand schema navigation." + ), + mimeType="application/json" + ), + # Documentation resources + Resource( + uri="docs://README.md", + name="Project README", + description=( + "Main project documentation for Inference Builder. " + "Includes overview, getting started guide, installation instructions, " + "and links to examples and detailed documentation." + ), + mimeType="text/markdown" + ), + Resource( + uri="docs://mcp/README-MCP.md", + name="MCP Integration Documentation", + description=( + "Detailed documentation for MCP server integration. " + "Includes tool reference with parameters, resource navigation guide, " + "usage examples, workflow integration, and troubleshooting." + ), + mimeType="text/markdown" + ), + Resource( + uri="docs://usage.md", + name="Usage Documentation", + description=( + "Comprehensive usage guide for Inference Builder. " + "Covers command line arguments, configuration file format, " + "model definitions, preprocessors/postprocessors, server configuration, " + "routing, and runtime environment variables." + ), + mimeType="text/markdown" + ), + Resource( + uri="docs://platform-guide.md", + name="Platform Guide", + description=( + "Hardware platform selection guide. " + "Maps target hardware (x86_64 datacenter, Jetson/Tegra, arm-sbsa servers " + "such as GB10/GB300/DGX Spark) to the correct Dockerfile template, " + "DeepStream base image, GPU architecture flags, PyTorch install method, " + "and CUDA version. **Read this first** when building a Docker image to " + "avoid runtime failures caused by mismatched base images or missing " + "platform libraries (e.g. libnvbufsurface on Tegra)." + ), + mimeType="text/markdown" + ), + ] + self.logger.info("Created %d base_resources objects", len(base_resources)) + for i, res in enumerate(base_resources): + self.logger.debug(" base_resource[%d]: uri=%s, name=%s", i, res.uri, res.name) + resources.extend(base_resources) + self.logger.info("After extend, resources has %d items", len(resources)) + except Exception as exc: + self.logger.exception("Error creating base resources: %s", exc) + + # Dynamically discover backend schema resources + try: + schema_dir = Path(__file__).parent.parent / "schemas" + backends_dir = schema_dir / "backends" + self.logger.debug("Schema dir: %s (exists: %s)", schema_dir, schema_dir.exists()) + self.logger.debug("Backends dir: %s (exists: %s)", backends_dir, backends_dir.exists()) + if backends_dir.exists(): + # Backend schemas (e.g., deepstream.schema.json, triton.schema.json) + for schema_file in sorted(backends_dir.glob("*.schema.json")): + backend_name = schema_file.stem.replace(".schema", "") + resources.append(Resource( + uri=f"schema://backends/{schema_file.name}", + name=f"Backend Schema: {backend_name}", + description=( + f"JSON Schema for {backend_name} backend configuration. " + f"Defines backend-specific parameters and settings." + ), + mimeType="application/json" + )) + + # Backend parameter schemas (e.g., deepstream-parameters.schema.json) + params_dir = backends_dir / "parameters" + if params_dir.exists(): + for param_file in sorted(params_dir.glob("*-parameters.schema.json")): + backend_name = param_file.stem.replace("-parameters.schema", "") + resources.append(Resource( + uri=f"schema://backends/parameters/{param_file.name}", + name=f"Backend Parameters: {backend_name}", + description=( + f"JSON Schema for {backend_name} backend parameters. " + f"Defines detailed parameter options for model configuration." + ), + mimeType="application/json" + )) + self.logger.info("After backend discovery, resources has %d items", len(resources)) + except Exception as exc: + self.logger.exception("Error discovering backend schemas: %s", exc) + + # Dynamically discover sample resources categorized by type + try: + samples_dir = Path(__file__).parent.parent / "builder" / "samples" + self.logger.debug("Samples dir: %s (exists: %s)", samples_dir, samples_dir.exists()) + if not samples_dir.exists(): + self.logger.warning("Samples directory not found: %s", samples_dir) + else: + for sample_dir in sorted(samples_dir.iterdir()): + if sample_dir.is_dir(): + sample_name = sample_dir.name + description = self._get_sample_description(sample_name) + + # Collect all files recursively from the sample directory + # This ensures deeply nested configs like nvdsinfer_config.yaml + # under ds_app/*/* are exposed as resources. + all_files = [ + f for f in sample_dir.rglob("*") if f.is_file() + ] + + # Category 1a: DeepStream nvinfer runtime configs (e.g., nvdsinfer_config.yaml) + # These are NOT pipeline definitions; they are runtime nvinfer config + # files that belong in the model repository when DeepStream backend is used. + runtime_yaml_files = [ + f + for f in all_files + if f.is_file() + and f.suffix == ".yaml" + and f.name == "nvdsinfer_config.yaml" + ] + for runtime_yaml in sorted(runtime_yaml_files): + rel_path = runtime_yaml.relative_to(samples_dir) + resources.append(Resource( + uri=f"samples://runtime_config/{rel_path}", + name=f"DeepStream Runtime Config for Inference: {rel_path}", + description=( + "DeepStream nvinfer runtime configuration file " + "(nvdsinfer_config.yaml). " + "This file should live in the model repository when Deepstream backend is used " + "and be referenced via 'infer_config_path' in the " + "DeepStream backend parameters, not used as a pipeline " + "configuration YAML." + ), + mimeType="application/x-yaml" + )) + + # Category 1b: DeepStream preprocess runtime configs (e.g., nvdspreprocess_config*.yaml) + # These are runtime configuration files for the nvdspreprocess plugin and + # should also live in the model repository when DeepStream backend is used. + preprocess_runtime_yaml_files = [ + f + for f in all_files + if f.is_file() + and f.suffix == ".yaml" + and f.name.startswith("nvdspreprocess_config") + ] + for preprocess_yaml in sorted(preprocess_runtime_yaml_files): + rel_path = preprocess_yaml.relative_to(samples_dir) + resources.append(Resource( + uri=f"samples://runtime_preprocess/{rel_path}", + name=f"DeepStream Runtime Config for Preprocessing: {rel_path}", + description=( + "DeepStream nvdspreprocess runtime configuration file " + "(nvdspreprocess_config*.yaml). " + "This file should live in the model repository when DeepStream " + "backend is used and be referenced via 'preprocess_config_path' " + "in the DeepStream backend parameters, not used as a pipeline " + "configuration YAML." + ), + mimeType="application/x-yaml" + )) + + # Category 1c: OpenAPI / server specification YAML files + # These define the HTTP API contract (e.g., for FastAPI, Triton, NIM) + # and should be treated as server configuration, not pipeline configs. + openapi_yaml_files = [ + f + for f in all_files + if f.is_file() + and f.suffix == ".yaml" + and ( + f.name in ("openapi.yaml", "openapi.yml") + or f.name.endswith("_openapi.yaml") + or f.name.endswith("_openapi.yml") + ) + ] + for openapi_yaml in sorted(openapi_yaml_files): + rel_path = openapi_yaml.relative_to(samples_dir) + resources.append(Resource( + uri=f"samples://openapi/{rel_path}", + name=f"OpenAPI Server Spec: {rel_path}", + description=( + "OpenAPI specification YAML describing the HTTP API for an " + "inference server (e.g., FastAPI, Triton, NIM). " + "Treat this as server configuration: it defines request/response " + "schemas and endpoints and is referenced via 'api_spec' when " + "generating a FastAPI/NIM/TRITON server, not as a model or " + "pipeline configuration." + ), + mimeType="application/x-yaml" + )) + + # Category 1d: Pipeline / application configuration YAML files + yaml_files = [ + f + for f in all_files + if f.is_file() + and f.suffix == ".yaml" + and f.name != "nvdsinfer_config.yaml" + and not f.name.startswith("nvdspreprocess_config") + and not ( + f.name in ("openapi.yaml", "openapi.yml") + or f.name.endswith("_openapi.yaml") + or f.name.endswith("_openapi.yml") + ) + ] + for yaml_file in sorted(yaml_files): + rel_path = yaml_file.relative_to(samples_dir) + resources.append(Resource( + uri=f"samples://config/{rel_path}", + name=f"Sample Config: {rel_path}", + description=( + f"Sample pipeline/application configuration YAML for " + f"{sample_name}. {description}" + ) if description else f"Sample configuration: {rel_path}", + mimeType="application/x-yaml" + )) + + # Category 2: Dockerfiles + dockerfiles = [f for f in all_files if f.is_file() and f.name.startswith("Dockerfile")] + for dockerfile in sorted(dockerfiles): + rel_path = dockerfile.relative_to(samples_dir) + resources.append(Resource( + uri=f"samples://dockerfile/{rel_path}", + name=f"Sample Dockerfile: {rel_path}", + description=( + f"Dockerfile for {sample_name}. " + f"Use as reference for container image builds." + ), + mimeType="text/plain" + )) + + # Category 3: Processor Python files (files with "processor" in name) + processor_files = [ + f for f in all_files + if f.is_file() and f.suffix == ".py" and "processor" in f.stem.lower() + ] + for processor in sorted(processor_files): + rel_path = processor.relative_to(samples_dir) + resources.append(Resource( + uri=f"samples://processor/{rel_path}", + name=f"Sample Processor: {rel_path}", + description=( + f"Sample preprocessor/postprocessor for {sample_name}. " + f"Python module with callable classes for pipeline processing." + ), + mimeType="text/x-python" + )) + + self.logger.info("After sample discovery, resources has %d items", len(resources)) + except Exception as exc: + self.logger.exception("Error discovering sample resources: %s", exc) + + self.logger.info("Listed %d MCP resources", len(resources)) + if len(resources) > 0: + self.logger.info("First resource URI: %s", resources[0].uri) + self.logger.info("Last resource URI: %s", resources[-1].uri) + else: + self.logger.warning("Resources list is EMPTY - this is the problem!") + + return resources + + @self.server.read_resource() + async def handle_read_resource(uri): + """Read a schema or sample resource by URI""" + # Convert AnyUrl to string for string operations + uri = str(uri) + schema_dir = Path(__file__).parent.parent / "schemas" + samples_dir = Path(__file__).parent.parent / "builder" / "samples" + + # Handle docs:// URIs for documentation files + if uri.startswith("docs://"): + project_root = Path(__file__).parent.parent + docs_mappings = { + "docs://README.md": project_root / "README.md", + "docs://mcp/README-MCP.md": project_root / "mcp" / "README-MCP.md", + "docs://usage.md": project_root / "doc" / "usage.md", + "docs://platform-guide.md": project_root / "doc" / "platform-guide.md", + } + if uri in docs_mappings: + file_path = docs_mappings[uri] + else: + raise ValueError( + f"Unknown docs resource URI: {uri}. " + f"Available: docs://README.md, docs://mcp/README-MCP.md, docs://usage.md" + ) + + # Handle schema:// URIs + elif uri.startswith("schema://"): + # Static schema mappings + uri_to_file = { + "schema://config.schema.json": schema_dir / "config.schema.json", + "schema://readme": schema_dir / "README.md", + "schema://index.json": schema_dir / "index.json", + } + + if uri in uri_to_file: + file_path = uri_to_file[uri] + elif uri.startswith("schema://backends/"): + # Handle dynamic backend schema URIs + rel_path = uri.replace("schema://backends/", "") + file_path = schema_dir / "backends" / rel_path + + # Security check: ensure path doesn't escape backends directory + backends_dir = schema_dir / "backends" + try: + file_path.resolve().relative_to(backends_dir.resolve()) + except ValueError as exc: + raise ValueError(f"Invalid backend schema path: {rel_path}") from exc + else: + raise ValueError( + f"Unknown schema resource URI: {uri}. " + f"Use schema://config.schema.json, schema://readme, " + f"schema://index.json, or schema://backends/*" + ) + + # Handle samples:// URIs (with category prefix: config/, dockerfile/, processor/, " + # runtime_config/, runtime_preprocess/, openapi/) + elif uri.startswith("samples://"): + rel_path = uri.replace("samples://", "") + + # If the URI is only a category prefix (e.g., samples://runtime_config), + # return a helpful error instead of trying to map it to a file. + category_labels = { + "config": "pipeline/application configuration YAML files", + "dockerfile": "sample Dockerfiles", + "processor": "sample pre/postprocessor Python modules", + "runtime_config": "DeepStream nvinfer runtime configuration files (nvdsinfer_config.yaml)", + "runtime_preprocess": "DeepStream nvdspreprocess runtime configuration files (nvdspreprocess_config*.yaml)", + "openapi": "OpenAPI server specification YAML files", + } + rel_path_stripped = rel_path.rstrip("/") + if rel_path_stripped in category_labels: + label = category_labels[rel_path_stripped] + raise ValueError( + f"'{uri}' is a category prefix for {label}, not a specific resource. " + f"Call list_resources to see the available 'samples://{rel_path_stripped}/...'" + " URIs, then use read_resource on one of those full URIs." + ) + + # Strip category prefix if present + for category in ( + "config/", + "dockerfile/", + "processor/", + "runtime_config/", + "runtime_preprocess/", + "openapi/", + ): + if rel_path.startswith(category): + rel_path = rel_path[len(category):] + break + file_path = samples_dir / rel_path + + # Security check: ensure path doesn't escape samples directory + try: + file_path.resolve().relative_to(samples_dir.resolve()) + except ValueError as exc: + raise ValueError(f"Invalid sample path: {rel_path}") from exc + + else: + raise ValueError( + f"Unknown resource URI scheme: {uri}. " + f"Supported schemes: docs://, schema://, samples://" + ) + + if not file_path.exists(): + raise FileNotFoundError(f"Resource file not found: {file_path}") + + # Check if the path is a directory + if file_path.is_dir(): + # List files in the directory to help the user + try: + files = [f.name for f in file_path.iterdir() if f.is_file()] + files_list = "\n - ".join(sorted(files)) if files else "(no files found)" + raise ValueError( + f"'{uri}' points to a directory, not a file. " + f"The MCP resource reader can only read individual files. " + f"Files in this directory:\n - {files_list}\n\n" + f"To read a specific file, use a URI like:\n" + f" {uri}/{{filename}}" + ) + except Exception as exc: + raise ValueError( + f"'{uri}' points to a directory, not a file. " + f"The MCP resource reader can only read individual files." + ) from exc + + with open(file_path, 'r', encoding='utf-8') as f: + content = f.read() + + return content + + def _sanitize_arguments(self, arguments: Dict[str, Any]) -> Dict[str, Any]: + """Redact sensitive values in tool arguments for logging.""" + if not isinstance(arguments, dict): + return {} + sensitive_keys = { + "api_key", "apikey", "token", "password", "secret", + "authorization", "auth", "bearer", "access_token", + } + redacted: Dict[str, Any] = {} + for key, value in arguments.items(): + if isinstance(key, str) and key.lower() in sensitive_keys: + redacted[key] = "" + else: + redacted[key] = value + return redacted + + async def list_tools(self, _request: ListToolsRequest) -> ListToolsResult: + """List available tools""" + return ListToolsResult( + tools=[ + Tool( + name="generate_inference_pipeline", + description=( + "Generate a deployable inference service from a YAML configuration file. " + "Outputs a complete project with model serving code, API endpoints, and deployment files. " + "Read 'samples://*' resources for example configurations, " + "or 'schema://config.schema.json' resource for the full configuration schema." + ), + inputSchema={ + "type": "object", + "properties": { + "config_file": { + "type": "string", + "description": ( + "Path to the YAML configuration file defining the pipeline. " + "If the user has not provided a config file, generate one based on " + "their requirements: read 'schema://config.schema.json' for the full schema, " + "'schema://index.json' to find backend-specific parameter schemas " + "(maps backend type to 'schema://backends/parameters/*'), " + "'schema://readme' for documentation, and 'samples://*' resources for " + "reference examples. Create the YAML file at a suitable path, then provide " + "that path here." + ) + }, + "server_type": { + "type": "string", + "enum": ALLOWED_SERVERS, + "default": "serverless", + "description": ( + "Type of server to generate. Use 'serverless' for standalone applications " + "designed for batch inference " + "(no API spec needed and no server section should appear in the config_file). " + "Use 'fastapi' for microservices that serve inference requests via HTTP endpoints " + " (requires api_spec and 'server' section in config_file)." + " If the user's intent is unclear, ask them to explicitly choose " + "between 'serverless' and 'fastapi' before proceeding." + ) + }, + "output_dir": { + "type": "string", + "description": ( + "The user's project directory where generated artifacts will be placed. " + "This directory will contain configurations, custom processors, Dockerfiles, " + "and other files for the inference project. A subdirectory named after the " + "pipeline (from config YAML) will be created here, or a tar.gz archive if " + "tar_output is enabled. If the project location is unclear, ask the user to " + "specify it, or prompt them to confirm after creating a new project directory." + ), + "default": "." + }, + "api_spec": { + "type": "string", + "description": ( + "Path to OpenAPI specification file (YAML/JSON). " + "Required for 'fastapi', 'triton', and 'nim' server types. " + "Not needed for 'serverless' type. If the user has not provided an " + "OpenAPI spec, attempt to generate one based on their requirements. " + "If the given information is insufficient to generate a valid spec " + "(e.g., missing endpoint definitions, request/response schemas), " + "ask the user to provide an OpenAPI specification file." + ) + }, + "custom_modules": { + "type": "array", + "items": {"type": "string"}, + "description": ( + "List of paths to custom Python module files for preprocessors and " + "postprocessors. Each module must define classes with a 'name' attribute " + "and '__call__' method to be registered in the pipeline. Determine if " + "processors are needed based on the user's requirements and pipeline " + "structure (e.g., input transformations, output formatting). If processors " + "are required, read 'samples://processor/*' resources for reference examples, " + "then generate the Python files accordingly, save them in the project " + "directory, and include their paths here." + ) + }, + "exclude_lib": { + "type": "boolean", + "default": False, + "description": ( + "If true, exclude the common utility library from generated code. " + "Use when deploying to an environment where the library is already installed." + ) + }, + "tar_output": { + "type": "boolean", + "default": False, + "description": ( + "If true, output a tar.gz archive instead of a directory. " + "This affects how the generated pipeline is copied into the container " + "image in the Dockerfile: use COPY with directory when false, or ADD " + "with tar.gz extraction when true. Set to true when transferring the " + "pipeline to a remote build system." + ) + }, + "validation_dir": { + "type": "string", + "description": ( + "Path to output directory for API validation/test artifacts. " + "When provided, generates OpenAPI client code and test cases " + "for validating the inference endpoints." + ) + }, + "no_docker": { + "type": "boolean", + "default": False, + "description": ( + "If true, use locally installed OpenAPI Generator CLI instead of Docker. " + "Requires 'openapi-generator-cli' to be installed and in PATH." + ) + }, + "test_cases_abs_path": { + "type": "boolean", + "default": False, + "description": ( + "If true, use absolute paths in generated test_cases.yaml. " + "Use when test files are located outside the validation directory." + ) + } + }, + "required": ["config_file"] + } + ), + Tool( + name="build_docker_image", + description=( + "Build a Docker image from a generated inference " + "pipeline. The Dockerfile is expected to consume the " + "tar.gz archive produced by 'generate_inference_pipeline' " + "when 'tar_output' is true (for example, using " + "'ADD .tar.gz /app') rather than copying a " + "loose directory of files. Agents should prefer " + "tar_output=true for Docker-based deployments." + ), + inputSchema={ + "type": "object", + "properties": { + "image_name": { + "type": "string", + "description": "Name for the Docker image" + }, + "dockerfile": { + "type": "string", + "description": ( + "Path to Dockerfile. Always generate the Dockerfile based on user " + "requirements and 'samples://dockerfile/*' resources. " + "**Before choosing a Dockerfile template, read 'docs://platform-guide.md' " + "to identify the correct base image and template for the target hardware** " + "(x86_64 datacenter, Jetson/Tegra, or arm-sbsa servers like GB10/GB300/DGX Spark). " + "Consider model backend (triton, vllm, tensorrt-llm, deepstream), server type " + "(serverless, fastapi), and hardware platform. " + "The Dockerfile MUST be placed in the output_dir where the generated " + "pipeline resides, as its parent directory becomes the Docker build " + "context for properly transferring the pipeline code into the container." + ) + } + }, + "required": ["image_name", "dockerfile"] + } + ), + Tool( + name="docker_run_image", + description=( + "Optionally run a built Docker image to help with testing and " + "troubleshooting. This is a lightweight helper around " + "'docker run' that can mount a prepared model repository " + "from the host into the container, set environment " + "variables, and pass command-line arguments. " + "The container is started with --ipc=host so that " + "PyTorch / TensorRT-LLM multiprocessing can share " + "tensors via /dev/shm without hitting the default " + "64 MB Docker limit. " + "Use this after 'prepare_model_repository' and " + "'build_docker_image' have completed." + ), + inputSchema={ + "type": "object", + "properties": { + "image_name": { + "type": "string", + "description": ( + "Name of the Docker image to run " + "(for example, 'my-inference-service:latest')." + ) + }, + "model_repo_host": { + "type": "string", + "description": ( + "Optional host path to a prepared model repository " + "directory (for example, produced by " + "'prepare_model_repository'). If provided, it will " + "be mounted into the container at " + "model_repo_container via a Docker volume." + ) + }, + "model_repo_container": { + "type": "string", + "description": ( + "Container path where the model repository should " + "be mounted (for example, '/models'). Used only " + "when model_repo_host is provided." + ), + "default": "/models" + }, + "server_type": { + "type": "string", + "description": ( + "High-level server type hint to choose sensible " + "defaults (for example, 'serverless' or 'fastapi'). " + "For non-serverless servers, the container will be " + "run on the host network to make HTTP endpoints " + "reachable from the host." + ), + "default": "serverless" + }, + "env": { + "type": "object", + "description": ( + "Optional environment variables to set inside the " + "container. Keys and values are serialized as " + "`-e KEY=VALUE`." + ), + "additionalProperties": { + "type": "string" + } + }, + "cmd": { + "type": "array", + "description": ( + "Optional list of command-line arguments or an " + "alternative command to pass to 'docker run' after " + "the image name. For serverless flows this is " + "typically the inference entrypoint arguments. " + "IMPORTANT: when server_type is 'serverless', the " + "user's input must be supplied via CLI arguments in " + "this list. Argument names use hyphens, not " + "underscores (e.g., the input named 'media_url' " + "becomes '--media-url '). Each flag and its " + "value should be separate items, for example: " + "[\"--media-url\", \"/path/to/video.mp4\"]." + ), + "items": { + "type": "string" + } + }, + "gpus": { + "type": "string", + "description": ( + "GPU devices to use for the container, passed as " + "`--gpus` (for example, 'all', 'device=0', " + "'device=0,1')." + ), + "default": "all" + }, + "timeout": { + "type": "integer", + "description": ( + "Maximum time in seconds to wait for the container " + "process to complete before timing out. For " + "non-serverless servers this is the time to wait " + "before collecting logs and stopping the container." + ), + "default": 300 + } + }, + "required": ["image_name"] + } + ), + Tool( + name="prepare_model_repository", + description=( + "Optionally prepare a model repository directory for deployment. " + "Given a model configuration list, this tool can download model artifacts " + "(for example from NGC or Hugging Face) and copy associated runtime " + "configuration files (such as DeepStream nvdsinfer_config.yaml and " + "nvdspreprocess_config*.yaml) into a model repository layout that " + "matches the generated pipeline and Dockerfile. Use this when the " + "user does not already have a model repository prepared." + "It is recommended to mount the model repository as a volume when running the Docker image." + ), + inputSchema={ + "type": "object", + "properties": { + "model_configs": { + "type": "array", + "description": ( + "List of model configurations to prepare, following the same " + "structure as the 'models' section in builder/tests/" + "test_docker_builds.py. Each item is an object with fields: " + "'name' (required, model name), 'source' (optional, 'NGC' or " + "'HF', default 'NGC'), 'target' (required, directory where the " + "prepared model repository should be created), 'path' (for NGC: " + "registry model path; for HF: repo id like " + "'Qwen/Qwen2.5-VL-3B-Instruct'), 'version' (for NGC), " + "'configs' (optional, path relative to config_dir of a directory " + "of runtime config files to copy into the final model repository), and " + "'post_script' (optional, shell command to execute after model download " + "for post-processing steps)." + ), + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Model name (used as the final directory name).", + }, + "source": { + "type": "string", + "enum": ["NGC", "HF"], + "description": ( + "Model source: 'NGC' for NVIDIA NGC registry models, " + "or 'HF' for Hugging Face models." + ), + }, + "target": { + "type": "string", + "description": ( + "Target directory on the local filesystem where the prepared " + "model repository should be created." + ), + }, + "path": { + "type": "string", + "description": ( + "For NGC: registry model path (for example, " + "'nvidia/tao/grounding_dino'). For HF: model repo id " + "(for example, 'Qwen/Qwen2.5-VL-3B-Instruct')." + ), + }, + "version": { + "type": "string", + "description": ( + "For NGC models, the version/tag to download (for example, " + "'grounding_dino_swin_tiny_commercial_deployable_v1.0')." + ), + }, + "configs": { + "type": "string", + "description": ( + "Optional path (relative to config_dir) to a directory containing " + "runtime configuration files (for example, DeepStream " + "nvdsinfer_config.yaml, nvdspreprocess_config*.yaml, label files) " + "that should be copied into the final model repository." + ), + }, + "post_script": { + "type": "string", + "description": ( + "Optional shell command or script to execute after the model is downloaded. " + "This can be used for post-processing steps like installing additional " + "dependencies, converting model formats, or applying patches. " + "The script is executed with the model's target directory as the current " + "working directory." + ), + }, + }, + "required": ["name", "target"], + }, + }, + "config_dir": { + "type": "string", + "description": ( + "Base directory used to resolve relative 'configs' " + "paths in model_configs. Typically this is the " + "directory containing your pipeline/test " + "configuration files." + ), + "default": "." + } + }, + "required": ["model_configs"] + } + ), + Tool( + name="generate_nvinfer_config", + description=( + "Generate a DeepStream nvinfer runtime configuration file (nvdsinfer_config.yaml). " + "This configuration file is required by the DeepStream backend and must be placed " + "in the model repository. It defines inference parameters such as model file paths, " + "precision mode, network type, input dimensions, and custom parsers. " + "The generated file should be referenced via 'infer_config_path' in the DeepStream " + "backend parameters. See 'samples://runtime_config/*' resources for examples." + "**IMPORTANT: Before generating a new config file, first call 'prepare_model_repository' to download the model and check for existing nvinfer configuration files.** " + "Models from NGC typically include a configuration file (YAML or TXT) with all required inference parameters - always prefer using this provided configuration when available. "), + inputSchema={ + "type": "object", + "properties": { + "output_path": { + "type": "string", + "description": ( + "Path where the generated nvdsinfer_config.yaml file should be saved. " + "This should typically be in your model repository directory." + ) + }, + "onnx_file": { + "type": "string", + "description": ( + "Name of the ONNX model file (e.g., 'model.onnx'). " + "This file should exist in the same directory as the config file." + ) + }, + "precision_mode": { + "type": "integer", + "enum": [0, 1, 2], + "default": 2, + "description": ( + "Precision mode for inference: 0=FP32, 1=INT8, 2=FP16. " + "Default is FP16 (2) for optimal performance on modern GPUs." + ) + }, + "network_type": { + "type": "integer", + "enum": [0, 1, 2, 3, 100], + "description": ( + "Network type: 0=detection, 1=classification, 2=segmentation, " + "3=instance_segmentation. This determines how the model output is interpreted." + "100=custom is used for models that need to output raw tensors for custom downstream processing along with output-tensor-meta: 1." + ) + }, + "input_dims": { + "type": "string", + "description": ( + "Model input dimensions in format 'channel;height;width' " + "(e.g., '3;224;224' for a 224x224 RGB image). " + "Note: the format is C;H;W, not C;W;H." + ) + }, + "label_file": { + "type": "string", + "description": ( + "Name of the label file (e.g., 'labels.txt'). " + "This file should contain class names, one per line, and be placed " + "in the same directory as the config file." + ) + }, + "custom_lib_path": { + "type": "string", + "description": ( + "Path to a C++ shared library (.so) that provides custom output parsing functions. " + "Required for all models except classic ResNet when network_type is 0, 1, 2, or 3 (not required for network_type 100 which outputs raw tensors). " + "For TAO-trained models, build the library from https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps/tree/master/post_processor. " + "For other models, provide the path to your own custom parser library." + ) + }, + "custom_parse_func": { + "type": "string", + "description": ( + "Symbol name of the custom parsing function exported by custom_lib_path. " + "Behavior varies by network_type: " + "(0) Detection - if omitted, the built-in parser assumes a ResNet model with 'bbox' and 'cov' output layers. " + "(1) Classification - if omitted, the built-in parser treats model output as a softmax layer. " + "(2) Segmentation, (3) Instance segmentation - no built-in parser available, custom_parse_func is required. " + "(100) Custom - not required, raw tensors are output directly for downstream processing." + ) + }, + "num_classes": { + "type": "integer", + "description": ( + "Number of detected classes for the model. Required for detection and classification networks and can be deducted from the label file." + ) + }, + "gie_unique_id": { + "type": "integer", + "default": 1, + "description": ( + "Unique ID for this GIE (inference engine) in the pipeline. " + "Use different IDs if you have multiple inference engines in the same pipeline." + ) + }, + "net_scale_factor": { + "type": "number", + "default": 0.00392156862745098, + "description": ( + "Scale factor for input normalization. Default is 1/255 = 0.00392156862745098 " + "for models expecting [0,1] normalized inputs. IMPORTANT: This must match the " + "scaling factor used during model training. Common patterns: " + "(1) Simple scaling: 1/255; " + "(2) With uniform std: 1/(255*std) - dividing by std; " + "(3) With scale factor d: d/255 - multiplying by d; " + "(4) Custom: any value matching training. " + "For per-channel std normalization, consider baking into the ONNX model or using " + "a custom preprocessing plugin, as DeepStream only supports a single scale factor." + ) + }, + "offsets": { + "type": "string", + "description": ( + "Per-channel mean subtraction values in format 'R;G;B' " + "(e.g., '127.5;127.5;127.5' for [-1,1] normalization, " + "'123.675;116.28;103.53' for ImageNet models). " + "IMPORTANT: This must match the per-channel mean subtraction used during " + "model training. If training used mean subtraction, you MUST specify this " + "parameter. If no mean subtraction was used during training, omit this parameter " + "or use '0;0;0'. Incorrect offsets will result in poor inference accuracy." + ) + }, + "classifier_threshold": { + "type": "number", + "default": 0.0, + "description": ( + "Confidence threshold for classification results. " + "Only classifications above this threshold will be reported." + ) + }, + "input_tensor_from_meta": { + "type": "integer", + "enum": [0, 1], + "default": 0, + "description": ( + "Whether to read input tensor from metadata (1) or from frame buffer (0). " + "Set to 1 when using nvdspreprocess for custom preprocessing." + ) + }, + "output_tensor_meta": { + "type": "integer", + "enum": [0, 1], + "default": 0, + "description": ( + "Whether to output in DeepStream metadata format (0) or raw tensor format (1). " + "Set to 1 if raw tensors are expected as inference output, which allows downstream " + "components to access raw tensor data as a Dictionary." + "Set to 0 for TYPE_CUSTOM_DS_METADATA output type, where the custom parser library processes the raw tensors into detected objects." + ) + } + }, + "required": ["output_path", "onnx_file", "network_type", "input_dims", "label_file"] + } + ), + ] + ) + + async def call_tool(self, request: CallToolRequest) -> CallToolResult: + """Execute a tool""" + name = request.params.name + arguments = request.params.arguments + + start_time = time.perf_counter() + self.logger.info( + "tool_call_started name=%s args=%s", + name, + self._sanitize_arguments(arguments), + ) + + try: + if name == "generate_inference_pipeline": + result = await self._generate_pipeline(arguments) + elif name == "build_docker_image": + result = await self._build_docker_image(arguments) + elif name == "docker_run_image": + result = await self._docker_run_image(arguments) + elif name == "prepare_model_repository": + result = await self._prepare_model_repository(arguments) + elif name == "generate_nvinfer_config": + result = await self._generate_deepstream_nvinfer_config(arguments) + else: + raise ValueError(f"Unknown tool: {name}") + + duration_ms = (time.perf_counter() - start_time) * 1000.0 + self.logger.info( + "tool_call_completed name=%s error=%s duration_ms=%.2f", + name, + bool(getattr(result, "isError", False)), + duration_ms, + ) + return result + except Exception as e: + duration_ms = (time.perf_counter() - start_time) * 1000.0 + self.logger.exception( + "tool_call_failed name=%s duration_ms=%.2f error=%s", + name, + duration_ms, + str(e), + ) + return CallToolResult( + content=[TextContent(type="text", text=f"Error: {str(e)}")], + isError=True + ) + + async def _generate_pipeline( + self, arguments: Dict[str, Any] + ) -> CallToolResult: + """Generate inference pipeline""" + config_file = arguments["config_file"] + server_type = arguments.get("server_type", "serverless") + output_dir = arguments.get("output_dir", ".") + + # Build command - use the same Python executable as the parent process + cmd = [ + sys.executable, "builder/main.py", + "--server-type", server_type, + "-o", output_dir, + config_file + ] + + # Add optional arguments + if "api_spec" in arguments: + cmd.extend(["-a", arguments["api_spec"]]) + + if "custom_modules" in arguments: + for module in arguments["custom_modules"]: + cmd.extend(["-c", module]) + + if arguments.get("exclude_lib", False): + cmd.append("-x") + + if arguments.get("tar_output", False): + cmd.append("-t") + + if "validation_dir" in arguments: + cmd.extend(["--validation-dir", arguments["validation_dir"]]) + + if arguments.get("no_docker", False): + cmd.append("--no-docker") + + if arguments.get("test_cases_abs_path", False): + cmd.append("--test-cases-abs-path") + + # Execute the command - inherit the current process environment + + result = subprocess.run( + cmd, + capture_output=True, + text=True, + cwd=Path(__file__).parent.parent, + env=os.environ.copy(), # Inherit the current environment + check=False, + ) + + if result.returncode == 0: + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Successfully generated inference pipeline!\n\n" + f"Output directory: {output_dir}\n\n" + f"Command executed: {' '.join(cmd)}\n\n" + f"Output:\n{result.stdout}" + ) + ] + ) + else: + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + "Failed to generate pipeline:\n\n" + f"Error:\n{result.stderr}\n\n" + f"Command: {' '.join(cmd)}" + ) + ) + ], + isError=True + ) + + def _get_sample_description(self, sample_name: str) -> str: + """Get description for a sample""" + descriptions = { + "ds_app": ( + "DeepStream applications for object detection and " + "segmentation" + ), + "qwen": "Qwen language models with various backends", + "changenet": "Change detection models", + "nvclip": "NVIDIA CLIP models for vision-language tasks", + "tao": "NVIDIA TAO toolkit models", + "dummy": "Dummy models for testing and development" + } + return descriptions.get(sample_name, "") + + async def _docker_run_image( + self, arguments: Dict[str, Any] + ) -> CallToolResult: + """Run a Docker image for testing/troubleshooting.""" + image_name = arguments["image_name"] + model_repo_host = arguments.get("model_repo_host") + model_repo_container = arguments.get("model_repo_container", "/models") + server_type = arguments.get("server_type", "serverless") + env_vars = arguments.get("env") or {} + cmd_args = arguments.get("cmd") or [] + gpus = arguments.get("gpus", "all") + timeout = int(arguments.get("timeout", 300)) + + # Base docker run command (no shell, argument list only) + # Use --ipc=host so the container shares the host's /dev/shm. + # Docker's default 64 MB /dev/shm is insufficient for + # PyTorch / TensorRT-LLM multiprocessing which shares tensors + # via shared memory, causing SIGBUS when /dev/shm is exhausted. + # Assign a deterministic name so we can force-remove the container + # on timeout — subprocess.TimeoutExpired kills the `docker run` + # client process but leaves the container running with GPUs held. + container_name = f"ib-run-{uuid.uuid4().hex[:12]}" + cmd: list[str] = [ + "docker", "run", "--rm", "--ipc=host", + "--name", container_name, + ] + + # GPU configuration + if gpus: + cmd.extend(["--gpus", str(gpus)]) + + # Network: for serverless we still use host network so local clients can connect + cmd.append("--network=host") + + # Volume for model repository if provided + if model_repo_host: + host_path = str(Path(model_repo_host).expanduser().resolve()) + volume_arg = f"{host_path}:{model_repo_container}" + cmd.extend(["-v", volume_arg]) + + # Environment variables + if isinstance(env_vars, dict): + for key, value in env_vars.items(): + cmd.extend(["-e", f"{key}={value}"]) + + # Image name and optional command/args + cmd.append(image_name) + if isinstance(cmd_args, list): + cmd.extend([str(a) for a in cmd_args]) + + self.logger.info( + "docker_run_invoked image=%s model_repo_host=%s cmd=%s", + image_name, + model_repo_host, + " ".join(cmd), + ) + + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=timeout, + check=False, + ) + except FileNotFoundError: + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + "Docker not found. Please ensure Docker is installed " + "and available in your PATH before using docker_run_image." + ), + ) + ], + isError=True, + ) + except subprocess.TimeoutExpired: + is_serverless = server_type == "serverless" + if is_serverless: + # Serverless containers should finish within the timeout. + # The `docker run` client is dead but the container keeps + # running (and holding GPU memory). Force-remove it. + cleanup_msg = "" + try: + subprocess.run( + ["docker", "rm", "-f", container_name], + capture_output=True, + timeout=30, + check=False, + ) + cleanup_msg = ( + f" The orphaned container '{container_name}' has " + "been force-removed." + ) + except Exception as cleanup_exc: + cleanup_msg = ( + f" WARNING: failed to remove orphaned container " + f"'{container_name}': {cleanup_exc}. " + "Please remove it manually with: " + f"docker rm -f {container_name}" + ) + self.logger.warning( + "Failed to remove timed-out container %s: %s", + container_name, + cleanup_exc, + ) + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + f"Docker run timed out after {timeout} seconds " + f"for image '{image_name}'.{cleanup_msg} You may " + "want to increase the timeout or inspect the " + "image logs manually." + ), + ) + ], + isError=True, + ) + else: + # Non-serverless (persistent) servers are expected to keep + # running past the timeout — that means the server started + # successfully. Leave the container running. + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + f"Container '{container_name}' is running " + f"(image '{image_name}'). The server appears to " + f"have started successfully (still alive after " + f"{timeout}s). To stop it later: " + f"docker rm -f {container_name}" + ), + ) + ], + isError=False, + ) + except Exception as exc: + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Exception while running Docker image '{image_name}': {exc}", + ) + ], + isError=True, + ) + + text = ( + f"docker run command: {' '.join(cmd)}\n\n" + f"exit code: {result.returncode}\n\n" + f"stdout:\n{result.stdout}\n\n" + f"stderr:\n{result.stderr}" + ) + + return CallToolResult( + content=[TextContent(type="text", text=text)], + isError=result.returncode != 0, + ) + + async def _prepare_model_repository( + self, arguments: Dict[str, Any] + ) -> CallToolResult: + """Prepare model repositories by downloading models and copying configs. + + This mirrors the 'models' handling in builder/tests/test_docker_builds.py, + but is exposed as an optional MCP tool so agents can help set up + model repositories before Docker image builds. + """ + # New interface: model_configs is a list of dicts (each includes 'name') + # Backward-compat: accept legacy 'models_config' dict keyed by model name. + model_configs = arguments.get("model_configs") + legacy_models_config = arguments.get("models_config") + config_dir_arg = arguments.get("config_dir", ".") + + if model_configs is None and legacy_models_config is not None: + # Convert dict[name -> config] into list[{name, ...config}] + if isinstance(legacy_models_config, dict): + converted: list[dict[str, Any]] = [] + for legacy_name, legacy_info in legacy_models_config.items(): + if isinstance(legacy_info, dict): + merged = dict(legacy_info) + merged["name"] = legacy_name + converted.append(merged) + model_configs = converted + else: + model_configs = [] + + if not isinstance(model_configs, list) or not model_configs: + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + "No models specified in model_configs. " + "Nothing to prepare for model repositories." + ), + ) + ] + ) + + # Resolve config_dir relative to project root (repo root) + project_root = Path(__file__).resolve().parents[1] + config_dir = Path(config_dir_arg) + if not config_dir.is_absolute(): + config_dir = (project_root / config_dir).resolve() + + messages: list[str] = [] + + for model_info in model_configs: + try: + if not isinstance(model_info, dict): + messages.append( + "❌ Skipping model entry: config must be an object" + ) + continue + + model_name = model_info.get("name") + if not model_name or not isinstance(model_name, str): + messages.append( + "❌ Skipping model entry: missing required 'name'" + ) + continue + + source = str(model_info.get("source", "NGC")).upper() + target = model_info.get("target") + if not target: + messages.append( + f"❌ Skipping model '{model_name}': missing required 'target'" + ) + continue + + target_dir = Path(target).expanduser() + final_model_dir = target_dir / model_name + + # Create target parent directory + target_dir.mkdir(parents=True, exist_ok=True) + + if final_model_dir.exists(): + messages.append( + f"✅ Model '{model_name}' already exists at {final_model_dir}, " + f"skipping download" + ) + else: + if source == "HF": + # Hugging Face model download, based on DockerBuildTester.download_models + hf_repo = model_info.get("path") + if not hf_repo: + messages.append( + f"❌ Skipping HF model '{model_name}': missing 'path'" + ) + continue + + messages.append( + f"📥 Downloading Hugging Face model '{model_name}' " + f"({hf_repo}) to {final_model_dir}" + ) + + # Use huggingface_hub.snapshot_download instead of git clone + # so that actual binary weights are fetched via the HF CDN + # (git clone only retrieves LFS pointer stubs unless a full + # LFS pull is performed, which fails for gated repos without + # proper credential configuration). + try: + from huggingface_hub import snapshot_download + snapshot_download( + repo_id=hf_repo, + local_dir=str(final_model_dir), + ignore_patterns=["*.pt", "*.bin", "original/*"], + ) + except Exception as e: + messages.append( + f"❌ Failed to download HF model '{model_name}': {e}" + ) + continue + else: + # Default to NGC + ngc_path = model_info.get("path") + version = model_info.get("version") + if not ngc_path or not version: + messages.append( + f"❌ Skipping NGC model '{model_name}': " + f"both 'path' and 'version' are required" + ) + continue + + full_ngc_path = f"{ngc_path}:{version}" + messages.append( + f"📥 Downloading NGC model '{model_name}' " + f"({full_ngc_path}) to {final_model_dir}" + ) + + # Run NGC CLI to download the model version + download_cmd = [ + "ngc", + "registry", + "model", + "download-version", + full_ngc_path, + ] + result = subprocess.run( + download_cmd, + capture_output=True, + text=True, + timeout=900, + check=False, + ) + if result.returncode != 0: + messages.append( + f"❌ Failed to download NGC model '{model_name}': " + f"{result.stderr.strip()}" + ) + continue + + # Infer downloaded folder name as in test_docker_builds.py + model_base_name = ngc_path.split("/")[-1] + downloaded_folder = Path( + f"{model_base_name}_v{version}" + ) + if not downloaded_folder.exists(): + messages.append( + f"❌ Downloaded folder not found for model " + f"'{model_name}': {downloaded_folder}" + ) + continue + + try: + shutil.move(str(downloaded_folder), str(final_model_dir)) + except Exception as exc: + messages.append( + f"❌ Failed to move downloaded model '{model_name}' " + f"into {final_model_dir}: {exc}" + ) + continue + + # Copy configs into final_model_dir if specified + configs_rel = model_info.get("configs") + if configs_rel: + source_configs = (config_dir / configs_rel).resolve() + if source_configs.exists(): + messages.append( + f"📄 Copying runtime configs from {source_configs} " + f"to {final_model_dir}" + ) + try: + for item in source_configs.iterdir(): + dest = final_model_dir / item.name + if item.is_file(): + shutil.copy2(str(item), str(dest)) + elif item.is_dir(): + shutil.copytree( + str(item), str(dest), dirs_exist_ok=True + ) + except Exception as exc: + messages.append( + f"⚠️ Failed to copy configs for '{model_name}': {exc}" + ) + else: + messages.append( + f"⚠️ Config path not found for model '{model_name}': " + f"{source_configs}" + ) + + # Execute post-script if specified + post_script = model_info.get("post_script") + if post_script: + messages.append( + f"🔧 Executing post-script for '{model_name}': {post_script}" + ) + try: + script_result = subprocess.run( + post_script, + shell=True, + capture_output=True, + text=True, + cwd=str(final_model_dir), + timeout=600, + check=False, + ) + if script_result.returncode == 0: + messages.append( + f"✅ Post-script executed successfully for '{model_name}'" + ) + if script_result.stdout.strip(): + messages.append( + f" Output: {script_result.stdout.strip()}" + ) + else: + messages.append( + f"❌ Post-script failed for '{model_name}' " + f"(exit code {script_result.returncode}): " + f"{script_result.stderr.strip()}" + ) + except subprocess.TimeoutExpired: + messages.append( + f"❌ Post-script timed out for '{model_name}' after 600 seconds" + ) + except Exception as exc: + messages.append( + f"❌ Failed to execute post-script for '{model_name}': {exc}" + ) + + messages.append( + f"✅ Prepared model repository for '{model_name}' at " + f"{final_model_dir}" + ) + + except Exception as exc: # Catch-all per model + messages.append( + f"❌ Exception while preparing model '{model_name}': {exc}" + ) + + summary = "\n".join(messages) + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + "Model repository preparation completed.\n\n" + f"{summary}" + ), + ) + ] + ) + + async def _build_docker_image( + self, arguments: Dict[str, Any] + ) -> CallToolResult: + """Build Docker image from generated pipeline""" + image_name = arguments["image_name"] + dockerfile = arguments["dockerfile"] + + # Validate Dockerfile exists + dockerfile_path = Path(dockerfile) + if not dockerfile_path.exists(): + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Dockerfile not found: {dockerfile}. Please " + f"provide a valid Dockerfile path." + ) + ], + isError=True + ) + + # Use Dockerfile's parent directory as build context + build_context = str(dockerfile_path.parent) + + # Build Docker image + cmd = [ + "docker", "build", + "-f", dockerfile, + "-t", image_name, + build_context + ] + self.logger.info( + "docker_build_invoked image=%s dockerfile=%s context=%s", + image_name, + dockerfile, + build_context, + ) + + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + cwd=Path(__file__).parent.parent, + check=False, + ) + + if result.returncode == 0: + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + f"Successfully built Docker image " + f"'{image_name}'!\n\n" + f"Command executed: {' '.join(cmd)}\n\n" + f"Output:\n{result.stdout}" + ) + ) + ] + ) + else: + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Failed to build Docker image:\n\n" + f"Error:\n{result.stderr}\n\n" + f"Command: {' '.join(cmd)}" + ) + ], + isError=True + ) + except FileNotFoundError: + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + "Docker not found. Please ensure Docker is " + "installed and available in your PATH." + ) + ) + ], + isError=True + ) + + async def _generate_deepstream_nvinfer_config( + self, arguments: Dict[str, Any] + ) -> CallToolResult: + """Generate DeepStream nvinfer runtime configuration file""" + import yaml + + # Extract required parameters + output_path = arguments["output_path"] + onnx_file = arguments["onnx_file"] + network_type = arguments["network_type"] + input_dims = arguments["input_dims"] + label_file = arguments["label_file"] + + # Extract optional parameters with defaults + precision_mode = arguments.get("precision_mode", 2) # Default FP16 + custom_lib_path = arguments.get("custom_lib_path", "") + custom_parse_func = arguments.get("custom_parse_func", "") + num_classes = arguments.get("num_classes") + gie_unique_id = arguments.get("gie_unique_id", 1) + net_scale_factor = arguments.get("net_scale_factor", 0.00392156862745098) + offsets = arguments.get("offsets") + classifier_threshold = arguments.get("classifier_threshold", 0.0) + input_tensor_from_meta = arguments.get("input_tensor_from_meta", 0) + output_tensor_meta = arguments.get("output_tensor_meta", 0) + + # Validate network_type + network_type_names = { + 0: "detection", + 1: "classification", + 2: "segmentation", + 3: "instance_segmentation", + 100: "custom" + } + if network_type not in network_type_names: + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Invalid network_type: {network_type}. Must be 0 (detection), " + f"1 (classification), 2 (segmentation), 3 (instance_segmentation), " + f"or 100 (custom)." + ) + ], + isError=True + ) + + # Validate precision_mode + precision_names = {0: "FP32", 1: "INT8", 2: "FP16"} + if precision_mode not in precision_names: + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Invalid precision_mode: {precision_mode}. Must be 0 (FP32), 1 (INT8), or 2 (FP16)." + ) + ], + isError=True + ) + + # Validate input_dims format (should be channel;height;width) + dims_parts = input_dims.split(';') + if len(dims_parts) != 3: + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Invalid input_dims format: '{input_dims}'. " + f"Expected format: 'channel;height;width' (e.g., '3;224;224')" + ) + ], + isError=True + ) + + try: + # Validate dimensions are integers + for dim in dims_parts: + int(dim) + except ValueError: + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Invalid input_dims: '{input_dims}'. All dimensions must be integers." + ) + ], + isError=True + ) + + # Build the configuration + config = { + "property": { + "gie-unique-id": gie_unique_id, + "net-scale-factor": net_scale_factor, + "onnx-file": onnx_file, + "network-mode": precision_mode, + "network-type": network_type, + "infer-dims": input_dims, + "labelfile-path": label_file, + } + } + + # Add optional fields + if offsets: + config["property"]["offsets"] = offsets + + if num_classes is not None: + config["property"]["num-detected-classes"] = num_classes + + if input_tensor_from_meta: + config["property"]["input-tensor-from-meta"] = input_tensor_from_meta + + if output_tensor_meta: + config["property"]["output-tensor-meta"] = output_tensor_meta + + if network_type == 1: # classification + config["property"]["classifier-threshold"] = classifier_threshold + + if custom_lib_path: + config["property"]["custom-lib-path"] = custom_lib_path + + # Add custom parse function name based on network type + if custom_parse_func: + if network_type == 0: # detection + config["property"]["parse-bbox-func-name"] = custom_parse_func + elif network_type == 1: # classification + config["property"]["parse-classifier-func-name"] = custom_parse_func + elif network_type == 2: # segmentation + config["property"]["parse-segmentation-func-name"] = custom_parse_func + elif network_type == 3: # instance_segmentation + config["property"]["parse-bbox-instance-mask-func-name"] = custom_parse_func + # network_type 100 (custom) doesn't need a parse function name + + # Generate YAML content with header + header = """# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# IMPORTANT NORMALIZATION PARAMETERS: +# - net-scale-factor: Must match the scaling factor used during training +# - offsets: Must match any per-channel mean subtraction used during training +# Incorrect normalization will result in poor inference accuracy! + +""" + + yaml_content = yaml.dump(config, default_flow_style=False, sort_keys=False) + full_content = header + yaml_content + + # Write to file + try: + output_file = Path(output_path) + output_file.parent.mkdir(parents=True, exist_ok=True) + + with open(output_file, 'w', encoding='utf-8') as f: + f.write(full_content) + + return CallToolResult( + content=[ + TextContent( + type="text", + text=( + f"Successfully generated DeepStream nvinfer configuration!\n\n" + f"Output file: {output_path}\n\n" + f"Configuration summary:\n" + f" - Network type: {network_type_names[network_type]} ({network_type})\n" + f" - Precision mode: {precision_names[precision_mode]} ({precision_mode})\n" + f" - ONNX file: {onnx_file}\n" + f" - Input dimensions: {input_dims}\n" + f" - Label file: {label_file}\n" + f" - Scale factor: {net_scale_factor}\n" + + (f" - Per-channel offsets: {offsets}\n" if offsets else " - Per-channel offsets: NOT SET (no mean subtraction)\n") + + (f" - Number of classes: {num_classes}\n" if num_classes else "") + + (f" - Input from metadata: {bool(input_tensor_from_meta)}\n" if input_tensor_from_meta else "") + + (f" - Output as metadata: {bool(output_tensor_meta)} (raw tensors in DS META)\n" if output_tensor_meta else "") + + (f" - Custom library: {custom_lib_path}\n" if custom_lib_path else "") + + (f" - Custom parse function: {custom_parse_func}\n" if custom_parse_func else "") + + "\n⚠️ IMPORTANT: Verify that net-scale-factor and per-channel offsets match your model's training normalization!\n" + + " - net-scale-factor must match the scaling applied during training\n" + + " - offsets must match any per-channel mean subtraction used during training\n" + + " - If training used no mean subtraction, offsets should not be set (or set to 0;0;0)\n" + + f"\nGenerated content:\n\n{full_content}" + ) + ) + ] + ) + except Exception as e: + return CallToolResult( + content=[ + TextContent( + type="text", + text=f"Failed to write configuration file:\n\n{str(e)}" + ) + ], + isError=True + ) + + +async def main(): + """Main entry point for the MCP server""" + logging.basicConfig( + level=logging.DEBUG, + format=("%(asctime)s %(levelname)s %(name)s - %(message)s"), + ) + logger = logging.getLogger("deepstream-inference-builder") + logger.info("starting_mcp_server") + server = InferenceBuilderMCPServer() + logger.info("server_created") + + async with stdio_server() as (read_stream, write_stream): + logger.info("stdio_server_started") + init_options = server.server.create_initialization_options() + logger.info("initialization_options_created") + await server.server.run( + read_stream, + write_stream, + init_options, + ) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/tools/inference_builder/mcp/setup_mcp.py b/tools/inference_builder/mcp/setup_mcp.py new file mode 100644 index 00000000..27bfb593 --- /dev/null +++ b/tools/inference_builder/mcp/setup_mcp.py @@ -0,0 +1,207 @@ +#!/usr/bin/env python3 +""" +Setup script for Inference Builder MCP Integration + +This script helps install dependencies and configure the MCP integration +for use with MCP-compatible clients such as Cursor and Claude Code. + +Usage: + python setup_mcp.py [CONFIG_PATH] + +Arguments: + CONFIG_PATH Path to the MCP config file (default: ~/.cursor/mcp.json) + +Examples: + Cursor (global): python setup_mcp.py ~/.cursor/mcp.json + Cursor (project): python setup_mcp.py /path/to/project/.cursor/mcp.json + Claude Code: python setup_mcp.py ~/.claude/.mcp.json +""" + +import argparse +import subprocess +import sys +from pathlib import Path + +def run_command(cmd, description): + """Run a command and handle errors""" + print(f"Running: {description}") + print(f"Command: {' '.join(cmd)}") + + try: + result = subprocess.run(cmd, capture_output=True, text=True, check=True) + print(f"✓ {description} completed successfully") + if result.stdout: + print(f"Output: {result.stdout.strip()}") + return True + except subprocess.CalledProcessError as e: + print(f"✗ {description} failed") + print(f"Error: {e.stderr.strip()}") + return False + except FileNotFoundError: + print(f"✗ Command not found: {cmd[0]}") + return False + +def check_python_version(): + """Check if Python version is compatible""" + version = sys.version_info + if version.major < 3 or (version.major == 3 and version.minor < 8): + print(f"✗ Python 3.8+ required, found {version.major}.{version.minor}") + return False + print(f"✓ Python {version.major}.{version.minor}.{version.micro} is compatible") + return True + +def test_integration(): + """Test the MCP integration""" + print("\nTesting MCP integration...") + + if not run_command([sys.executable, "mcp/test_mcp_server.py"], "Running integration tests"): + print("Integration tests failed. Please check the errors above.") + return False + + return True + +def create_mcp_config(config_path=None): + """Create or update MCP configuration file + + Args: + config_path: Optional path to the MCP config file. + Defaults to ~/.cursor/mcp.json if not specified. + """ + import json + + print("\nSetting up MCP configuration...") + + if config_path: + config_file = Path(config_path).expanduser().resolve() + config_dir = config_file.parent + if not config_dir.exists(): + config_dir.mkdir(parents=True, exist_ok=True) + print(f"✓ Created directory: {config_dir}") + else: + default_dir = Path.home() / ".cursor" + if not default_dir.exists(): + default_dir.mkdir(parents=True, exist_ok=True) + print(f"✓ Created directory: {default_dir}") + config_file = default_dir / "mcp.json" + + # Define the server configuration for this project + server_name = "deepstream-inference-builder" + server_config = { + "command": str(Path(sys.executable)), + "args": [str(Path.cwd() / "mcp" / "mcp_server.py")], + "cwd": str(Path.cwd()), + "env": { + "PYTHONPATH": str(Path.cwd() / "mcp") + } + } + + # Load existing config or start with empty structure + existing_config = {"mcpServers": {}} + if config_file.exists(): + try: + with open(config_file, 'r') as f: + existing_config = json.load(f) + # Ensure mcpServers key exists + if "mcpServers" not in existing_config: + existing_config["mcpServers"] = {} + print(f"✓ Found existing config with {len(existing_config['mcpServers'])} server(s)") + except json.JSONDecodeError as e: + print(f"⚠️ Existing config is not valid JSON: {e}") + print("Creating new configuration (existing file will be overwritten)...") + existing_config = {"mcpServers": {}} + except Exception as e: + print(f"⚠️ Could not read existing config: {e}") + print("Creating new configuration...") + existing_config = {"mcpServers": {}} + + # Check if the server is already correctly configured + existing_server = existing_config["mcpServers"].get(server_name, {}) + if (existing_server.get("cwd") == server_config["cwd"] and + existing_server.get("command") == server_config["command"]): + print(f"✓ MCP server '{server_name}' already exists and is correct: {config_file}") + return True + + # Update or add the server configuration (preserving other servers) + if server_name in existing_config["mcpServers"]: + print(f"⚠️ Updating existing '{server_name}' server configuration...") + else: + print(f"Adding '{server_name}' server to configuration...") + + existing_config["mcpServers"][server_name] = server_config + + # Write the merged config back + try: + with open(config_file, 'w') as f: + json.dump(existing_config, f, indent=2) + print(f"✓ Updated MCP config: {config_file}") + print(f" Total servers configured: {len(existing_config['mcpServers'])}") + print("Note: You may need to restart your MCP client for the configuration to take effect.") + return True + except Exception as e: + print(f"✗ Failed to update MCP config: {e}") + print("Please manually update the MCP configuration file.") + return False + +def parse_args(): + """Parse command-line arguments""" + parser = argparse.ArgumentParser( + description="Setup script for Inference Builder MCP Integration", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + python setup_mcp.py # Default: ~/.cursor/mcp.json + python setup_mcp.py ~/.cursor/mcp.json # Cursor (global) + python setup_mcp.py .cursor/mcp.json # Cursor (project-specific) + python setup_mcp.py ~/.claude/.mcp.json # Claude Code (global) + python setup_mcp.py .mcp.json # Claude Code (project-specific) + """ + ) + parser.add_argument( + "config_path", + nargs="?", + default=None, + help="Path to the MCP config file (default: ~/.cursor/mcp.json)" + ) + return parser.parse_args() + + +def main(config_path=None): + """Main setup function + + Args: + config_path: Optional path to the MCP config file. + """ + print("Inference Builder MCP Integration Setup") + print("=" * 50) + + # Check Python version + if not check_python_version(): + print("\n❌ Setup failed: Python version incompatible") + return False + + # Test integration + if not test_integration(): + print("\n❌ Setup failed: Integration tests failed") + return False + + # Setup MCP config + create_mcp_config(config_path) + + print("\n" + "=" * 50) + print("🎉 Setup completed successfully!") + print("\nNext steps:") + print("1. Restart your MCP client (Cursor, Claude Code, etc.)") + print("2. Verify the 'deepstream-inference-builder' MCP server is connected") + print("3. Try using the tools:") + print(" - 'Show me what sample configurations are available from the inference builder?'") + print(" - 'Generate a DeepStream object detection pipeline using the inference builder with PeopleNet transformer model from NGC.'") + print("\nFor more information, see mcp/README-MCP.md") + + return True + + +if __name__ == "__main__": + args = parse_args() + success = main(args.config_path) + sys.exit(0 if success else 1) + diff --git a/tools/inference_builder/mcp/test_mcp_client.py b/tools/inference_builder/mcp/test_mcp_client.py new file mode 100644 index 00000000..e19c3ab5 --- /dev/null +++ b/tools/inference_builder/mcp/test_mcp_client.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 +""" +Simple MCP client to test direct communication with the inference-builder MCP server +""" + +import asyncio +import json +import subprocess +import sys +from pathlib import Path + + +class SimpleMCPClient: + def __init__(self, server_command, server_args, cwd=None): + self.server_command = server_command + self.server_args = server_args + self.cwd = cwd or Path.cwd() + self.process = None + + async def start_server(self): + """Start the MCP server process""" + cmd = [self.server_command] + self.server_args + print(f"🚀 Starting MCP server: {' '.join(cmd)}") + print(f"📁 Working directory: {self.cwd}") + + self.process = await asyncio.create_subprocess_exec( + *cmd, + cwd=self.cwd, + stdin=asyncio.subprocess.PIPE, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE + ) + print("✅ MCP server started") + + async def send_request(self, request): + """Send a JSON-RPC request to the server""" + if not self.process: + raise RuntimeError("Server not started") + + request_str = json.dumps(request) + '\n' + print(f"📤 Sending request: {request}") + + self.process.stdin.write(request_str.encode()) + await self.process.stdin.drain() + + # Read response + response_line = await self.process.stdout.readline() + if not response_line: + stderr_output = await self.process.stderr.read() + raise RuntimeError(f"No response from server. stderr: {stderr_output.decode()}") + + response = json.loads(response_line.decode().strip()) + print(f"📥 Received response: {json.dumps(response, indent=2)}") + return response + + async def initialize(self): + """Initialize the MCP connection""" + init_request = { + "jsonrpc": "2.0", + "id": 1, + "method": "initialize", + "params": { + "protocolVersion": "2024-11-05", + "capabilities": { + "tools": {} + }, + "clientInfo": { + "name": "test-client", + "version": "1.0.0" + } + } + } + response = await self.send_request(init_request) + + # Send initialized notification + initialized_notification = { + "jsonrpc": "2.0", + "method": "notifications/initialized", + "params": {} + } + print(f"📤 Sending initialized notification: {initialized_notification}") + request_str = json.dumps(initialized_notification) + '\n' + self.process.stdin.write(request_str.encode()) + await self.process.stdin.drain() + + return response + + async def list_tools(self): + """List available tools""" + request = { + "jsonrpc": "2.0", + "id": 2, + "method": "tools/list", + "params": {} + } + return await self.send_request(request) + + async def call_tool(self, tool_name, arguments=None): + """Call a specific tool""" + request = { + "jsonrpc": "2.0", + "id": 3, + "method": "tools/call", + "params": { + "name": tool_name, + "arguments": arguments or {} + } + } + return await self.send_request(request) + + async def cleanup(self): + """Clean up the server process""" + if self.process: + self.process.terminate() + await self.process.wait() + print("🛑 MCP server stopped") + + +async def main(): + """Test the MCP server with a direct client""" + print("🧪 Testing MCP Server with Direct Client") + print("=" * 50) + + # Configuration matching the Cursor MCP setup + script_dir = Path(__file__).parent + server_command = str(Path.cwd() / ".venv" / "bin" / "python") + server_args = [str(script_dir / "mcp_server.py")] + cwd = Path.cwd() + + client = SimpleMCPClient(server_command, server_args, cwd) + + try: + # Start server + await client.start_server() + + # Initialize connection + print("\n📋 Step 1: Initialize MCP connection") + init_response = await client.initialize() + + # List tools + print("\n📋 Step 2: List available tools") + tools_response = await client.list_tools() + + if 'result' in tools_response: + tools = tools_response['result']['tools'] + print(f"✅ Found {len(tools)} tools:") + for tool in tools: + print(f" • {tool['name']}: {tool['description']}") + + # Test generate_inference_pipeline with missing config to verify error handling + print("\n📋 Step 3: Test generate_inference_pipeline error handling") + gen_response = await client.call_tool("generate_inference_pipeline", { + "config_file": "/nonexistent/path/config.yaml" + }) + + if 'error' in gen_response or ('result' in gen_response and gen_response['result'].get('isError')): + print("✅ generate_inference_pipeline correctly returned error for missing config") + else: + print(f"📋 generate_inference_pipeline response: {gen_response}") + + except Exception as e: + print(f"❌ Error: {e}") + import traceback + traceback.print_exc() + + finally: + await client.cleanup() + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/tools/inference_builder/mcp/test_mcp_server.py b/tools/inference_builder/mcp/test_mcp_server.py new file mode 100644 index 00000000..9847bb7b --- /dev/null +++ b/tools/inference_builder/mcp/test_mcp_server.py @@ -0,0 +1,144 @@ +import unittest +import tempfile +import os +from pathlib import Path +from types import SimpleNamespace + +from mcp_server import InferenceBuilderMCPServer +from mcp.types import CallToolRequest, CallToolRequestParams + + +class MCPServerTests(unittest.IsolatedAsyncioTestCase): + async def asyncSetUp(self): + self.server = InferenceBuilderMCPServer() + + async def test_list_tools_contains_expected(self): + # Our server ignores the request payload; pass None + result = await self.server.list_tools(None) + tool_names = {t.name for t in result.tools} + self.assertIn("generate_inference_pipeline", tool_names) + self.assertIn("build_docker_image", tool_names) + self.assertIn("generate_nvinfer_config", tool_names) + + async def test_call_unknown_tool(self): + params = CallToolRequestParams(name="does_not_exist", arguments={}) + req = CallToolRequest(params=params) + res = await self.server.call_tool(req) + self.assertTrue(res.isError) + self.assertIn("Unknown tool", res.content[0].text) + + async def test_generate_deepstream_nvinfer_config(self): + """Test generating a DeepStream nvinfer config file""" + with tempfile.TemporaryDirectory() as tmpdir: + output_path = os.path.join(tmpdir, "nvdsinfer_config.yaml") + + params = CallToolRequestParams( + name="generate_nvinfer_config", + arguments={ + "output_path": output_path, + "onnx_file": "test_model.onnx", + "network_type": 0, # detection + "input_dims": "3;640;640", + "label_file": "labels.txt", + "precision_mode": 2, # FP16 + "num_classes": 80, + "custom_lib_path": "/opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so" + } + ) + req = CallToolRequest(params=params) + res = await self.server.call_tool(req) + + # Check that the call was successful + self.assertFalse(res.isError, f"Tool call failed: {res.content[0].text if res.content else 'No content'}") + + # Check that the file was created + self.assertTrue(os.path.exists(output_path), f"Config file was not created at {output_path}") + + # Check file contents + with open(output_path, 'r') as f: + content = f.read() + self.assertIn("onnx-file: test_model.onnx", content) + self.assertIn("network-type: 0", content) + self.assertIn("network-mode: 2", content) + self.assertIn("infer-dims: 3;640;640", content) + self.assertIn("num-detected-classes: 80", content) + + async def test_generate_deepstream_nvinfer_config_invalid_network_type(self): + """Test that invalid network type is rejected""" + with tempfile.TemporaryDirectory() as tmpdir: + output_path = os.path.join(tmpdir, "nvdsinfer_config.yaml") + + params = CallToolRequestParams( + name="generate_nvinfer_config", + arguments={ + "output_path": output_path, + "onnx_file": "test_model.onnx", + "network_type": 99, # invalid + "input_dims": "3;640;640", + "label_file": "labels.txt" + } + ) + req = CallToolRequest(params=params) + res = await self.server.call_tool(req) + + # Check that the call failed + self.assertTrue(res.isError) + self.assertIn("Invalid network_type", res.content[0].text) + + async def test_generate_deepstream_nvinfer_config_invalid_dims(self): + """Test that invalid input dimensions are rejected""" + with tempfile.TemporaryDirectory() as tmpdir: + output_path = os.path.join(tmpdir, "nvdsinfer_config.yaml") + + params = CallToolRequestParams( + name="generate_nvinfer_config", + arguments={ + "output_path": output_path, + "onnx_file": "test_model.onnx", + "network_type": 0, + "input_dims": "3;640", # invalid - missing dimension + "label_file": "labels.txt" + } + ) + req = CallToolRequest(params=params) + res = await self.server.call_tool(req) + + # Check that the call failed + self.assertTrue(res.isError) + self.assertIn("Invalid input_dims format", res.content[0].text) + + async def test_generate_deepstream_nvinfer_config_with_output_tensor_meta(self): + """Test generating config with output-tensor-meta parameter""" + with tempfile.TemporaryDirectory() as tmpdir: + output_path = os.path.join(tmpdir, "nvdsinfer_config.yaml") + + params = CallToolRequestParams( + name="generate_nvinfer_config", + arguments={ + "output_path": output_path, + "onnx_file": "custom_model.onnx", + "network_type": 0, # detection + "input_dims": "3;640;640", + "label_file": "labels.txt", + "precision_mode": 2, + "num_classes": 80, + "output_tensor_meta": 1 # Output raw tensors in DS META format + } + ) + req = CallToolRequest(params=params) + res = await self.server.call_tool(req) + + # Check that the call was successful + self.assertFalse(res.isError, f"Tool call failed: {res.content[0].text if res.content else 'No content'}") + + # Check that the file was created + self.assertTrue(os.path.exists(output_path), f"Config file was not created at {output_path}") + + # Check file contents + with open(output_path, 'r') as f: + content = f.read() + self.assertIn("output-tensor-meta: 1", content) + self.assertIn("onnx-file: custom_model.onnx", content) + +if __name__ == "__main__": + unittest.main() diff --git a/tools/inference_builder/overview.png b/tools/inference_builder/overview.png new file mode 100644 index 0000000000000000000000000000000000000000..608fd1fa0c119f7cb13d2a13182cc86b997d1c7c GIT binary patch literal 81445 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%0Ab%gwYk8p$V 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­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 QICnUqYk0Ik+xF^z0q83P?EnA( literal 0 HcmV?d00001 diff --git a/tools/inference_builder/doc/assets/inference_flow.png b/tools/inference_builder/doc/assets/inference_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c4900fef315fb43c4fa808fe6795c3b69e62ba GIT binary patch literal 500165 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�Ea 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 z zJ|=|FCTx6u#WU$XHtseBWi_a8o@;4^>gjyxn=)|Qd#!qxwncgnDZ5tq z*8g zyAe{BMio{;`rtmYA;d7<=G9jqw}I8etS4YaR)@YqJW6w!6sS9T4O;V9Zj-FS&0e*> zVp2LxsDU(pe_da{nk>dnm)#UO_tw~P4lKX-{VcNz7B`qGCYgEzIo^A$d#-|WUmWoZ zPDWRpKqDR){2JXDZQE@xOBS1YWW1;>1TqPRnF=~6@wx^E6m~OJ5z>&ZSn9k;;sj

MV_HuFm<@&Nv$m}Oc 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.20.0 +mcp>=1.0.0 diff --git a/tools/inference_builder/schemas/ARCHITECTURE.md b/tools/inference_builder/schemas/ARCHITECTURE.md new file mode 100644 index 00000000..e823c64b --- /dev/null +++ b/tools/inference_builder/schemas/ARCHITECTURE.md @@ -0,0 +1,244 @@ +# Schema Architecture + +This document describes the unified schema architecture for the Inference Builder. + +## Design Principles + +1. **DRY (Don't Repeat Yourself)**: Common structures are defined once in base schemas +2. **Composition over Inheritance**: Use JSON Schema's `allOf` to compose schemas +3. **Separation of Concerns**: Backend logic is separate from parameter validation +4. **Extensibility**: Easy to add new backends without duplicating code + +## Schema Hierarchy + +``` +┌─────────────────────────────────────────────────────────────┐ +│ config.schema.json │ +│ (Top-level configuration) │ +│ ┌───────────────────────────────────────────────────────┐ │ +│ │ - name, model_repo │ │ +│ │ - input[], output[] │ │ +│ │ - server (responders) │ │ +│ │ - models[] ←──────────────────────────────────┐ │ │ +│ │ - routes │ │ │ +│ └────────────────────────────────────────────────│─────┘ │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ + ┌────────────────────────────────────────┐ + │ common/base-model.schema.json │ + │ (Base Model Structure) │ + │ ┌──────────────────────────────────┐ │ + │ │ - name │ │ + │ │ - backend │ │ + │ │ - max_batch_size │ │ + │ │ - input[] │ │ + │ │ - output[] │ │ + │ │ - parameters (generic) │ │ + │ │ - preprocessors[] │ │ + │ │ - postprocessors[] │ │ + │ └──────────────────────────────────┘ │ + └────────────────────────────────────────┘ + │ + ┌───────────────┴───────────────┐ + │ allOf Composition │ + │ │ + ┌───────────▼──────────┐ ┌────────────▼───────────┐ + │ Backend Schemas │ │ Parameter Schemas │ + │ (backends/*.json) │ │ (parameters/*.json) │ + │ │ │ │ + │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ + │ │ deepstream.json ├─┼──────┼→│ deepstream-params │ │ + │ └──────────────────┘ │ │ └────────────────────┘ │ + │ │ │ │ + │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ + │ │ triton.json ├─┼──────┼→│ triton-params │ │ + │ └──────────────────┘ │ │ └────────────────────┘ │ + │ │ │ │ + │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ + │ │ vllm.json ├─┼──────┼→│ vllm-params │ │ + │ └──────────────────┘ │ │ └────────────────────┘ │ + │ │ │ │ + │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ + │ │ tensorrtllm.json ├─┼──────┼→│ tensorrtllm-params │ │ + │ └──────────────────┘ │ │ └────────────────────┘ │ + │ │ │ │ + │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ + │ │ polygraphy.json ├─┼──────┼→│ polygraphy-params │ │ + │ └──────────────────┘ │ │ └────────────────────┘ │ + │ │ │ │ + │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ + │ │ dummy.json ├─┼──────┼→│ dummy-params │ │ + │ └──────────────────┘ │ │ └────────────────────┘ │ + └──────────────────────┘ └────────────────────────┘ +``` + +## Schema Composition Example + +### DeepStream Backend + +The DeepStream backend schema is composed as follows: + +```json +{ + "allOf": [ + { + "$ref": "../common/base-model.schema.json" // Inherit common structure + }, + { + "properties": { + "backend": { + "enum": ["deepstream/nvinfer"] // Restrict backend type + }, + "parameters": { + "$ref": "parameters/deepstream-parameters.schema.json" // Specific params + } + } + } + ] +} +``` + +This composition means: +- ✅ The model **must have** all fields from `base-model.schema.json` (name, backend, input, output, etc.) +- ✅ The `backend` field **must be** `"deepstream/nvinfer"` +- ✅ The `parameters` field **must validate** against `deepstream-parameters.schema.json` + +## Benefits of This Architecture + +### 1. Maintainability +- **Single source of truth**: Common fields defined once in `base-model.schema.json` +- **Easy updates**: Change base schema → all backends updated +- **Clear ownership**: Parameters are isolated in their own files + +### 2. Consistency +- **Guaranteed structure**: All backends share the same base structure +- **Type safety**: Common types defined in `definitions.schema.json` +- **Validation rules**: Consistent validation across all backends + +### 3. Extensibility +- **Add new backend**: Create 2 files (backend schema + parameters) +- **No duplication**: Reuse base model schema via `allOf` +- **Clear pattern**: Follow existing backend schemas + +### 4. Developer Experience +- **Better IDE support**: $ref resolution provides autocomplete +- **Clear documentation**: Each parameter schema documents its options +- **Validation messages**: Precise error messages point to exact issues + +## Adding a New Backend + +To add a new backend (e.g., `onnxruntime`): + +1. **Create parameter schema**: `backends/parameters/onnxruntime-parameters.schema.json` + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/onnxruntime-parameters.schema.json", + "title": "ONNX Runtime Backend Parameters", + "type": "object", + "properties": { + "execution_providers": { + "type": "array", + "items": {"type": "string"} + }, + "graph_optimization_level": { + "type": "string", + "enum": ["basic", "extended", "all"] + } + } + } + ``` + +2. **Create backend schema**: `backends/onnxruntime.schema.json` + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/onnxruntime.schema.json", + "title": "ONNX Runtime Backend Configuration", + "allOf": [ + {"$ref": "../common/base-model.schema.json"}, + { + "properties": { + "backend": { + "const": "onnxruntime" + }, + "parameters": { + "$ref": "parameters/onnxruntime-parameters.schema.json" + } + } + } + ] + } + ``` + +3. **Update definitions**: Add `"onnxruntime"` to `common/definitions.schema.json#/definitions/backendTypes` + +4. **Update index**: Add entry to `index.json` + +That's it! No need to duplicate input/output/preprocessor definitions. + +## Schema References + +### Internal References (within a schema) +```json +"$ref": "#/definitions/tensorSpec" +``` + +### External References (to other schemas) +```json +"$ref": "../common/base-model.schema.json" +"$ref": "parameters/deepstream-parameters.schema.json" +"$ref": "definitions.schema.json#/definitions/dataTypes" +``` + +### GitHub URL References (for public access) +```json +"$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/config.schema.json" +``` + +## Validation Flow + +``` +User YAML Config + ↓ +config.schema.json (validates top-level) + ↓ +models[] → base-model.schema.json (validates common fields) + ↓ +backend type check → specific backend schema + ↓ +parameters validation → backend-specific parameter schema + ↓ +✓ Valid Configuration +``` + +## Testing Schemas + +### Using the validation script: +```bash +python schemas/validate_config.py builder/samples/vllm/vllm_cosmos.yaml +``` + +### Using Python directly: +```python +import json +import yaml +from jsonschema import validate + +with open('schemas/config.schema.json') as f: + schema = json.load(f) + +with open('builder/samples/vllm/vllm_cosmos.yaml') as f: + config = yaml.safe_load(f) + +validate(instance=config, schema=schema) +``` + +## Future Enhancements + +1. **Conditional validation**: Use `if/then/else` to validate parameters based on backend type +2. **oneOf for backend selection**: Automatically select parameter schema based on backend +3. **Custom formats**: Define custom string formats for paths, URIs, etc. +4. **Schema versioning**: Support multiple schema versions for backward compatibility + diff --git a/tools/inference_builder/schemas/README.md b/tools/inference_builder/schemas/README.md new file mode 100644 index 00000000..c482ac1a --- /dev/null +++ b/tools/inference_builder/schemas/README.md @@ -0,0 +1,686 @@ +# Inference Builder JSON Schemas + +This directory contains JSON Schema definitions for NVIDIA Inference Builder YAML configurations. These schemas provide validation, autocompletion, and documentation for creating inference pipeline configurations. + +## Overview + +The Inference Builder allows you to create inference pipelines with various backends such as DeepStream, TensorRT, Triton, TensorRT-LLM, vLLM, etc. These schemas help validate your configuration files and provide IDE support. + +## Schema Organization + +``` +schemas/ +├── config.schema.json # Main configuration schema +├── backends/ # Backend-specific schemas +│ ├── deepstream.schema.json # DeepStream backend +│ ├── triton.schema.json # Triton backend +│ ├── vllm.schema.json # vLLM backend +│ ├── tensorrtllm.schema.json # TensorRT-LLM backend +│ ├── polygraphy.schema.json # Polygraphy backend +│ ├── dummy.schema.json # Dummy backend +│ └── parameters/ # Backend-specific parameters +│ ├── deepstream-parameters.schema.json +│ ├── triton-parameters.schema.json +│ ├── vllm-parameters.schema.json +│ ├── tensorrtllm-parameters.schema.json +│ ├── polygraphy-parameters.schema.json +│ └── dummy-parameters.schema.json +├── common/ # Common definitions +│ ├── base-model.schema.json # Base model schema (shared structure) +│ ├── definitions.schema.json # Shared type definitions +│ ├── preprocessors.schema.json # Preprocessor schemas +│ └── postprocessors.schema.json # Postprocessor schemas +└── README.md # This file +``` + +### Schema Composition + +The schemas use JSON Schema's composition features for better maintainability: + +- **Base Model Schema** (`common/base-model.schema.json`): Defines the common structure shared by all backends (name, backend, input, output, max_batch_size, preprocessors, postprocessors) +- **Backend Schemas** (`backends/*.schema.json`): Extend the base model using `allOf` and specify which backend types are valid +- **Parameter Schemas** (`backends/parameters/*.schema.json`): Define backend-specific parameters with validation rules + +This approach: +- ✅ Eliminates duplication across backend schemas +- ✅ Ensures consistency in common fields +- ✅ Makes it easy to add new backends +- ✅ Provides clear validation for backend-specific options + +## Main Configuration Schema + +The main schema (`config.schema.json`) defines the structure of inference builder configuration files: + +### Required Fields + +- `name`: String identifier for the microservice +- `model_repo`: Path to the directory containing model files +- `models`: Array of model specifications (at least one required) + +### Optional Fields + +- `input`: Array of input tensor specifications (required when pipeline includes multiple models or when inputs use custom types) +- `output`: Array of output tensor specifications (required when pipeline includes multiple models or when outputs use custom types) +- `server`: Server configuration including responders (not required for serverless) +- `routes`: Route map for tensor flow between models (required for multi-model pipelines) +- `postprocessors`: Top-level postprocessors (for consolidating outputs from multiple models) + +### Example Configuration + +```yaml +name: "my_service" +model_repo: "/workspace/model-repo" + +input: + - name: "text" + data_type: TYPE_STRING + dims: [-1] + - name: "images" + data_type: TYPE_CUSTOM_IMAGE_BASE64 + dims: [-1] + optional: true + +output: + - name: "output" + data_type: TYPE_FP32 + dims: [-1, -1, -1] + +models: + - name: "my_model" + backend: "triton/tensorrt" + max_batch_size: 1 + input: + - name: "input0" + data_type: TYPE_FP32 + dims: [3, 768, 768] + output: + - name: "output0" + data_type: TYPE_FP32 + dims: [10, 768, 768] +``` + +## Backend-Specific Schemas + +### DeepStream Backend + +**Files**: +- Schema: `backends/deepstream.schema.json` +- Parameters: `backends/parameters/deepstream-parameters.schema.json` + +Used for DeepStream-based inference pipelines. + +**Backend Type**: `deepstream/nvinfer` + +**Parameters** (defined in `deepstream-parameters.schema.json`): +- `infer_config_path`: Array of paths to DeepStream nvinfer runtime configuration files (required). The configuration file typically accompanies the ONNX model from NGC as a YAML or TXT file - always prefer using this provided configuration when available. If no configuration file is provided with the model, one must be created based on the model architecture, inference implementation details, and post-processing approaches. +- `preprocess_config_path`: Array of paths to nvdspreprocess configuration files (optional) +- `batch_timeout`: Timeout in microseconds for batching multiple inputs +- `inference_timeout`: Inference timeout in seconds +- `tracker_config`: Configuration for object tracking +- `msgbroker_config`: Configuration for message broker integration +- `render_config`: Configuration for rendering and display +- `perf_config`: Performance monitoring configuration +- `kitti_output_path`: Paths for KITTI format output dumps + +**Example**: +```yaml +models: + - name: tao + backend: deepstream/nvinfer + max_batch_size: 1 + parameters: + infer_config_path: + - nvdsinfer_config.yaml + preprocess_config_path: + - nvdspreprocess_config.yaml + batch_timeout: -1 + inference_timeout: 5 +``` + +### Triton Backend + +**Files**: +- Schema: `backends/triton.schema.json` +- Parameters: `backends/parameters/triton-parameters.schema.json` + +Used for Triton Inference Server with various frameworks. + +**Backend Types**: +- `triton/python` +- `triton/tensorrt` +- `triton/onnx` +- `triton/pytorch` + +**Parameters**: +Triton backend parameters are intentionally open and backend-specific. All parameters are converted to `string_value` in the generated `config.pbtxt` file as defined in Triton's ModelConfig protobuf schema ([model_config.proto](https://github.com/triton-inference-server/common/blob/main/protobuf/model_config.proto)). + +Common parameters include: +- `FORCE_CPU_ONLY_INPUT_TENSORS`: Controls whether input tensors are kept on GPU or copied to CPU (Triton Python backend). Set to `"no"` to keep tensors on GPU for better performance. +- Backend-specific parameters (e.g., TensorRT engine paths, ONNX model paths, etc.) + +For complete parameter documentation, refer to the [Triton Model Configuration documentation](https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/user_guide/model_configuration.html). + +**Example**: +```yaml +models: + - name: visual_changenet + backend: "triton/tensorrt" + max_batch_size: 1 + parameters: + FORCE_CPU_ONLY_INPUT_TENSORS: "no" +``` + +### vLLM Backend + +**File**: `backends/vllm.schema.json` + +Used for vLLM-based large language model inference. + +**Backend Type**: `vllm` + +**Key Parameters**: +- `max_num_tokens`: Maximum number of tokens +- `async_mode`: Enable asynchronous mode +- `gpu_memory_utilization`: GPU memory utilization (0.0 to 1.0) +- `tensor_parallel_size`: Number of GPUs for tensor parallelism + +**Example**: +```yaml +models: + - name: "Cosmos" + backend: "vllm" + parameters: + max_num_tokens: 19200 + async_mode: true +``` + +### TensorRT-LLM Backend + +**File**: `backends/tensorrtllm.schema.json` + +Used for TensorRT-LLM inference with optional PyTorch fallback. + +**Backend Types**: +- `tensorrtllm` +- `tensorrtllm/pytorch` + +**Key Parameters**: +- `max_num_tokens`: Maximum number of tokens +- `kv_cache_config`: KV cache configuration + - `enable_block_reuse`: Enable KV cache block reuse +- `decoding_config`: Decoding configuration + +**Example**: +```yaml +models: + - name: "Qwen2.5-VL" + backend: "tensorrtllm/pytorch" + parameters: + max_num_tokens: 19200 + kv_cache_config: + enable_block_reuse: false +``` + +### Polygraphy Backend + +**File**: `backends/polygraphy.schema.json` + +Used for TensorRT inference via Polygraphy. + +**Backend Type**: `polygraphy` + +**Key Parameters**: +- `tensorrt_engine`: Path to TensorRT engine file (required) +- `precision`: Inference precision (fp32, fp16, int8) + +**Example**: +```yaml +models: + - name: nvclip_text + backend: "polygraphy" + max_batch_size: 64 + parameters: + tensorrt_engine: "model.plan" +``` + +## Data Types + +The following data types are supported: + +### Numeric Types +- `TYPE_BOOL`, `TYPE_UINT8`, `TYPE_UINT16`, `TYPE_UINT32`, `TYPE_UINT64` +- `TYPE_INT8`, `TYPE_INT16`, `TYPE_INT32`, `TYPE_INT64` +- `TYPE_FP16`, `TYPE_FP32`, `TYPE_FP64` + +### Basic Types +- `TYPE_STRING`: String data + +### Custom Types +- `TYPE_CUSTOM_IMAGE_BASE64`: Base64-encoded JPEG/PNG image data as a data URI string. Each element must follow the format `data:image/{format};base64,{payload}` where `{format}` is `jpeg`, `jpg`, or `png`, and `{payload}` is the base64-encoded image bytes. This type is mapped to `TYPE_STRING` in Triton and arrives as a list of strings. When used as a top-level input, it creates an `ImageInputDataFlow` that parses the data URI prefix to determine the image format, decodes the base64 payload into raw bytes, and decodes the image using a hardware-accelerated DeepStream pipeline (`nvjpegdec`/`pngdec`) to produce RGB `uint8` image tensors in HWC layout `[H, W, 3]` on GPU at the original image resolution. These decoded tensors are then passed to downstream models. When used for an output, image tensors are encoded into a base64 string. +- `TYPE_CUSTOM_IMAGE_ASSETS`: Image asset identifiers (file paths, URLs, or asset IDs) referring to JPEG/PNG images. When used as a top-level input, it creates an `ImageInputDataFlow` that loads and decodes the referenced images into image tensors before they are passed to downstream models. +- `TYPE_CUSTOM_LONG_VIDEO_ASSETS`: Video asset identifiers for **long videos and live streams requiring temporal chunking**. Particularly suitable for: (1) **live streams** such as RTSP feeds that need continuous processing in chunks, (2) long video files that should be split into temporal segments, (3) scenarios where frames need to be delivered in multiple batches over time. Supports file paths, URLs, RTSP streams, or asset IDs, with query parameters such as `?frames=N&interval=INTERVAL_NSEC&chunks=M&scale=WIDTHxHEIGHT`. When used as a top-level input, it creates a `VideoInputDataFlow` that asynchronously extracts frames in chunks, with each chunk containing N frames sampled at the specified interval. Results are delivered via a queue as they become available, enabling streaming processing. Processing always starts from the beginning of the video or live stream. Use `TYPE_CUSTOM_VIDEO_CHUNK_ASSETS` instead for short videos that fit in a single batch without temporal chunking, or when you need to specify a start position. Supported query parameters: + - `frames`: (Required) Number of frames to sample per chunk. + - `interval`: (Required) Time interval between frames in nanoseconds (e.g., `100*1e6` for 100ms between frames). + - `chunks`: (Optional) Maximum number of chunks to yield before stopping. Useful for RTSP streams that don't have a natural end-of-stream. + - `scale`: (Optional) Target resolution for frame scaling in format `WIDTHxHEIGHT` (e.g., `scale=640x360`). When specified, all extracted frames are resized to the target resolution. This is useful for reducing memory usage and inference time when processing high-resolution video streams. All assets in a batch must use the same scale value. +- `TYPE_CUSTOM_VIDEO_CHUNK_ASSETS`: Video asset identifiers for **short videos requiring simple frame sampling without temporal chunking**. Use this type when: + 1. Processing short video clips that fit in memory as a single batch + 2. Extracting a fixed number of frames from a specific video segment + 3. Simple uniform frame sampling from a video duration is needed + + Supports file paths, URLs, or asset IDs, with query parameters such as `?frames=N&start=START_NSEC&duration=DURATION_NSEC`. When used as a top-level input, it creates a `VideoFrameSamplingDataFlow` that asynchronously extracts exactly N frames evenly distributed over the specified duration (interval is automatically calculated as duration/frames), decodes them, and produces a single frame batch delivered via queue. The result is one batch containing all requested frames. For long videos or live streams requiring temporal chunking and streaming delivery of multiple batches over time, use `TYPE_CUSTOM_LONG_VIDEO_ASSETS` instead. Supported query parameters: + - `frames`: (Required) Number of frames to sample. + - `start`: (Optional) Start timestamp in nanoseconds (default 0). + - `duration`: (Optional) Duration to sample from in nanoseconds (defaults to entire video). +- `TYPE_CUSTOM_BINARY_BASE64`: Base64-encoded binary data. For inputs, the strings are automatically decoded into uint8 tensors before being passed downstream. For outputs, binary tensors are base64-encoded into strings. +- `TYPE_CUSTOM_LIST`: Converts the input values into a list, which implies explicit batching of the input data. Use this for non-DS inputs that need list conversion (e.g., video URLs for VLM models). +- `TYPE_CUSTOM_DS_MEDIA_URL`: DeepStream media URL input. A string URL (file path or remote URL) pointing to an image or video for DeepStream pipeline processing. Unlike `TYPE_CUSTOM_LIST`, this type follows the implicit batch path and is recognized by the DeepStream backend as a media source. Must be paired with a `TYPE_CUSTOM_DS_MIME` input. +- `TYPE_CUSTOM_VLM_INPUT`: Vision-Language Model input in dictionary form, passed through to downstream models as-is. +- `TYPE_CUSTOM_OBJECT`: Generic custom object type for complex structured data. + +### DeepStream-Specific Types + +#### TYPE_CUSTOM_DS_IMAGE +DeepStream custom type for image buffers, usable as both input and output. + +**As Input:** A 1-D uint8 tensor (or list of tensors) containing encoded JPEG/PNG image bytes that can be passed directly into DeepStream backends without additional decoding in the Python runtime. **This input must be defined in the model configuration to enable the image decoder in the DeepStream pipeline.** + +**As Output:** Extracts the decoded image frames from the DeepStream pipeline and returns them as RGB uint8 image tensors in HWC (Height, Width, Channels) layout. Each tensor has shape `[H, W, 3]` where Channels is 3 (R, G, B), representing the decoded frame at its processed resolution. + +**Example Output Usage:** +```yaml +output: + - name: "decoded_frames" + data_type: TYPE_CUSTOM_DS_IMAGE + dims: [-1, -1, 3] +``` + +#### TYPE_CUSTOM_DS_METADATA +DeepStream custom type for metadata output, containing per-frame detection, classification, and segmentation results. The output is returned as a **dictionary** with the following structure (defined in `definitions/deepstreamMetadata`): + +**Output Structure:** +```python +{ + 'shape': [height, width], # Image dimensions in pixels + 'bboxes': [[left, top, right, bottom], ...], # Bounding boxes for detected objects + 'probs': [0.95, 0.87, ...], # Confidence scores (0.0-1.0) + 'labels': [["car"], ["person"], ...], # Classification labels (multi-label support) + 'seg_maps': [array([[...]]), ...], # Segmentation maps (2D arrays) + 'objects': [1, 2, 3, ...], # Tracking IDs (when tracker enabled) + 'timestamp': 1234567890 # Buffer PTS in nanoseconds +} +``` + +**Field Details:** +- **`shape`**: Array of 2 integers `[height, width]` representing frame dimensions +- **`bboxes`**: Array of bounding boxes, each with 4 integers `[left, top, right, bottom]` in pixel coordinates +- **`probs`**: Array of confidence scores (floats between 0.0 and 1.0) +- **`labels`**: Array of arrays of label strings, enabling multi-label classification (e.g., object type and attributes) +- **`seg_maps`**: Array of 2D segmentation maps for semantic/instance segmentation (numpy arrays or lists) +- **`objects`**: Array of tracking IDs (integers) assigned by DeepStream tracker (populated only when tracker is enabled) +- **`timestamp`**: Buffer presentation timestamp in nanoseconds for temporal synchronization + +**Important**: This type requires a low-level C++ postprocessor library (e.g., `libnvds_infercustomparser_tao.so`) to be available and copied into the container image. The library can be obtained from: +1. DeepStream SDK built-in parsers +2. TAO model parsers from https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git +3. Custom user-implemented parsers + +Without such a library, use regular tensor output types (`TYPE_FP32`, etc.) with Python postprocessors instead. + +**Example Usage in Response Templates:** +```yaml +responses: + InferenceResponse: > + { + "data": [ + {% for item in response.output %} { + "shape": {{item['shape']}}, + "bboxes": {{item['bboxes']}}, + "probs": {{item['probs']}}, + "labels": {{item['labels']|tojson}}, + "masks": {{item['seg_maps']}}, + "timestamp": {{item['timestamp']}} + } {% if not loop.last %}, {% endif %} {% endfor %} + ] + } +``` + +#### TYPE_CUSTOM_DS_MIME +DeepStream custom type for MIME type string (for example, `image/jpeg` or `image/png`) describing the associated DeepStream image or media buffers. Required alongside `TYPE_CUSTOM_DS_IMAGE` or `TYPE_CUSTOM_DS_MEDIA_URL` inputs so the DeepStream pipeline can select the appropriate decoder. + +#### TYPE_CUSTOM_DS_SOURCE_CONFIG +DeepStream custom type for path to a YAML source configuration file. When used as a model input, consider using it when sources such as live streams are dynamically added and removed. + +## Preprocessors and Postprocessors + +Processors transform data at different stages of the inference pipeline. Preprocessors operate before model inference, while postprocessors operate after. + +**Base Schema**: `common/base-processor.schema.json` +**Preprocessor Schema**: `common/preprocessors.schema.json` +**Postprocessor Schema**: `common/postprocessors.schema.json` + +### Data Flow and Processor Interface + +Processors follow a standard interface pattern where data flows through dictionaries: + +**Input Flow**: +1. Upstream data (from model outputs, top-level inputs, or previous processors) is provided as a dictionary +2. The processor's `input` field specifies keys to extract from this dictionary, in order +3. Extracted values are passed as positional arguments to the processor's `__call__` method + +**Output Flow**: +1. The processor's `__call__` method returns a tuple +2. The tuple length must match the length of the `output` field +3. Returned values are mapped to output names to form a dictionary for downstream consumption + +**Example Flow**: +```python +# Upstream data dictionary +upstream = { + 'image': , + 'text': , + 'metadata': +} + +# Processor configuration +processor = { + 'input': ['text', 'image'], # Extract in this order + 'output': ['tokens', 'pixels'] # Map results to these names +} + +# Processor invocation +result = processor.__call__(upstream['text'], upstream['image']) +# result = (, ) + +# Downstream receives +downstream = { + 'tokens': , + 'pixels': +} +``` + +### Preprocessors + +**File**: `common/preprocessors.schema.json` + +Preprocessors transform input data before model inference. They typically handle tasks like: +- Image normalization and resizing +- Text tokenization +- Data format conversions +- Feature extraction + +**Required Fields**: +- `kind`: Processor type (`"custom"` or `"builtin"`) +- `name`: Unique identifier for the processor; should match the `name` attribute defined within the processor class +- `input`: Array of input tensor names (extracted from upstream data) +- `output`: Array of output tensor names (mapped to returned tuple) +- `config`: Optional processor-specific configuration + +**Example**: +```yaml +preprocessors: + - kind: "custom" + name: "image-normalizer" + input: ["raw_image"] # Extract 'raw_image' from upstream + output: ["normalized_image"] # Return maps to 'normalized_image' + config: + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] +``` + +**Corresponding Python Implementation**: +```python +class ImageNormalizer: + name = "image-normalizer" + + def __init__(self, config): + self.mean = config['mean'] + self.std = config['std'] + + def __call__(self, raw_image): + # Process the input + normalized = (raw_image - self.mean) / self.std + # Return tuple matching output length + return (normalized,) +``` + +### Postprocessors + +**File**: `common/postprocessors.schema.json` + +Postprocessors transform model outputs after inference. They typically handle tasks like: +- Output decoding +- Masking and filtering +- Embedding normalization +- Result formatting + +**Required Fields**: Same as preprocessors + +**Example**: +```yaml +postprocessors: + - kind: "custom" + name: "detection-decoder" + input: ["boxes", "scores", "classes"] # Extract from model outputs + output: ["detections"] # Return as single output + config: + confidence_threshold: 0.5 + max_detections: 100 +``` + +**Corresponding Python Implementation**: +```python +class DetectionDecoder: + name = "detection-decoder" + + def __init__(self, config): + self.threshold = config['confidence_threshold'] + self.max_detections = config['max_detections'] + + def __call__(self, boxes, scores, classes): + # Process three inputs + mask = scores > self.threshold + filtered_boxes = boxes[mask][:self.max_detections] + filtered_scores = scores[mask][:self.max_detections] + filtered_classes = classes[mask][:self.max_detections] + + detections = { + 'boxes': filtered_boxes, + 'scores': filtered_scores, + 'classes': filtered_classes + } + # Return tuple with one element + return (detections,) +``` + +### Multi-Input, Multi-Output Example + +Processors can handle multiple inputs and outputs: + +```yaml +preprocessors: + - kind: "custom" + name: "dual-stream-processor" + input: ["reference_image", "test_image", "threshold"] + output: ["ref_features", "test_features"] + config: + feature_dim: 256 +``` + +```python +class DualStreamProcessor: + name = "dual-stream-processor" + + def __init__(self, config): + self.feature_dim = config['feature_dim'] + + def __call__(self, reference_image, test_image, threshold): + # Process inputs (receives 3 arguments in order) + ref_features = self.extract_features(reference_image) + test_features = self.extract_features(test_image) + + # Apply threshold + ref_features = ref_features * (ref_features > threshold) + test_features = test_features * (test_features > threshold) + + # Return tuple matching output length (2 elements) + return (ref_features, test_features) +``` + +## Server Configuration + +The server section defines how the inference service handles requests and responses. + +### Responders + +Responders map API operations to request/response transformations using Jinja2 templates. + +**Available Responder Keys** (must match templates in `templates/responder/`): + +| Responder | Description | Input | Output | +|-----------|-------------|-------|--------| +| `infer` | Primary inference endpoint. Handles model inference requests. Supports streaming responses with `Accept: application/x-ndjson` header. | Top-level pipeline inputs (as defined in config `input` section) | Top-level pipeline outputs (as defined in config `output` section) | +| `add_file` | File upload responder. Adds files to the asset store for later processing. | Multipart file upload (file object with `filename` and `content_type`) | Asset dict: `id`, `file_name`, `content_type`, `created_at` | +| `del_file` | File deletion responder. Removes files from the asset store. | `asset_id` (string, from path parameter) | `status` (boolean, deletion success) | +| `list_files` | File listing responder. Returns a list of files in the asset store. | None | `assets` (array of asset objects with `id`, `file_name`, `content_type`, `created_at`) | +| `add_live_stream` | Live stream addition responder. Registers a new RTSP or video stream for processing. | `url` (string, required), `description` (string, optional), `username` (string, optional), `password` (string, optional) | Asset dict: `id`, `url`, `description`, `created_at` | +| `del_live_stream` | Live stream removal responder. Stops and removes a registered live stream. | `asset_id` (string, from path parameter) | `status` (boolean, deletion success) | +| `list_live_streams` | Live stream listing responder. Returns all registered live streams. | None | `assets` (array of stream asset objects with `id`, `url`, `description`, `created_at`) | +| `healthy_ready` | Health check responder. Reports service health and readiness status. No request/response template mapping needed. | None | HTTP 200 with "Ready" or HTTP 503 with "Service Unavailable" | + +**Request/Response Template Mapping**: + +- **`requests`**: Jinja2 templates to map HTTP request body to responder inputs. Keys are **OpenAPI request schema/class names** (e.g., `InferenceRequest`, `AddLiveStreamRequest`), values are Jinja2 templates that transform the incoming `request` object into a JSON structure matching the responder's expected inputs. + +- **`responses`**: Jinja2 templates to map responder outputs to HTTP response body. Keys are **OpenAPI response schema/class names** (e.g., `InferenceResponse`, `AddFileResponse`), values are Jinja2 templates that transform the `response` object from the responder into the desired HTTP response JSON structure. + +**Common Operations** (values for the `operation` field): +- `inference`: General inference operation +- `create_chat_completion_v1_chat_completions_post`: Chat completion for LLMs +- `create_embedding`: Embedding generation +- `add_media_file`, `delete_media_file`, `list_media_files`: Media file management +- `add_live_stream`, `delete_live_stream`, `list_live_streams`: Live stream management +- `health_ready_v1_health_ready_get`: Health check + +See [RESPONDERS.md](RESPONDERS.md) for complete documentation. + +**Example**: +```yaml +server: + responders: + infer: + operation: inference + requests: + InferenceRequest: > + { + "images": [{{ request.input[0]|tojson }}] + } + responses: + InferenceResponse: > + { + "data": {{ response.output|tojson }}, + "model": "my-model" + } +``` + +## Routes + +Routes define the flow of tensors between models in multi-model pipelines. + +**Format**: `: : :` + +- Source/destination can be model names or `:` for top-level +- Tensor list is optional: `["tensor1", "tensor2"]` + +**Example**: +```yaml +routes: + ':["reference_image", "test_image"]': 'visual_changenet' + 'visual_changenet:["output_final"]': ':["output"]' +``` + +## Using the Schemas + +### In VS Code + +Add to your workspace settings (`.vscode/settings.json`): + +```json +{ + "yaml.schemas": { + "./schemas/config.schema.json": "*.yaml" + } +} +``` + +Or use the GitHub URL for the latest schema: + +```json +{ + "yaml.schemas": { + "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/config.schema.json": "*.yaml" + } +} +``` + +### With YAML Language Server + +Add to your `.yaml-language-server.json`: + +```json +{ + "yaml.schemas": { + "file:///path/to/schemas/config.schema.json": "/*.yaml" + } +} +``` + +### Validation with Python + +```python +import json +import yaml +from jsonschema import validate + +# Load schema +with open('schemas/config.schema.json') as f: + schema = json.load(f) + +# Load and validate config +with open('config.yaml') as f: + config = yaml.safe_load(f) + +validate(instance=config, schema=schema) +``` + +## Examples + +See the `builder/samples/` directory for complete examples of configurations for different backends: + +- `builder/samples/dummy/dummy.yaml` - Dummy backend example +- `builder/samples/vllm/vllm_cosmos.yaml` - vLLM backend example +- `builder/samples/qwen/trtllm_qwen.yaml` - TensorRT-LLM backend example +- `builder/samples/tao/ds_tao.yaml` - DeepStream backend example +- `builder/samples/changenet/trt_changenet.yaml` - Triton/TensorRT backend example +- `builder/samples/nvclip/tensorrt_nvclip.yaml` - Polygraphy backend example + +## References + +- [Inference Builder Documentation](../README.md) +- [JSON Schema Specification](https://json-schema.org/) +- [YAML Language Server](https://github.com/redhat-developer/yaml-language-server) + +## Contributing + +When adding new backends or features: + +1. Update the appropriate schema files +2. Add examples to this README +3. Test with sample configurations +4. Update the `common/definitions.schema.json` if adding new types + +## License + +SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +SPDX-License-Identifier: Apache-2.0 + diff --git a/tools/inference_builder/schemas/RESPONDERS.md b/tools/inference_builder/schemas/RESPONDERS.md new file mode 100644 index 00000000..a8a61b8b --- /dev/null +++ b/tools/inference_builder/schemas/RESPONDERS.md @@ -0,0 +1,230 @@ +# Available Responders + +This document lists the available responder templates that can be used in the `server.responders` section of the configuration. + +## Overview + +Responders map API endpoints to their implementation. Each responder corresponds to a template file in `templates/responder/` and handles a specific operation. + +## Available Responder Keys + +The following keys are valid for use in `server.responders`: + +| Key | Template File | Operation | Description | +|-----|--------------|-----------|-------------| +| `infer` | `infer.jinja.py` | `inference` or chat completion | Main inference endpoint for model predictions | +| `add_file` | `add_file.jinja.py` | `add_media_file` | Upload and register a media file as an asset | +| `del_file` | `del_file.jinja.py` | `delete_media_file` | Delete a registered media file | +| `list_files` | `list_files.jinja.py` | `list_media_files` | List all registered media files | +| `add_live_stream` | `add_live_stream.jinja.py` | `add_live_stream` | Add a live stream source | +| `del_live_stream` | `del_live_stream.jinja.py` | `delete_live_stream` | Delete a live stream source | +| `list_live_streams` | `list_live_streams.jinja.py` | `list_live_streams` | List all registered live streams | +| `healthy_ready` | `healthy_ready.jinja.py` | `health_ready_v1_health_ready_get` | Health check endpoint | + +## Schema Validation + +The schema restricts responder keys to the above list using `propertyNames.enum`. Invalid responder keys will cause validation to fail: + +```yaml +server: + responders: + infer: # ✅ Valid + operation: inference + + custom_op: # ❌ Error: invalid responder key + operation: custom +``` + +**Error message**: `Property name must be one of: infer, add_file, del_file, list_files, add_live_stream, del_live_stream, list_live_streams, healthy_ready` + +## Usage Examples + +### Basic Inference + +```yaml +server: + responders: + infer: + operation: inference + requests: + InferenceRequest: > + { + "images": {{ request.input|tojson }} + } + responses: + InferenceResponse: > + { + "data": {{ response.output|tojson }}, + "model": "my-model" + } +``` + +### LLM Chat Completion + +```yaml +server: + responders: + infer: + operation: create_chat_completion_v1_chat_completions_post + requests: + NIMLLMChatCompletionRequest: > + { + "messages": {{ request.messages|tojson }}, + "max_tokens": {{ request.max_tokens }} + } + responses: + NIMLLMChatCompletionResponse: > + { + "id": "{{ request._id }}", + "choices": [...] + } +``` + +### File Management + +```yaml +server: + responders: + add_file: + operation: add_media_file + responses: + AddFileResponse: > + { + "data": { + "id": {{response.id|tojson}}, + "path": {{response.path|tojson}}, + "contentType": {{response.mime_type|tojson}} + } + } + + list_files: + operation: list_media_files + responses: + ListFilesResponse: > + { + "data": [ + {% for item in response.assets %} + { + "id": {{item.id|tojson}}, + "path": {{item.path|tojson}} + } + {% if not loop.last %}, {% endif %} + {% endfor %} + ] + } +``` + +### Health Check + +```yaml +server: + responders: + healthy_ready: + operation: health_ready_v1_health_ready_get +``` + +## Responder Configuration + +Each responder has the following structure: + +| Field | Required | Type | Description | +|-------|----------|------|-------------| +| `operation` | ✅ Yes | string | Name of the operation (must match OpenAPI spec) | +| `requests` | ❌ No | object | Request transformation templates (Jinja2) | +| `responses` | ❌ No | object | Response transformation templates (Jinja2) | + +### Request Templates + +Transform incoming API requests to the internal inference format: + +```yaml +requests: + RequestTypeName: > + { + "field1": {{ request.some_field|tojson }}, + "field2": "{{ request.another_field }}" + } +``` + +- Keys can be any string (typically match OpenAPI schema names) +- Values are Jinja2 templates +- Access request data via `request.*` variables + +### Response Templates + +Transform internal inference results to API responses: + +```yaml +responses: + ResponseTypeName: > + { + "result": {{ response.output|tojson }}, + "metadata": { + "model": "my-model" + } + } +``` + +- Keys can be any string (typically match OpenAPI schema names) +- Values are Jinja2 templates +- Access response data via `response.*` variables + +## Common Operations + +### Inference Operations + +- `inference` - General inference endpoint +- `create_chat_completion_v1_chat_completions_post` - LLM chat completion + +### Media File Operations + +- `add_media_file` - Upload media file +- `delete_media_file` - Delete media file +- `list_media_files` - List media files + +### Live Stream Operations + +- `add_live_stream` - Add live stream +- `delete_live_stream` - Delete live stream +- `list_live_streams` - List live streams + +### System Operations + +- `health_ready_v1_health_ready_get` - Health check + +## Template Implementation + +Responder templates are located in `templates/responder/`. Each template: + +1. **Receives** the processed request data +2. **Calls** the inference pipeline +3. **Returns** the formatted response + +Templates use Jinja2 syntax and have access to: +- `request` - Incoming request data +- `response` - Inference pipeline output +- Various helper filters (e.g., `tojson`, `tojinja`) + +## Adding Custom Responders + +To add a new responder: + +1. Create template file: `templates/responder/my_responder.jinja.py` +2. Implement the responder logic +3. Add `"my_responder"` to the enum in: + - `schemas/config.schema.json` (propertyNames.enum) + - `schemas/common/definitions.schema.json` (responderNames) +4. Update this documentation + +## Related Documentation + +- [Usage Guide](../../doc/usage.md) - Server configuration details +- [Architecture](../ARCHITECTURE.md) - How responders fit into the system +- [OpenAPI Specification](../../builder/samples/*/openapi.yaml) - API definitions + +## References + +- Templates: `templates/responder/*.jinja.py` +- Schema: `schemas/config.schema.json#/definitions/serverConfig` +- Common Definitions: `schemas/common/definitions.schema.json#/definitions/responderNames` + diff --git a/tools/inference_builder/schemas/backends/deepstream.schema.json b/tools/inference_builder/schemas/backends/deepstream.schema.json new file mode 100644 index 00000000..920b5464 --- /dev/null +++ b/tools/inference_builder/schemas/backends/deepstream.schema.json @@ -0,0 +1,47 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/deepstream.schema.json", + "title": "DeepStream Backend Configuration", + "description": "Schema for DeepStream backend model configuration", + "allOf": [ + { + "$ref": "../common/base-model.schema.json" + }, + { + "properties": { + "backend": { + "type": "string", + "enum": ["deepstream/nvinfer", "deepstream/nvinferserver"], + "description": "DeepStream backend type" + }, + "parameters": { + "$ref": "parameters/deepstream-parameters.schema.json" + } + } + } + ], + "examples": [ + { + "name": "tao", + "backend": "deepstream/nvinfer", + "max_batch_size": 1, + "parameters": { + "infer_config_path": ["nvdsinfer_config.yaml"] + }, + "input": [ + { + "name": "image", + "data_type": "TYPE_CUSTOM_DS_IMAGE", + "dims": [-1, -1, 3] + } + ], + "output": [ + { + "name": "output", + "data_type": "TYPE_CUSTOM_DS_METADATA", + "dims": [-1] + } + ] + } + ] +} diff --git a/tools/inference_builder/schemas/backends/dummy.schema.json b/tools/inference_builder/schemas/backends/dummy.schema.json new file mode 100644 index 00000000..8b35c6df --- /dev/null +++ b/tools/inference_builder/schemas/backends/dummy.schema.json @@ -0,0 +1,45 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/dummy.schema.json", + "title": "Dummy Backend Configuration", + "description": "Schema for dummy backend model configuration (testing)", + "allOf": [ + { + "$ref": "../common/base-model.schema.json" + }, + { + "properties": { + "backend": { + "type": "string", + "const": "dummy", + "description": "Dummy backend for testing purposes" + }, + "parameters": { + "$ref": "parameters/dummy-parameters.schema.json" + } + } + } + ], + "examples": [ + { + "name": "dummy", + "backend": "dummy", + "max_batch_size": 1, + "parameters": {}, + "input": [ + { + "name": "images", + "data_type": "TYPE_FP32", + "dims": [3, 768, 768] + } + ], + "output": [ + { + "name": "output", + "data_type": "TYPE_FP32", + "dims": [10, 10] + } + ] + } + ] +} diff --git a/tools/inference_builder/schemas/backends/parameters/deepstream-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/deepstream-parameters.schema.json new file mode 100644 index 00000000..07f6a276 --- /dev/null +++ b/tools/inference_builder/schemas/backends/parameters/deepstream-parameters.schema.json @@ -0,0 +1,207 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/deepstream-parameters.schema.json", + "title": "DeepStream Backend Parameters", + "description": "Parameter schema for DeepStream backend", + "type": "object", + "required": ["infer_config_path"], + "properties": { + "infer_config_path": { + "type": "array", + "description": "Paths (inside the model repository) to DeepStream nvinfer runtime configuration files (for example, nvdsinfer_config.yaml). These files are used by the DeepStream nvinfer plugin at runtime. **Creating or locating config files:** (1) The configuration file typically accompanies the ONNX model from the remote model repository (NGC) as a YAML or TXT file containing all required inference parameters - always prefer using this provided configuration when available. (2) If no configuration file is provided with the model, one must be created based on the model architecture, inference implementation details, and post-processing approaches specific to the model. (3) The config file must be copied into the model repository before deployment. Refer to https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvinfer.html#gst-nvinfer-file-configuration-specifications for the complete configuration specification.", + "items": { + "type": "string" + } + }, + "preprocess_config_path": { + "type": "array", + "description": "Paths (inside the model repository) to DeepStream nvdspreprocess runtime configuration files (for example, nvdspreprocess_config*.yaml). These files define preprocessing operations that run before inference and are required when non-image tensors must be injected into the pipeline. They must already be copied into the model repository before deployment. Refer to https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdspreprocess.html for more details.", + "items": { + "type": "string" + } + }, + "batch_timeout": { + "type": "integer", + "minimum": -1, + "description": "Timeout in microseconds for batching multiple inputs. Set to -1 to wait infinitely for batch formation. Default is 1000 * max_batch_size microseconds." + }, + "inference_timeout": { + "type": "integer", + "minimum": 0, + "description": "Inference timeout in seconds, absence of this field means no timeout is enforced" + }, + "tracker_config": { + "type": "object", + "description": "Configuration for object tracking, absence of this field means no tracking is required", + "required": ["ll_lib_file", "ll_config_file"], + "properties": { + "ll_lib_file": { + "type": "string", + "description": "Path to the low-level tracker library file" + }, + "ll_config_file": { + "type": "string", + "description": "Path to the low-level tracker configuration file" + }, + "width": { + "type": "integer", + "minimum": 1, + "description": "Width of the tracker processing frame", + "default": 1920 + }, + "height": { + "type": "integer", + "minimum": 1, + "description": "Height of the tracker processing frame", + "default": 1088 + }, + "display_tracking_id": { + "type": "boolean", + "description": "Whether to display tracking IDs in the output", + "default": false + } + }, + "additionalProperties": false + }, + "msgbroker_config": { + "type": "object", + "description": "Configuration for message broker integration, absence of this field means no message broker is required", + "required": ["msgbroker_proto_lib_path", "msgbroker_conn_str", "msgbroker_topic", "msgconv_config_path"], + "properties": { + "msgbroker_proto_lib_path": { + "type": "string", + "description": "Path to the message broker protocol library" + }, + "msgbroker_conn_str": { + "type": "string", + "description": "Connection string for the message broker (e.g., 'localhost;9092' for Kafka)" + }, + "msgbroker_topic": { + "type": "string", + "description": "Topic name for publishing messages" + }, + "msgconv_config_path": { + "type": "string", + "description": "Path to the message conversion configuration file, refer to https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgconv.html for more details" + }, + "msgconv_payload_type": { + "type": "integer", + "enum": [0, 1, 2], + "description": "Payload type for message conversion (0=DeepStream JSON, 1=DeepStream Minimal JSON, 2=DeepStream Protobuf)" + }, + "msgconv_msg2p_new_api": { + "type": "boolean", + "description": "Use new API which supports publishing multiple payloads using NvDsFrameMeta", + "default": false + }, + "msgconv_frame_interval": { + "type": "integer", + "minimum": 1, + "description": "Frame interval at which payload is generated (every Nth frame)", + "default": 1 + }, + "msgconv_msg2p_lib": { + "type": "string", + "description": "Path to the message converter library" + } + }, + "additionalProperties": false + }, + "render_config": { + "type": "object", + "description": "Configuration for rendering and display", + "properties": { + "enable_display": { + "type": "boolean", + "description": "Enable on-screen display", + "default": false + }, + "enable_osd": { + "type": "boolean", + "description": "Enable on-screen display overlays (bounding boxes, labels, etc.)", + "default": false + }, + "enable_stream": { + "type": "boolean", + "description": "Enable RTSP streaming output", + "default": false + }, + "rtsp_mount_point": { + "type": "string", + "description": "RTSP mount point path (e.g., '/ds_app'), not required if enable_stream is false", + "default": "/ds-test" + }, + "rtsp_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "description": "RTSP server port number, not required if enable_stream is false", + "default": 8554 + } + }, + "additionalProperties": false + }, + "perf_config": { + "type": "object", + "description": "Performance monitoring configuration", + "properties": { + "enable_fps_logs": { + "type": "boolean", + "description": "Enable FPS (frames per second) logging", + "default": false + }, + "enable_latency_logs": { + "type": "boolean", + "description": "Enable latency logging", + "default": false + } + }, + "additionalProperties": false + }, + "kitti_output_path": { + "type": "object", + "description": "Paths for KITTI format output dumps", + "properties": { + "infer": { + "type": "string", + "description": "Path for inference KITTI output" + }, + "tracker": { + "type": "string", + "description": "Path for tracker KITTI output" + } + }, + "additionalProperties": false + }, + "analytics_config": { + "type": "object", + "description": "Configuration for nvdsanalytics (ROI, line-crossing, overcrowding, direction). Absence means no analytics. Typically used after tracker. Refer to https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdsanalytics.html", + "required": ["config_file_path"], + "properties": { + "config_file_path": { + "type": "string", + "description": "Path to the analytics configuration file (YAML or TXT). Path is relative to model repository unless absolute." + }, + "gpu_id": { + "type": "integer", + "minimum": 0, + "description": "GPU device id for nvdsanalytics", + "default": 0 + } + }, + "additionalProperties": false + }, + "resize_video": { + "type": "array", + "description": "Target resolution for input stream resizing in format [height, width]. When specified, the input stream will be resized to these dimensions before processing. When tracker is being enabled, it requires a specific resolution consistent with the tracker config. In such cases, the resize_video configuration is required.", + "items": { + "type": "integer", + "minimum": 1 + }, + "minItems": 2, + "maxItems": 2 + } + }, + "additionalProperties": false +} + diff --git a/tools/inference_builder/schemas/backends/parameters/dummy-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/dummy-parameters.schema.json new file mode 100644 index 00000000..ebd75184 --- /dev/null +++ b/tools/inference_builder/schemas/backends/parameters/dummy-parameters.schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/dummy-parameters.schema.json", + "title": "Dummy Backend Parameters", + "description": "Parameter schema for dummy backend (testing)", + "type": "object", + "properties": {}, + "additionalProperties": true +} + diff --git a/tools/inference_builder/schemas/backends/parameters/polygraphy-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/polygraphy-parameters.schema.json new file mode 100644 index 00000000..e8e432f7 --- /dev/null +++ b/tools/inference_builder/schemas/backends/parameters/polygraphy-parameters.schema.json @@ -0,0 +1,16 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/polygraphy-parameters.schema.json", + "title": "Polygraphy Backend Parameters", + "description": "Parameter schema for Polygraphy (TensorRT) backend", + "type": "object", + "required": ["tensorrt_engine"], + "properties": { + "tensorrt_engine": { + "type": "string", + "description": "Path to TensorRT engine file (typically model.plan) relative to the model home directory (typically folder named after model name under model repository)" + } + }, + "additionalProperties": false +} + diff --git a/tools/inference_builder/schemas/backends/parameters/pytorch-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/pytorch-parameters.schema.json new file mode 100644 index 00000000..1bd61ce1 --- /dev/null +++ b/tools/inference_builder/schemas/backends/parameters/pytorch-parameters.schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/pytorch-parameters.schema.json", + "title": "PyTorch Backend Parameters", + "description": "Parameter schema for PyTorch backend (Huggingface Transformers)", + "type": "object", + "properties": {}, + "additionalProperties": true +} + diff --git a/tools/inference_builder/schemas/backends/parameters/tensorrtllm-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/tensorrtllm-parameters.schema.json new file mode 100644 index 00000000..7718a901 --- /dev/null +++ b/tools/inference_builder/schemas/backends/parameters/tensorrtllm-parameters.schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/tensorrtllm-parameters.schema.json", + "title": "TensorRT-LLM Backend Parameters", + "description": "Parameter schema for TensorRT-LLM backend", + "type": "object", + "properties": {}, + "additionalProperties": true +} + diff --git a/tools/inference_builder/schemas/backends/parameters/triton-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/triton-parameters.schema.json new file mode 100644 index 00000000..e774bd62 --- /dev/null +++ b/tools/inference_builder/schemas/backends/parameters/triton-parameters.schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/triton-parameters.schema.json", + "title": "Triton Backend Parameters", + "description": "Parameter schema for Triton Inference Server backend. Parameters are backend-specific and defined as map in model_config.proto (https://github.com/triton-inference-server/common/blob/main/protobuf/model_config.proto). All parameter values are converted to string_value in the generated config.pbtxt. Refer to Triton documentation for backend-specific parameters: https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/user_guide/model_configuration.html", + "type": "object", + "properties": {}, + "additionalProperties": true +} + diff --git a/tools/inference_builder/schemas/backends/parameters/vllm-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/vllm-parameters.schema.json new file mode 100644 index 00000000..6e5c21b4 --- /dev/null +++ b/tools/inference_builder/schemas/backends/parameters/vllm-parameters.schema.json @@ -0,0 +1,55 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/vllm-parameters.schema.json", + "title": "vLLM Backend Parameters", + "description": "Parameter schema for vLLM backend", + "type": "object", + "properties": { + "max_num_tokens": { + "type": "integer", + "minimum": 1, + "description": "Maximum number of tokens" + }, + "async_mode": { + "type": "boolean", + "description": "Enable asynchronous mode" + }, + "dtype": { + "type": "string", + "enum": ["auto", "half", "float16", "bfloat16", "float", "float32"], + "description": "Data type for model weights and activations" + }, + "gpu_memory_utilization": { + "type": "number", + "minimum": 0.0, + "maximum": 1.0, + "description": "GPU memory utilization (0.0 to 1.0)" + }, + "max_model_len": { + "type": "integer", + "minimum": 1, + "description": "Maximum model context length" + }, + "tensor_parallel_size": { + "type": "integer", + "minimum": 1, + "description": "Number of GPUs to use for tensor parallelism" + }, + "pipeline_parallel_size": { + "type": "integer", + "minimum": 1, + "description": "Number of pipeline stages" + }, + "trust_remote_code": { + "type": "boolean", + "description": "Trust remote code from model hub" + }, + "max_num_seqs": { + "type": "integer", + "minimum": 1, + "description": "Maximum number of sequences per iteration" + } + }, + "additionalProperties": false +} + diff --git a/tools/inference_builder/schemas/backends/polygraphy.schema.json b/tools/inference_builder/schemas/backends/polygraphy.schema.json new file mode 100644 index 00000000..6f2d3346 --- /dev/null +++ b/tools/inference_builder/schemas/backends/polygraphy.schema.json @@ -0,0 +1,47 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/polygraphy.schema.json", + "title": "Polygraphy Backend Configuration", + "description": "Schema for Polygraphy (TensorRT) backend model configuration", + "allOf": [ + { + "$ref": "../common/base-model.schema.json" + }, + { + "properties": { + "backend": { + "type": "string", + "const": "polygraphy", + "description": "Polygraphy backend for TensorRT inference" + }, + "parameters": { + "$ref": "parameters/polygraphy-parameters.schema.json" + } + } + } + ], + "examples": [ + { + "name": "nvclip_text", + "backend": "polygraphy", + "max_batch_size": 64, + "parameters": { + "tensorrt_engine": "model.plan" + }, + "input": [ + { + "name": "TEXT", + "data_type": "TYPE_INT64", + "dims": [-1, -1] + } + ], + "output": [ + { + "name": "LOGITS_PER_TEXT", + "data_type": "TYPE_FP32", + "dims": [-1, -1] + } + ] + } + ] +} diff --git a/tools/inference_builder/schemas/backends/pytorch.schema.json b/tools/inference_builder/schemas/backends/pytorch.schema.json new file mode 100644 index 00000000..e19995b9 --- /dev/null +++ b/tools/inference_builder/schemas/backends/pytorch.schema.json @@ -0,0 +1,50 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/pytorch.schema.json", + "title": "PyTorch Backend Configuration", + "description": "Schema for PyTorch backend model configuration (Huggingface Transformers)", + "allOf": [ + { + "$ref": "../common/base-model.schema.json" + }, + { + "properties": { + "backend": { + "type": "string", + "const": "pytorch", + "description": "PyTorch backend for Huggingface Transformers models" + }, + "parameters": { + "$ref": "parameters/pytorch-parameters.schema.json" + } + } + } + ], + "examples": [ + { + "name": "llama_model", + "backend": "pytorch", + "parameters": { + "model_name_or_path": "meta-llama/Llama-2-7b-hf", + "device": "cuda", + "torch_dtype": "float16", + "trust_remote_code": true + }, + "input": [ + { + "name": "input_ids", + "data_type": "TYPE_INT64", + "dims": [-1, -1] + } + ], + "output": [ + { + "name": "logits", + "data_type": "TYPE_FP32", + "dims": [-1, -1, -1] + } + ] + } + ] +} + diff --git a/tools/inference_builder/schemas/backends/tensorrtllm.schema.json b/tools/inference_builder/schemas/backends/tensorrtllm.schema.json new file mode 100644 index 00000000..5441c014 --- /dev/null +++ b/tools/inference_builder/schemas/backends/tensorrtllm.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/tensorrtllm.schema.json", + "title": "TensorRT-LLM Backend Configuration", + "description": "Schema for TensorRT-LLM backend model configuration", + "allOf": [ + { + "$ref": "../common/base-model.schema.json" + }, + { + "properties": { + "backend": { + "type": "string", + "enum": ["tensorrtllm", "tensorrtllm/pytorch"], + "description": "TensorRT-LLM backend type with optional PyTorch fallback" + }, + "parameters": { + "$ref": "parameters/tensorrtllm-parameters.schema.json" + } + } + } + ], + "examples": [ + { + "name": "Qwen2.5-VL", + "backend": "tensorrtllm/pytorch", + "parameters": { + "max_num_tokens": 19200, + "kv_cache_config": { + "enable_block_reuse": false + } + }, + "input": [ + { + "name": "inputs", + "data_type": "TYPE_CUSTOM_VLM_INPUT", + "dims": [-1] + } + ], + "output": [ + { + "name": "outputs", + "data_type": "TYPE_STRING", + "dims": [-1] + } + ] + } + ] +} diff --git a/tools/inference_builder/schemas/backends/triton.schema.json b/tools/inference_builder/schemas/backends/triton.schema.json new file mode 100644 index 00000000..6825348e --- /dev/null +++ b/tools/inference_builder/schemas/backends/triton.schema.json @@ -0,0 +1,54 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/triton.schema.json", + "title": "Triton Backend Configuration", + "description": "Schema for Triton Inference Server backend model configuration", + "allOf": [ + { + "$ref": "../common/base-model.schema.json" + }, + { + "properties": { + "backend": { + "type": "string", + "enum": [ + "triton/python", + "triton/tensorrt", + "triton/onnx", + "triton/pytorch", + "triton/tensorflow", + "triton/python/tensorrtllm" + ], + "description": "Triton backend type with specific framework" + }, + "parameters": { + "$ref": "parameters/triton-parameters.schema.json" + } + } + } + ], + "examples": [ + { + "name": "visual_changenet", + "backend": "triton/tensorrt", + "max_batch_size": 1, + "parameters": { + "FORCE_CPU_ONLY_INPUT_TENSORS": "no" + }, + "input": [ + { + "name": "input0", + "data_type": "TYPE_FP32", + "dims": [3, 768, 768] + } + ], + "output": [ + { + "name": "output_final", + "data_type": "TYPE_FP32", + "dims": [10, 768, 768] + } + ] + } + ] +} diff --git a/tools/inference_builder/schemas/backends/vllm.schema.json b/tools/inference_builder/schemas/backends/vllm.schema.json new file mode 100644 index 00000000..10219ac8 --- /dev/null +++ b/tools/inference_builder/schemas/backends/vllm.schema.json @@ -0,0 +1,47 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/vllm.schema.json", + "title": "vLLM Backend Configuration", + "description": "Schema for vLLM backend model configuration", + "allOf": [ + { + "$ref": "../common/base-model.schema.json" + }, + { + "properties": { + "backend": { + "type": "string", + "const": "vllm", + "description": "vLLM backend for large language models" + }, + "parameters": { + "$ref": "parameters/vllm-parameters.schema.json" + } + } + } + ], + "examples": [ + { + "name": "Cosmos", + "backend": "vllm", + "parameters": { + "max_num_tokens": 19200, + "async_mode": true + }, + "input": [ + { + "name": "inputs", + "data_type": "TYPE_CUSTOM_VLM_INPUT", + "dims": [-1] + } + ], + "output": [ + { + "name": "outputs", + "data_type": "TYPE_STRING", + "dims": [-1] + } + ] + } + ] +} diff --git a/tools/inference_builder/schemas/common/base-model.schema.json b/tools/inference_builder/schemas/common/base-model.schema.json new file mode 100644 index 00000000..da387ae7 --- /dev/null +++ b/tools/inference_builder/schemas/common/base-model.schema.json @@ -0,0 +1,96 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/base-model.schema.json", + "title": "Base Model Configuration", + "description": "Common base schema for all model configurations", + "type": "object", + "required": ["name", "backend"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "Model name identifier" + }, + "backend": { + "$ref": "definitions.schema.json#/definitions/backendTypes" + }, + "max_batch_size": { + "oneOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "type": "string", + "pattern": "^\\$[A-Z_]+\\|[0-9]+$", + "description": "Environment variable with default value (e.g., $MAX_BATCH_SIZE|1)" + } + ], + "description": "Maximum batch size for the model", + "default": 1 + }, + "input": { + "type": "array", + "description": "Model input specification", + "items": { + "$ref": "#/definitions/tensorSpec" + } + }, + "output": { + "type": "array", + "description": "Model output specification", + "items": { + "$ref": "#/definitions/tensorSpec" + } + }, + "parameters": { + "type": "object", + "description": "Backend-specific parameters (see backend schemas for details)", + "additionalProperties": true + }, + "preprocessors": { + "type": "array", + "description": "Ordered list of preprocessors applied to this model's inputs before inference. Each preprocessor transforms or derives tensors from existing ones (for example, tokenization or image normalization) and is executed in sequence. Typically used to adapt data from top-level inputs or previous models into the format and shape expected by this model's inputs.", + "items": { + "$ref": "preprocessors.schema.json" + } + }, + "postprocessors": { + "type": "array", + "description": "Ordered list of postprocessors applied to this model's outputs after inference. Each postprocessor can transform, filter, or aggregate output tensors (for example, masking, decoding, or embedding processing) and is executed in sequence. Commonly used to convert raw model outputs into the tensors or objects expected by downstream models or top-level outputs.", + "items": { + "$ref": "postprocessors.schema.json" + } + } + }, + "definitions": { + "tensorSpec": { + "type": "object", + "required": ["name", "data_type", "dims"], + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "Name of the tensor" + }, + "data_type": { + "$ref": "definitions.schema.json#/definitions/dataTypes" + }, + "dims": { + "type": "array", + "description": "Dimensions of the tensor (-1 for dynamic dimensions)", + "items": { + "type": "integer" + }, + "minItems": 1 + }, + "optional": { + "type": "boolean", + "description": "Whether this tensor is optional", + "default": false + } + } + } + } +} + diff --git a/tools/inference_builder/schemas/common/base-processor.schema.json b/tools/inference_builder/schemas/common/base-processor.schema.json new file mode 100644 index 00000000..d1b5901c --- /dev/null +++ b/tools/inference_builder/schemas/common/base-processor.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/base-processor.schema.json", + "title": "Base Processor Configuration", + "description": "Common base schema for preprocessors and postprocessors", + "type": "object", + "required": ["kind", "name", "input", "output"], + "properties": { + "kind": { + "type": "string", + "enum": ["custom", "builtin"], + "description": "Type of processor: 'custom' for user-defined processors, 'builtin' for system-provided processors" + }, + "name": { + "type": "string", + "description": "Processor identifier used to locate the processor implementation" + }, + "input": { + "type": "array", + "description": "Ordered list of input tensor names that the processor's __call__ method receives as positional arguments. These names are used to extract values from the upstream data dictionary. For example, if the upstream provides {'image': img_data, 'text': txt_data, 'metadata': meta} and input is ['text', 'image'], the processor's __call__ method will be invoked as __call__(txt_data, img_data) - extracting values in the order specified by the input list.", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "output": { + "type": "array", + "description": "Ordered list of output tensor names corresponding to the tuple returned by the processor's __call__ method. The processor must return a tuple with length equal to the output array length. The returned values are mapped to output names to form a dictionary for downstream consumption. For example, if output is ['embeddings', 'attention_mask'] and __call__ returns (emb_tensor, mask_tensor), the downstream receives {'embeddings': emb_tensor, 'attention_mask': mask_tensor}.", + "items": { + "type": "string" + }, + "minItems": 1 + } + } +} + diff --git a/tools/inference_builder/schemas/common/definitions.schema.json b/tools/inference_builder/schemas/common/definitions.schema.json new file mode 100644 index 00000000..5f84b8be --- /dev/null +++ b/tools/inference_builder/schemas/common/definitions.schema.json @@ -0,0 +1,111 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/definitions.schema.json", + "title": "Common Definitions", + "description": "Common definitions and reusable schemas for Inference Builder", + "definitions": { + "dataTypes": { + "type": "string", + "enum": [ + "TYPE_BOOL", + "TYPE_UINT8", + "TYPE_UINT16", + "TYPE_UINT32", + "TYPE_UINT64", + "TYPE_INT8", + "TYPE_INT16", + "TYPE_INT32", + "TYPE_INT64", + "TYPE_FP16", + "TYPE_FP32", + "TYPE_FP64", + "TYPE_STRING", + "TYPE_CUSTOM_IMAGE_BASE64", + "TYPE_CUSTOM_IMAGE_ASSETS", + "TYPE_CUSTOM_LONG_VIDEO_ASSETS", + "TYPE_CUSTOM_VIDEO_CHUNK_ASSETS", + "TYPE_CUSTOM_BINARY_BASE64", + "TYPE_CUSTOM_LIST", + "TYPE_CUSTOM_DS_MEDIA_URL", + "TYPE_CUSTOM_VLM_INPUT", + "TYPE_CUSTOM_OBJECT", + "TYPE_CUSTOM_DS_IMAGE", + "TYPE_CUSTOM_DS_METADATA", + "TYPE_CUSTOM_DS_MIME", + "TYPE_CUSTOM_DS_SOURCE_CONFIG" + ], + "description": "Supported data types for tensors" + }, + "backendTypes": { + "type": "string", + "enum": [ + "dummy", + "vllm", + "triton/python", + "triton/tensorrt", + "triton/onnx", + "triton/pytorch", + "triton/tensorflow", + "tensorrtllm", + "tensorrtllm/pytorch", + "deepstream/nvinfer", + "deepstream/nvinferserver", + "polygraphy", + "pytorch" + ], + "description": "Supported backend types" + }, + "operationTypes": { + "type": "string", + "enum": [ + "inference", + "create_chat_completion_v1_chat_completions_post", + "create_embedding", + "add_media_file", + "delete_media_file", + "list_media_files", + "add_live_stream", + "delete_live_stream", + "list_live_streams", + "health_ready_v1_health_ready_get" + ], + "description": "Supported operation types for responders" + }, + "processorKinds": { + "type": "string", + "enum": ["custom", "builtin"], + "description": "Types of processors" + }, + "commonProcessorNames": { + "type": "string", + "enum": [ + "dummy-preprocessor", + "dummy-tokenizer", + "qwen-vl-loader", + "qwen-vl-image-loader", + "qwen-vl-video-loader", + "openclip-tokenizer", + "nvclip-vision-preprocessor", + "nvclip-postprocessor", + "changenet-normalizer", + "changenet-masking" + ], + "description": "Common processor names" + }, + "responderNames": { + "type": "string", + "enum": [ + "infer", + "add_file", + "del_file", + "list_files", + "add_live_stream", + "del_live_stream", + "list_live_streams", + "healthy_ready" + ], + "description": "Available responder template names (must match templates/responder/*.jinja.py)" + } + } +} + diff --git a/tools/inference_builder/schemas/common/postprocessors.schema.json b/tools/inference_builder/schemas/common/postprocessors.schema.json new file mode 100644 index 00000000..ed101e8f --- /dev/null +++ b/tools/inference_builder/schemas/common/postprocessors.schema.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/postprocessors.schema.json", + "title": "Postprocessor Configurations", + "description": "Schema for custom postprocessor configurations", + "type": "object", + "$ref": "#/definitions/customPostprocessor", + "definitions": { + "customPostprocessor": { + "allOf": [ + { + "$ref": "base-processor.schema.json" + }, + { + "properties": { + "config": { + "type": "object", + "description": "Custom configuration for the postprocessor", + "additionalProperties": true + } + } + } + ] + } + } +} + diff --git a/tools/inference_builder/schemas/common/preprocessors.schema.json b/tools/inference_builder/schemas/common/preprocessors.schema.json new file mode 100644 index 00000000..0736d352 --- /dev/null +++ b/tools/inference_builder/schemas/common/preprocessors.schema.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/preprocessors.schema.json", + "title": "Preprocessor Configurations", + "description": "Schema for custom preprocessor configurations", + "type": "object", + "$ref": "#/definitions/customPreprocessor", + "definitions": { + "customPreprocessor": { + "allOf": [ + { + "$ref": "base-processor.schema.json" + }, + { + "properties": { + "config": { + "type": "object", + "description": "Custom configuration for the preprocessor", + "additionalProperties": true + } + } + } + ] + } + } +} + diff --git a/tools/inference_builder/schemas/config.schema.json b/tools/inference_builder/schemas/config.schema.json new file mode 100644 index 00000000..2653b5dd --- /dev/null +++ b/tools/inference_builder/schemas/config.schema.json @@ -0,0 +1,371 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/config.schema.json", + "title": "Inference Builder Configuration", + "description": "Schema for NVIDIA Inference Builder configuration files", + "type": "object", + "required": ["name", "model_repo", "models"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "Unique project name. Used as the directory name for generated code and as the package name when bundling artifacts.", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$" + }, + "model_repo": { + "type": "string", + "description": "Root path to the directory containing the model files" + }, + "input": { + "type": "array", + "description": "Top level inference input specification. Required when pipeline includes multiple models or when inputs use custom types requiring preprocessing.", + "minItems": 1, + "items": { + "$ref": "#/definitions/tensorSpec" + } + }, + "output": { + "type": "array", + "description": "Top level inference output specification. Required when pipeline includes multiple models or when outputs use custom types requiring postprocessing.", + "minItems": 1, + "items": { + "$ref": "#/definitions/tensorSpec" + } + }, + "server": { + "$ref": "#/definitions/serverConfig", + "description": "Server configuration mapping endpoints to their implementation templates." + }, + "models": { + "type": "array", + "description": "List of model specifications for inference", + "minItems": 1, + "items": { + "$ref": "#/definitions/modelSpec" + } + }, + "routes": { + "type": "object", + "description": "Data-flow map between top-level inputs, models, and top-level outputs.", + "additionalProperties": { + "type": "string" + } + }, + "postprocessors": { + "type": "array", + "description": "Top-level postprocessors. Required when pipeline includes multiple models and outputs need to be consolidated.", + "items": { + "$ref": "#/definitions/processor" + } + } + }, + "definitions": { + "tensorSpec": { + "type": "object", + "required": ["name", "data_type", "dims"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "Name of the tensor" + }, + "data_type": { + "description": "Data type of the tensor", + "oneOf": [ + { "const": "TYPE_BOOL", "description": "Tensor with bit type" }, + { "const": "TYPE_UINT8", "description": "Tensor with unsigned 8-bit integer type" }, + { "const": "TYPE_UINT16", "description": "Tensor with unsigned 16-bit integer type" }, + { "const": "TYPE_UINT32", "description": "Tensor with unsigned 32-bit integer type" }, + { "const": "TYPE_UINT64", "description": "Tensor with unsigned 64-bit integer type" }, + { "const": "TYPE_INT8", "description": "Tensor with signed 8-bit integer type" }, + { "const": "TYPE_INT16", "description": "Tensor with signed 16-bit integer type" }, + { "const": "TYPE_INT32", "description": "Tensor with signed 32-bit integer type" }, + { "const": "TYPE_INT64", "description": "Tensor with signed 64-bit integer type" }, + { "const": "TYPE_FP16", "description": "Tensor with 16-bit floating point (half precision) type" }, + { "const": "TYPE_FP32", "description": "Tensor with 32-bit floating point (single precision) type" }, + { "const": "TYPE_FP64", "description": "Tensor with 64-bit floating point (double precision) type" }, + { "const": "TYPE_STRING", "description": "Tensor with string type" }, + { "const": "TYPE_CUSTOM_IMAGE_BASE64", "description": "Base64-encoded JPEG/PNG image data as a data URI string. Each element must follow the format 'data:image/{format};base64,{payload}' where {format} is 'jpeg', 'jpg', or 'png', and {payload} is the base64-encoded image bytes. This type is mapped to TYPE_STRING in Triton and arrives as a list of strings. When used as a top-level input, an ImageInputDataFlow is created that (1) parses the data URI prefix to determine the image format, (2) decodes the base64 payload into raw bytes, and (3) decodes the image using a hardware-accelerated DeepStream pipeline (nvjpegdec/pngdec) to produce RGB uint8 image tensors in HWC layout [H, W, 3] on GPU at the original image resolution. These decoded tensors are then passed to downstream models." }, + { "const": "TYPE_CUSTOM_IMAGE_ASSETS", "description": "Image asset identifiers (file paths, URLs, or asset IDs) referring to JPEG/PNG images. When used as a top-level input, an ImageInputDataFlow will be created that loads and decodes the referenced images into image tensors before they are passed to the downstream models." }, + { "const": "TYPE_CUSTOM_LONG_VIDEO_ASSETS", "description": "Video asset identifiers for long videos and live streams requiring temporal chunking. Particularly suitable for: (1) live streams such as RTSP feeds that need continuous processing in chunks, (2) long video files that should be split into temporal segments, (3) scenarios where frames need to be delivered in multiple batches over time. Supports file paths, URLs, RTSP streams, or asset IDs, with required query parameters: ?frames=N (number of frames per chunk), &interval=INTERVAL_NSEC (time interval between frames in nanoseconds), and optional &chunks=M (maximum number of chunks to yield before stopping - useful for RTSP streams without natural end-of-stream), &scale=WIDTHxHEIGHT (target resolution for frame scaling, e.g., scale=640x360 - all assets in a batch must use the same scale value). When used as a top-level input, a VideoInputDataFlow will be created that asynchronously extracts frames in chunks, with each chunk containing N frames sampled at the specified interval. Results are delivered via a queue as they become available, enabling streaming processing. Processing always starts from the beginning of the video or live stream. For short videos that fit in a single batch without temporal chunking, or when you need to specify a start position, use TYPE_CUSTOM_VIDEO_CHUNK_ASSETS instead." }, + { "const": "TYPE_CUSTOM_VIDEO_CHUNK_ASSETS", "description": "Video asset identifiers for short videos requiring simple frame sampling without temporal chunking. Use this type when: (1) processing short video clips that fit in memory as a single batch, (2) extracting a fixed number of frames from a specific video segment, (3) simple uniform frame sampling from a video duration is needed. Supports file paths, URLs, or asset IDs, with required query parameter ?frames=N (number of frames to sample), and optional &start=START_NSEC (start time in nanoseconds, default 0), &duration=DURATION_NSEC (duration to sample from in nanoseconds, defaults to entire video). When used as a top-level input, a VideoFrameSamplingDataFlow will be created that asynchronously extracts exactly N frames evenly distributed over the specified duration (interval is automatically calculated as duration/frames), decodes them, and produces a single frame batch delivered via queue. The result is one batch containing all requested frames. For long videos or live streams requiring temporal chunking and streaming delivery of multiple batches over time, use TYPE_CUSTOM_LONG_VIDEO_ASSETS instead." }, + { "const": "TYPE_CUSTOM_BINARY_BASE64", "description": "Base64-encoded binary data. The input strings will be decoded into uint8 tensors before being passed to the downstream models." }, + { "const": "TYPE_CUSTOM_LIST", "description": "Converts the input values into a list, which implies explicit batching of the input data. Use for non-DS inputs that need list conversion (e.g., video URLs for VLM models)." }, + { "const": "TYPE_CUSTOM_DS_MEDIA_URL", "description": "DeepStream media URL input. A string URL (file path or remote URL) pointing to an image or video for DeepStream pipeline processing. Unlike TYPE_CUSTOM_LIST, this type follows the implicit batch path and is recognized by the DeepStream backend as a media source. Must be paired with a TYPE_CUSTOM_DS_MIME input." }, + { "const": "TYPE_CUSTOM_VLM_INPUT", "description": "Vision-Language Model input in dict format and will be passed to the downstream models as is." }, + { "const": "TYPE_CUSTOM_OBJECT", "description": "Custom object type for complex structured data" }, + { "const": "TYPE_CUSTOM_DS_IMAGE", "description": "DeepStream custom type for image buffers, usable as both input and output. As INPUT: a 1-D uint8 tensor (or list of tensors) containing encoded JPEG/PNG image bytes that can be passed directly into DeepStream backends without additional decoding in the Python runtime. This input must be defined in the model configuration to enable the image decoder in the DeepStream pipeline. As OUTPUT: extracts the decoded image frames from the DeepStream pipeline and returns them as RGB uint8 image tensors in HWC (Height, Width, Channels) layout, where Channels is 3 (R, G, B). Each tensor has shape [H, W, 3] representing the decoded frame at its processed resolution. Enable the image output only if raw image data is required for downstream models or postprocessors since it adds additional overhead to the pipeline." }, + { "const": "TYPE_CUSTOM_DS_METADATA", "description": "Deepstream custom type for metadata output. The output structure follows the deepstreamMetadata schema (see definitions/deepstreamMetadata), returned as a dictionary with flexible fields that vary based on the model type and parser implementation. This type requires a low-level C++ postprocessor library (e.g., libnvds_infercustomparser_tao.so) to be available and copied into the container image. The library can be obtained from: (1) TAO model parsers from https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git, or (2) custom user-implemented parsers. Without such a library, use regular tensor output types (TYPE_FP32, etc.) with Python postprocessors instead." }, + { "const": "TYPE_CUSTOM_DS_MIME", "description": "Deepstream custom type for MIME type string (for example, 'image/jpeg' or 'image/png') describing the associated DeepStream image or media buffers. Required alongside TYPE_CUSTOM_DS_IMAGE or TYPE_CUSTOM_DS_MEDIA_URL inputs so the DeepStream pipeline can select the appropriate decoder." }, + { "const": "TYPE_CUSTOM_DS_SOURCE_CONFIG", "description": "DeepStream custom type for path to a YAML source configuration file. Use this type when handling live cameras or video streams with DeepStream inference pipelines. The source config supports two deployment strategies: (1) STATIC CAMERA SETUP: For fixed scenarios with a known number of cameras (e.g., a retail store with 4 fixed cameras), set source-bin to 'nvurisrcbin' in the YAML config. All camera URIs are defined upfront in the config file and remain unchanged during runtime. This is simpler and recommended when camera topology is stable. (2) DYNAMIC CAMERA MANAGEMENT: For scenarios requiring runtime addition/removal of cameras (e.g., smart city deployments, fleet management), set source-bin to 'nvmultiurisrcbin' in the YAML config. This enables a built-in REST API server for dynamic stream management. Add streams via POST to /api/v1/stream/add with JSON payload containing camera_id, camera_url, and change='camera_add'. Remove streams via POST to /api/v1/stream/remove with change='camera_remove'. The REST API server endpoint (ip-address, port) is configured in the source config. Full API specification: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmultiurisrcbin.html. Choose nvurisrcbin for static setups to reduce complexity; choose nvmultiurisrcbin when dynamic stream management is a requirement." } + ] + }, + "dims": { + "type": "array", + "description": "Dimensions of the tensor (-1 for dynamic dimensions)", + "items": { + "type": "integer" + }, + "minItems": 1 + }, + "optional": { + "type": "boolean", + "description": "Whether this tensor is optional", + "default": false + } + } + }, + "serverConfig": { + "type": "object", + "additionalProperties": true, + "properties": { + "responders": { + "type": "object", + "description": "Map of responder configurations. Keys must match available responder templates.", + "additionalProperties": false, + "properties": { + "infer": { + "description": "Primary inference endpoint responder. Handles model inference requests. Input: mapped from HTTP request body to top-level pipeline inputs (as defined in config 'input' section). Output: top-level pipeline outputs (as defined in config 'output' section). Supports streaming responses with 'Accept: application/x-ndjson' header.", + "$ref": "#/definitions/responder" + }, + "add_file": { + "description": "File upload responder. Adds files to the asset store for later processing. Input: multipart file upload (file object with filename and content_type). Output: asset dict with fields 'id', 'file_name', 'content_type', 'created_at'.", + "$ref": "#/definitions/responder" + }, + "del_file": { + "description": "File deletion responder. Removes files from the asset store. Input: 'asset_id' (string, from path parameter). Output: 'status' (boolean, deletion success).", + "$ref": "#/definitions/responder" + }, + "list_files": { + "description": "File listing responder. Returns a list of files in the asset store. Input: none. Output: 'assets' (array of asset objects with 'id', 'file_name', 'content_type', 'created_at').", + "$ref": "#/definitions/responder" + }, + "add_live_stream": { + "description": "Live stream addition responder. Registers a new RTSP or video stream for processing. Input: 'url' (string, required), 'description' (string, optional), 'username' (string, optional), 'password' (string, optional). Output: asset dict with fields 'id', 'url', 'description', 'created_at'.", + "$ref": "#/definitions/responder" + }, + "del_live_stream": { + "description": "Live stream removal responder. Stops and removes a registered live stream. Input: 'asset_id' (string, from path parameter). Output: 'status' (boolean, deletion success).", + "$ref": "#/definitions/responder" + }, + "list_live_streams": { + "description": "Live stream listing responder. Returns all registered live streams. Input: none. Output: 'assets' (array of stream asset objects with 'id', 'url', 'description', 'created_at').", + "$ref": "#/definitions/responder" + }, + "healthy_ready": { + "description": "Health check responder. Reports service health and readiness status. Input: none. Output: HTTP 200 with 'Ready' or HTTP 503 with 'Service Unavailable'. No request/response template mapping needed.", + "$ref": "#/definitions/responder" + } + } + } + } + }, + "responder": { + "type": "object", + "required": ["operation"], + "additionalProperties": false, + "properties": { + "operation": { + "type": "string", + "description": "Name of the operation this responder handles, which is defined in the openapi specification." + }, + "requests": { + "type": "object", + "description": "Request templates (Jinja2 templates) to map HTTP request body to responder inputs. Keys are OpenAPI request schema/class names (e.g., 'InferenceRequest', 'AddLiveStreamRequest'), values are Jinja2 templates that transform the incoming 'request' object into a JSON structure matching the responder's expected inputs.", + "additionalProperties": { + "type": "string" + } + }, + "responses": { + "type": "object", + "description": "Response templates (Jinja2 templates) to map responder outputs to HTTP response body. Keys are OpenAPI response schema/class names (e.g., 'InferenceResponse', 'AddFileResponse'), values are Jinja2 templates that transform the 'response' object from the responder into the desired HTTP response JSON structure.", + "additionalProperties": { + "type": "string" + } + } + } + }, + "modelSpec": { + "type": "object", + "required": ["name", "backend", "input", "output"], + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "Model name identifier for locating the model in the model repository. Must be unique within the project." + }, + "backend": { + "type": "string", + "description": "Backend type for the model", + "enum": [ + "dummy", + "vllm", + "triton/python", + "triton/tensorrt", + "triton/onnx", + "triton/pytorch", + "triton/tensorflow", + "tensorrtllm", + "tensorrtllm/pytorch", + "deepstream/nvinfer", + "deepstream/nvinferserver", + "polygraphy", + "pytorch" + ] + }, + "max_batch_size": { + "oneOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "type": "string", + "pattern": "^\\$[A-Z_]+\\|[0-9]+$", + "description": "Environment variable with default value (e.g., $MAX_BATCH_SIZE|1)" + } + ], + "description": "Maximum batch size for the model", + "default": 1 + }, + "input": { + "type": "array", + "description": "Model input specification. Note on passthrough tensors: any keys present in the request after preprocessing that are NOT listed in this model's input spec are treated as passthrough (they are not sent to the backend). They are merged back into each backend result dict before this model's postprocessors run, so a model postprocessor can consume them by listing those names in its `input`. If you need passthrough values to propagate further downstream/top-level, ensure your postprocessor emits/mappings include them via configured outputs/routes.", + "items": { + "$ref": "#/definitions/tensorSpec" + } + }, + "output": { + "type": "array", + "description": "Model output specification", + "items": { + "$ref": "#/definitions/tensorSpec" + } + }, + "parameters": { + "type": "object", + "description": "Backend-specific parameters. The structure depends on the 'backend' field value. Read 'schema://index.json' to find the mapping from backend type to its parameter schema (e.g., backend 'vllm' -> 'schema://backends/parameters/vllm-parameters.schema.json').", + "additionalProperties": true + }, + "preprocessors": { + "type": "array", + "description": "Ordered list of preprocessors applied to this model's inputs before inference. Each processor transforms or derives tensors from existing ones (for example, tokenization or image normalization) and is executed in sequence. Typically used to adapt data from top-level inputs or previous models into the format and shape expected by this model's inputs.", + "items": { + "$ref": "#/definitions/processor" + } + }, + "postprocessors": { + "type": "array", + "description": "Ordered list of postprocessors applied to this model's outputs after inference, before passing results downstream. Each processor can transform, filter, or aggregate output tensors (for example, masking, decoding, or embedding processing) and is executed in sequence. This is also a primary extension point for adding custom logic, giving you room to expand pipeline functionality without changing the core runtime (e.g., adding new derived tensors, validation, formatting, or routing-friendly outputs).", + "items": { + "$ref": "#/definitions/processor" + } + } + } + }, + "processor": { + "type": "object", + "required": ["kind", "name", "input", "output"], + "additionalProperties": false, + "properties": { + "kind": { + "type": "string", + "description": "Type of processor", + "enum": ["custom", "auto"] + }, + "name": { + "type": "string", + "description": "Name/identifier of the processor" + }, + "input": { + "type": "array", + "description": "Input tensor names", + "items": { + "type": "string" + } + }, + "output": { + "type": "array", + "description": "Output tensor names", + "items": { + "type": "string" + } + }, + "config": { + "type": "object", + "description": "Processor-specific configuration", + "additionalProperties": true + } + } + }, + "deepstreamMetadata": { + "type": "object", + "description": "DeepStream metadata structure returned by TYPE_CUSTOM_DS_METADATA outputs. Contains per-frame detection, classification, and segmentation results extracted from DeepStream's internal metadata by C++ parser libraries. The structure is flexible and fields may be empty depending on the model type and parser implementation.", + "additionalProperties": true, + "properties": { + "shape": { + "type": "array", + "description": "Image or frame dimensions as [height, width] in pixels. Represents the spatial dimensions of the processed frame.", + "items": { + "type": "integer", + "minimum": 0 + }, + "minItems": 2, + "maxItems": 2 + }, + "bboxes": { + "type": "array", + "description": "Bounding boxes for detected objects in the format [left, top, right, bottom] coordinates. Each bounding box is an array of 4 integers representing pixel coordinates. Used by detection and instance segmentation models.", + "items": { + "type": "array", + "items": { + "type": "integer" + }, + "minItems": 4, + "maxItems": 4 + } + }, + "probs": { + "type": "array", + "description": "Confidence scores (probabilities) for each detected object or classification result. Values typically range from 0.0 to 1.0, with higher values indicating greater confidence.", + "items": { + "type": "number", + "minimum": 0.0, + "maximum": 1.0 + } + }, + "labels": { + "type": "array", + "description": "Classification labels as an array of arrays (list[list[str]]). The outer array has one entry per detected object (aligned by index with 'bboxes', 'probs', etc.). The inner array contains one or more label strings for that object, since a single object may have multiple labels (e.g., ['car', 'red', 'moving']). For single-label models, each inner array contains exactly one string (e.g., [['car'], ['person']]).", + "items": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "seg_maps": { + "type": "array", + "description": "Segmentation maps containing pixel-wise class predictions or instance masks. Each element is a 2D array (represented as nested arrays or numpy arrays) where values correspond to class IDs or instance IDs. Used by semantic segmentation and instance segmentation models.", + "items": { + "type": "array" + } + }, + "objects": { + "type": "array", + "description": "Object tracking IDs assigned by the DeepStream tracker. Each integer uniquely identifies a tracked object across frames. Only populated when tracker is enabled in the pipeline configuration.", + "items": { + "type": "integer", + "minimum": 0 + } + }, + "timestamp": { + "type": "integer", + "description": "Buffer presentation timestamp (PTS) in nanoseconds. Represents the temporal position of the frame in the video stream. Useful for synchronization and temporal analysis.", + "minimum": 0 + } + } + } + } +} + diff --git a/tools/inference_builder/schemas/index.json b/tools/inference_builder/schemas/index.json new file mode 100644 index 00000000..e6975c3a --- /dev/null +++ b/tools/inference_builder/schemas/index.json @@ -0,0 +1,105 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/index.json", + "title": "Inference Builder Schema Index", + "description": "Central index for all Inference Builder schemas", + "version": "1.0.0", + "schemas": { + "main": { + "id": "config.schema.json", + "description": "Main configuration schema for inference builder", + "path": "./config.schema.json" + }, + "backends": { + "deepstream": { + "id": "backends/deepstream.schema.json", + "description": "DeepStream backend configuration", + "path": "./backends/deepstream.schema.json", + "parameters": "./backends/parameters/deepstream-parameters.schema.json", + "backend_type": "deepstream/nvinfer" + }, + "triton": { + "id": "backends/triton.schema.json", + "description": "Triton Inference Server backend configuration", + "path": "./backends/triton.schema.json", + "parameters": "./backends/parameters/triton-parameters.schema.json", + "backend_types": [ + "triton/python", + "triton/tensorrt", + "triton/onnx", + "triton/pytorch" + ] + }, + "vllm": { + "id": "backends/vllm.schema.json", + "description": "vLLM backend configuration for large language models", + "path": "./backends/vllm.schema.json", + "parameters": "./backends/parameters/vllm-parameters.schema.json", + "backend_type": "vllm" + }, + "tensorrtllm": { + "id": "backends/tensorrtllm.schema.json", + "description": "TensorRT-LLM backend configuration", + "path": "./backends/tensorrtllm.schema.json", + "parameters": "./backends/parameters/tensorrtllm-parameters.schema.json", + "backend_types": [ + "tensorrtllm", + "tensorrtllm/pytorch" + ] + }, + "polygraphy": { + "id": "backends/polygraphy.schema.json", + "description": "Polygraphy (TensorRT) backend configuration", + "path": "./backends/polygraphy.schema.json", + "parameters": "./backends/parameters/polygraphy-parameters.schema.json", + "backend_type": "polygraphy" + }, + "dummy": { + "id": "backends/dummy.schema.json", + "description": "Dummy backend for testing", + "path": "./backends/dummy.schema.json", + "parameters": "./backends/parameters/dummy-parameters.schema.json", + "backend_type": "dummy" + }, + "pytorch": { + "id": "backends/pytorch.schema.json", + "description": "PyTorch backend configuration (Huggingface Transformers)", + "path": "./backends/pytorch.schema.json", + "parameters": "./backends/parameters/pytorch-parameters.schema.json", + "backend_type": "pytorch" + } + }, + "common": { + "base_model": { + "id": "common/base-model.schema.json", + "description": "Base model configuration (shared structure)", + "path": "./common/base-model.schema.json" + }, + "base_processor": { + "id": "common/base-processor.schema.json", + "description": "Base processor configuration (shared by preprocessors and postprocessors)", + "path": "./common/base-processor.schema.json" + }, + "definitions": { + "id": "common/definitions.schema.json", + "description": "Common definitions and reusable schemas", + "path": "./common/definitions.schema.json" + }, + "preprocessors": { + "id": "common/preprocessors.schema.json", + "description": "Preprocessor configurations", + "path": "./common/preprocessors.schema.json" + }, + "postprocessors": { + "id": "common/postprocessors.schema.json", + "description": "Postprocessor configurations", + "path": "./common/postprocessors.schema.json" + } + } + }, + "documentation": { + "readme": "./README.md", + "samples": "../builder/samples/" + } +} + diff --git a/tools/inference_builder/schemas/validate_config.py b/tools/inference_builder/schemas/validate_config.py new file mode 100644 index 00000000..d813037e --- /dev/null +++ b/tools/inference_builder/schemas/validate_config.py @@ -0,0 +1,220 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Validate Inference Builder configuration files against JSON schemas. + +Usage: + python validate_config.py config.yaml + python validate_config.py --schema custom_schema.json config.yaml +""" + +import argparse +import json +import sys +from pathlib import Path +from typing import Dict, Any + +try: + import yaml +except ImportError: + print("Error: PyYAML is required. Install with: pip install pyyaml") + sys.exit(1) + +try: + from jsonschema import validate, ValidationError, Draft7Validator +except ImportError: + print("Error: jsonschema is required. Install with: pip install jsonschema") + sys.exit(1) + + +def load_yaml(file_path: Path) -> Dict[Any, Any]: + """Load YAML configuration file. + + Args: + file_path: Path to YAML file + + Returns: + Parsed YAML as dictionary + """ + try: + with open(file_path, 'r') as f: + return yaml.safe_load(f) + except yaml.YAMLError as e: + print(f"Error parsing YAML file: {e}") + sys.exit(1) + except FileNotFoundError: + print(f"Error: File not found: {file_path}") + sys.exit(1) + + +def load_schema(schema_path: Path) -> Dict[Any, Any]: + """Load JSON schema file. + + Args: + schema_path: Path to schema file + + Returns: + Parsed schema as dictionary + """ + try: + with open(schema_path, 'r') as f: + return json.load(f) + except json.JSONDecodeError as e: + print(f"Error parsing schema file: {e}") + sys.exit(1) + except FileNotFoundError: + print(f"Error: Schema file not found: {schema_path}") + sys.exit(1) + + +def validate_config(config: Dict[Any, Any], schema: Dict[Any, Any], verbose: bool = False) -> bool: + """Validate configuration against schema. + + Args: + config: Configuration dictionary + schema: JSON schema dictionary + verbose: Enable verbose output + + Returns: + True if valid, False otherwise + """ + try: + # Create validator + validator = Draft7Validator(schema) + + # Check for errors + errors = list(validator.iter_errors(config)) + + if not errors: + print("✓ Configuration is valid!") + return True + + print(f"✗ Configuration validation failed with {len(errors)} error(s):\n") + + for i, error in enumerate(errors, 1): + print(f"Error {i}:") + print(f" Path: {'.'.join(str(p) for p in error.path)}") + print(f" Message: {error.message}") + + if verbose and error.context: + print(f" Context:") + for ctx_error in error.context: + print(f" - {ctx_error.message}") + + print() + + return False + + except Exception as e: + print(f"Error during validation: {e}") + return False + + +def get_backend_schema(config: Dict[Any, Any], schema_dir: Path) -> Path: + """Determine the appropriate backend schema based on config. + + Args: + config: Configuration dictionary + schema_dir: Directory containing schemas + + Returns: + Path to backend-specific schema or main schema + """ + if 'models' not in config or not config['models']: + return schema_dir / 'config.schema.json' + + # Get the backend from the first model + backend = config['models'][0].get('backend', '') + + backend_map = { + 'deepstream/nvinfer': 'deepstream.schema.json', + 'triton': 'triton.schema.json', + 'vllm': 'vllm.schema.json', + 'tensorrtllm': 'tensorrtllm.schema.json', + 'polygraphy': 'polygraphy.schema.json', + 'dummy': 'dummy.schema.json', + 'pytorch': 'pytorch.schema.json' + } + + for prefix, schema_file in backend_map.items(): + if backend.startswith(prefix): + backend_schema = schema_dir / 'backends' / schema_file + if backend_schema.exists(): + return backend_schema + + return schema_dir / 'config.schema.json' + + +def main(): + """Main entry point.""" + parser = argparse.ArgumentParser( + description='Validate Inference Builder configuration files' + ) + parser.add_argument( + 'config', + type=Path, + help='Path to configuration YAML file' + ) + parser.add_argument( + '-s', '--schema', + type=Path, + help='Path to JSON schema file (default: auto-detect from config)' + ) + parser.add_argument( + '-v', '--verbose', + action='store_true', + help='Enable verbose output' + ) + parser.add_argument( + '--schema-dir', + type=Path, + default=Path(__file__).parent, + help='Directory containing schema files' + ) + + args = parser.parse_args() + + # Load configuration + if args.verbose: + print(f"Loading configuration from: {args.config}") + config = load_yaml(args.config) + + # Determine schema to use + if args.schema: + schema_path = args.schema + else: + schema_path = get_backend_schema(config, args.schema_dir) + if args.verbose: + print(f"Auto-detected schema: {schema_path}") + + # Load schema + if args.verbose: + print(f"Loading schema from: {schema_path}") + schema = load_schema(schema_path) + + # Validate + if args.verbose: + print("\nValidating configuration...\n") + + is_valid = validate_config(config, schema, args.verbose) + + sys.exit(0 if is_valid else 1) + + +if __name__ == '__main__': + main() + diff --git a/tools/inference_builder/templates/api_server/fastapi/responder.jinja.py b/tools/inference_builder/templates/api_server/fastapi/responder.jinja.py new file mode 100644 index 00000000..9cda8a30 --- /dev/null +++ b/tools/inference_builder/templates/api_server/fastapi/responder.jinja.py @@ -0,0 +1,88 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} +{{ license }} + +import json +from dataclasses import asdict +from config import global_config +from .model import GenericInference +from lib.utils import create_jinja2_env, convert_list +from lib.responder import ResponderBase +from lib.inference import Stop +from lib.errors import EnhancedError +import re +import numpy as np +import torch +from typing import Dict, Any +from fastapi.responses import StreamingResponse +import asyncio + +class Responder(ResponderBase): + def __init__(self): + super().__init__() + self._inference = GenericInference() + self._inference.initialize() + + # initialize the action map + {% for responder in responders %} + self._action_map["{{ responder.operation }}"] = self.{{ responder.name }} + {% endfor %} + + def process_request( + self, + responder : str, + request, + ): + # the helper function transforms the HTTP request to a dictionary that satisfies the inference input schema + return super().process_request(responder, request) + + def process_response(self, responder: str, request, response: Dict[str, Any]): + accept = request.headers.get("accept", "") + streaming = "application/x-ndjson" in accept + # transform numpy ndarray or tensor to universal value types for inference + if responder == "infer": + type_map = { i.name: i.data_type for i in global_config.output} + for name in response: + if not name in type_map: + self.logger.error(f"Unexpected output: {name}") + continue + expected_type = type_map[name] + value = response[name] + if isinstance(value, np.ndarray) or isinstance(value, torch.Tensor): + l = value.tolist() + if expected_type == "TYPE_STRING" and value.dtype != np.string_: + response[name] = convert_list(l, lambda i: i.decode("utf-8", "ignore")) + elif len(response[name].shape) == 1 and len(l) == 1: + response[name] = l[0] + else: + response[name] = l + + # the helper function transforms the inference output to a json string + json_string = super().process_response(responder, request, response) + self.logger.debug(f"Sending json payload: {json_string}") + + return (json.dumps(json.loads(json_string), separators=(',', ':')) + "\n") if streaming else json.loads(json_string) + + async def take_action(self, action_name:str, **kwargs): + action = self._action_map.get(action_name, None) + if not action: + raise ValueError(f"Unknown action: {action_name}") + return await action(**kwargs) + +{% for responder in responders %} +{{ responder.implementation }} +{% endfor %} diff --git a/tools/inference_builder/templates/api_server/fastapi/route/inference.jinja2 b/tools/inference_builder/templates/api_server/fastapi/route/inference.jinja2 new file mode 100644 index 00000000..65fca099 --- /dev/null +++ b/tools/inference_builder/templates/api_server/fastapi/route/inference.jinja2 @@ -0,0 +1,76 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +from typing import Any +{{imports}} +from contextlib import asynccontextmanager +from fastapi import Request, HTTPException, FastAPI, APIRouter +import uvicorn +from .responder import Responder +from lib.utils import get_logger +import os + +class FastAPIInterface: + + def __init__(self, *args, **kwargs): + self.app = FastAPI() + self.router = APIRouter() + self.responder = Responder() + self.logger = get_logger(__name__) + self.register_routes() + self.app.include_router(self.router) + + def register_routes(self): + {% for operation in operations %} + self.router.{{operation.type}}("{{operation.path}}")(self.{{operation.function_name}}) + {% endfor %} + + + def serve(self, **kwargs): + http_port = int(os.getenv("HTTP_PORT", "8000")) + uvicorn.run(self.app, host="0.0.0.0", port=http_port) + + {% for operation in operations %} + async def {{operation.function_name}}(self, request: Request, {{operation.snake_case_arguments}}) -> {{operation.response}}: + self.logger.info("{{operation.function_name}} called") + kwargs = dict(locals()) + kwargs.pop("self") + status, response = await self.responder.take_action("{{operation.function_name}}", **kwargs) + if status != 200: + raise HTTPException(status_code=status, detail=response) + self.logger.debug(f"response generated as {response}") + return response + {% endfor %} + +def get_openapi_schema(file_dump=True, pprint=True): + """ + Utility function to get API schema in YAML format. + This is used after inference.py has been completed with custom user APIs. + """ + import yaml + interface_instance = Interface() + schema: dict = interface_instance.get_openapi_schema() + if pprint: + print(yaml.dump(schema, sort_keys=False)) + if file_dump: + with open("api_spec.yaml", "w+") as file: + yaml.dump(schema, file, sort_keys=False) + + +def main(): + interface = FastAPIInterface() + interface.serve() diff --git a/tools/inference_builder/templates/backend/deepstream.jinja.py b/tools/inference_builder/templates/backend/deepstream.jinja.py new file mode 100644 index 00000000..1358b319 --- /dev/null +++ b/tools/inference_builder/templates/backend/deepstream.jinja.py @@ -0,0 +1,1178 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +from pyservicemaker import Pipeline, Flow, BufferProvider, Buffer, RenderMode, BufferRetriever, as_tensor, StateTransitionMessage, DynamicSourceMessage, SourceConfig, BatchMetadataOperator, Probe +from typing import Dict, List +from queue import Queue, Empty, Full +from dataclasses import dataclass +import base64 +import numpy as np +from abc import ABC, abstractmethod +import yaml +import tempfile +import os + +png_data = base64.b64decode("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAEElEQVR4nGK6HcwNCAAA//8DTgE8HuxwEQAAAABJRU5ErkJggg==") +jpg_data = base64.b64decode("/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigAooooAKKKKACiiigD/2Q==") + + +@dataclass +class PerfConfig: + enable_fps_logs: bool = False + enable_latency_logs: bool = False + +@dataclass +class RenderConfig: + enable_display: bool = False + enable_osd: bool = False + enable_stream: bool = False + rtsp_mount_point: str | None = "/ds-test" + rtsp_port: int | None = 8554 + seg_mask_config: dict | None = None + + def __bool__(self) -> bool: + """Check if render configuration is valid.""" + if self.enable_osd and not self.enable_display and not self.enable_stream: + logger.warning("RenderConfig: enable_osd is True but both enable_display and enable_stream are False. OSD requires an output method.") + return False + if self.enable_stream and (self.rtsp_mount_point is None or self.rtsp_port is None): + logger.warning("RenderConfig: enable_stream is True but rtsp_mount_point or rtsp_port is None.") + return False + return True + +@dataclass +class TrackerConfig: + config_path: str | None = None + lib_path: str | None = None + width: int = 1920 + height: int = 1088 + display_tracking_id: bool = False + + def __bool__(self) -> bool: + """Check if all required tracker configuration fields are set.""" + # Check if width/height is set than we need to have both, set default values if not set + if (self.width is not None and self.height is None) or (self.width is None and self.height is not None): + logger.warning("TrackerConfig: width and height must be set together, setting default values") + return self.config_path is not None and self.lib_path is not None + +@dataclass +class MessageBrokerConfig: + proto_lib_path: str | None = None + conn_str: str | None = None + topic: str | None = None + msgconv_config_path: str | None = None + msgconv_payload_type: int = 0 + msgconv_msg2p_new_api: bool = False + msgconv_frame_interval: int = 30 + msgconv_msg2p_lib: str | None = None + + def __bool__(self) -> bool: + """Check if all required message broker configuration fields are set.""" + if self.msgconv_msg2p_lib is not None and not os.path.exists(self.msgconv_msg2p_lib): + logger.warning(f"MessageBrokerConfig: msgconv_msg2p_lib does not exist: {self.msgconv_msg2p_lib}") + return False + if self.msgconv_config_path is not None and not os.path.exists(self.msgconv_config_path): + logger.warning(f"MessageBrokerConfig: msgconv_config_path does not exist: {self.msgconv_config_path}") + return False + if self.proto_lib_path is not None and not os.path.exists(self.proto_lib_path): + logger.warning(f"MessageBrokerConfig: proto_lib_path does not exist: {self.proto_lib_path}") + return False + return ( + self.proto_lib_path is not None and + self.msgconv_config_path is not None and + self.conn_str is not None and + self.topic is not None + ) + +@dataclass +class AnalyticsConfig: + """Configuration for nvdsanalytics (ROI, line-crossing, overcrowding, direction).""" + config_path: str | None = None + gpu_id: int = 0 + + def __bool__(self) -> bool: + """Check if analytics is configured (config_path set).""" + if self.config_path is None: + return False + if not os.path.exists(self.config_path): + logger.warning(f"AnalyticsConfig: config_path does not exist: {self.config_path}") + return False + return True + +@dataclass +class KittiConfig: + infer_kitti_output_dir: str | None = None + tracker_kitti_output_dir: str | None = None + + def __bool__(self) -> bool: + """Check if any required kitti configuration fields are set.""" + if self.infer_kitti_output_dir is None and self.tracker_kitti_output_dir is None: + logger.warning("KittiConfig: No kitti output directory specified") + return False + if self.infer_kitti_output_dir is not None and not os.path.exists(self.infer_kitti_output_dir): + logger.warning(f"KittiConfig: infer_kitti_output_dir does not exist: {self.infer_kitti_output_dir}") + return False + if self.tracker_kitti_output_dir is not None and not os.path.exists(self.tracker_kitti_output_dir): + logger.warning(f"KittiConfig: tracker_kitti_output_dir does not exist: {self.tracker_kitti_output_dir}") + return False + return True + +class ImageTensorInput(BufferProvider): + + def __init__(self, height, width, format): + super().__init__() + self.width = width + self.height = height + self.format = format + self.framerate = 1 + self.device = 'cpu' + self.queue = Queue(maxsize=10) + + def generate(self, size): + tensor = self.queue.get() + if isinstance(tensor, np.ndarray): + return Buffer(tensor.tolist()) + elif isinstance(tensor, Stop): + # EOS + return Buffer() + else: + logger.exception("Unexpected input tensor data") + return Buffer() + + def send(self, data): + self.queue.put(data) + +class GenericTensorInput(): + def __init__(self, device_id): + self.queue = Queue(maxsize=10) + self._device_id = device_id + + def generate(self, n): + try: + tensors = self.queue.get(timeout=1) + except Empty: + logger.warning("No tensor data to generate") + return dict() + result = {k: as_tensor(v, "").to_gpu(self._device_id) for k, v in tensors.items()} + return result + + def send(self, data): + self.queue.put(data) + +class StaticTensorInput(): + def __init__(self, device_id): + self._tensors = {} + self._device_id = device_id + + def generate(self, n): + result = {k: as_tensor(v, "").to_gpu(self._device_id) for k, v in self._tensors.items()} + return result + + def set(self, data): + self._tensors.update(data) + +class TensorInputPool(ABC): + @abstractmethod + def submit(self, data: List): + pass + @abstractmethod + def stop(self, reason: str): + pass + +class ImageTensorInputPool(TensorInputPool): + + def __init__(self, height, width, formats, batch_size, image_tensor_name, media_url_tensor_name, mime_tensor_name, device_id, require_extra_input): + self._image_inputs = [ImageTensorInput(width, height, format) for format in formats for _ in range(batch_size)] + self._media_url_tensor_name = media_url_tensor_name + self._mime_tensor_name = mime_tensor_name + self._image_tensor_name = image_tensor_name + self._generic_input = GenericTensorInput(device_id) if require_extra_input else None + self._batch_size = batch_size + + @property + def image_inputs(self): + return self._image_inputs + + @property + def generic_input(self): + return self._generic_input + + def submit(self, data: List): + indices = [] + for item in data: + mime_type = item.pop(self._mime_tensor_name, None) + if mime_type is None: + logger.error("MIME type is not specified") + continue + mime_type = mime_type.split('/'); + if mime_type[0] == 'image': + format = mime_type[1].upper() + # try find the free slot for the specific format + i, image_tensor_input = next(((i, x) for i,x in enumerate(self._image_inputs) if x.format == format and x.queue.empty()), (-1, None)) + if image_tensor_input is None: + i, image_tensor_input = next(((i, x) for i,x in enumerate(self._image_inputs) if x.format == format), (-1, None)) + if image_tensor_input is not None: + if self._image_tensor_name in item: + image_tensor = item.pop(self._image_tensor_name) + image_tensor_input.send(image_tensor) + indices.append(i) + elif self._media_url_tensor_name in item: + image_url = item.pop(self._media_url_tensor_name) + with open(image_url, 'rb') as f: + image_tensor = np.frombuffer(f.read(), dtype=np.uint8) + image_tensor_input.send(image_tensor) + indices.append(i) + else: + logger.error(f"image tensor or media url is missing: {item}") + else: + logger.error(f"Unable to find free slot for format {format}") + else: + logger.error(f"Unsupported MIME type {mime_type}") + continue + if self._generic_input: + data = [data[i:i + self._batch_size] for i in range(0, len(data), self._batch_size)] + for d in data: + self._generic_input.send(stack_tensors_in_dict(d)) + # batched indices for each input + return indices + + def stop(self, reason: str): + for input in self._image_inputs: + input.send(Stop(reason)) + if self._generic_input: + self._generic_input.send(Stop(reason)) + +class BulkVideoInputPool(TensorInputPool): + def __init__(self, + max_batch_size, + batch_timeout, + media_url_tensor_name, + source_tensor_name, + mime_tensor_name, + infer_config_paths, + preprocess_config_paths, + tracker_config: TrackerConfig, + analytics_config: AnalyticsConfig, + msgbroker_config: MessageBrokerConfig, + render_config: RenderConfig, + perf_config: PerfConfig, + kitti_config: KittiConfig, + output, + device_id, + require_extra_input, + engine_file_names, + dims, + label_file_path, + model_home + ): + self._batch_size = max_batch_size + self._batch_timeout = batch_timeout + self._media_url_tensor_name = media_url_tensor_name + self._source_tensor_name = source_tensor_name + self._mime_tensor_name = mime_tensor_name + self._infer_config_paths = infer_config_paths + self._engine_file_names = engine_file_names + self._preprocess_config_paths = preprocess_config_paths + self._pipeline = None + self._output = output + self._generic_input = StaticTensorInput(device_id) if require_extra_input else None + self._device_id = device_id + self._dims = dims + self._tracker_config = tracker_config + self._analytics_config = analytics_config + self._msgbroker_config = msgbroker_config + self._render_config = render_config + self._perf_config = perf_config + self._kitti_config = kitti_config + self._label_file_path = label_file_path + self._model_home = model_home + + def submit(self, data: List): + def on_message(message, total_streams, output): + # handle the dynamic source messages only in case the source config is set + if not isinstance(message, DynamicSourceMessage): + return + logger.info(f"Received source added/removed message: {message.source_added}") + if message.source_added: + total_streams += 1 + else: + total_streams -= 1 + if total_streams <= 0: + output.reset() + + url_list = [] + source_config_file = None + total_streams = 0 + for item in data: + if self._mime_tensor_name and self._mime_tensor_name in item: + item.pop(self._mime_tensor_name) + if self._media_url_tensor_name and self._media_url_tensor_name in item: + url_list.append(str(item.pop(self._media_url_tensor_name))) + elif self._source_tensor_name and self._source_tensor_name in item: + source_config_file = item.pop(self._source_tensor_name) + if not isinstance(source_config_file, str): + logger.error( + f"Source config value must be a string, got {type(source_config_file).__name__}: {source_config_file}" + ) + return [] + if not source_config_file.lower().endswith(('.yml', '.yaml')): + logger.error( + f"Source config file must be a YAML file: {source_config_file}" + ) + return [] + # Correct relative path to absolute path relative to model_home + if not os.path.isabs(source_config_file): + source_config_file = os.path.join(self._model_home, source_config_file) + break + else: + logger.error(f"Invalid input data: {data}") + continue + + if len(url_list) > self._batch_size: + logger.warning( + f"Number of media urls ({len(url_list)}) > " + f"batch size ({self._batch_size}), " + f"only the first {self._batch_size} will be used" + ) + url_list = url_list[:self._batch_size] + + pipeline = Pipeline(f"deepstream-video-batch") + if self._generic_input and data: + self._generic_input.set(stack_tensors_in_dict(data)) + + # Use appropriate batch_capture method based on input type + if source_config_file: + sc = SourceConfig() + sc.load(source_config_file) + total_streams = len(sc.sensor_list) + flow = Flow(pipeline).batch_capture( + input=source_config_file, + width=self._dims[1], height=self._dims[0], + batch_size=self._batch_size, + batched_push_timeout=self._batch_timeout + ) + else: + total_streams = len(url_list) + flow = Flow(pipeline).batch_capture( + url_list, + width=self._dims[1], + height=self._dims[0], + batched_push_timeout=self._batch_timeout) + + for config in self._preprocess_config_paths: + flow = flow.preprocess(config, None if not self._generic_input else self._generic_input.generate) + for config_path, engine_file in zip(self._infer_config_paths, self._engine_file_names): + if engine_file: + flow = flow.infer(config_path, batch_size=self._batch_size, model_engine_file=engine_file) + else: + flow = flow.infer(config_path, batch_size=self._batch_size) + if self._kitti_config.infer_kitti_output_dir: + flow = flow.attach(what="kitti_dump_probe", name="inference_kitti_dump", properties={"kitti-dir": self._kitti_config.infer_kitti_output_dir}) + if self._tracker_config: + flow = flow.track( + ll_config_file=self._tracker_config.config_path, + ll_lib_file=self._tracker_config.lib_path, + gpu_id=self._device_id, + tracker_width=self._tracker_config.width, + tracker_height=self._tracker_config.height, + display_tracking_id=self._tracker_config.display_tracking_id + ) + if self._kitti_config.tracker_kitti_output_dir: + flow = flow.attach(what="kitti_dump_probe", name="tracker_kitti_dump", properties={"tracker-kitti-output": True,"kitti-dir": self._kitti_config.tracker_kitti_output_dir}) + if self._analytics_config: + flow = flow.analyze( + self._analytics_config.config_path, + enable=1, + gpu_id=self._analytics_config.gpu_id + ) + + if self._perf_config.enable_fps_logs: + flow = flow.attach(what="measure_fps_probe", name="fps_probe") + if self._perf_config.enable_latency_logs: + flow = flow.attach(what="measure_latency_probe", name="latency_probe") + n_sink = 0 + if self._msgbroker_config: + flow = flow.attach( + what="add_message_meta_probe", + name="message_generator", + properties={ + "label-file": self._label_file_path if self._label_file_path else "", + "source-config": source_config_file if source_config_file else "" + } + ) + flow = flow.fork() + n_sink += 1 + publish_params = { + 'msg_broker_proto_lib': self._msgbroker_config.proto_lib_path, + 'msg_broker_conn_str': self._msgbroker_config.conn_str, + 'topic': self._msgbroker_config.topic, + 'msg_conv_config': self._msgbroker_config.msgconv_config_path, + 'msg_conv_payload_type': self._msgbroker_config.msgconv_payload_type, + 'msg_conv_msg2p_new_api': self._msgbroker_config.msgconv_msg2p_new_api, + 'msg_conv_frame_interval': self._msgbroker_config.msgconv_frame_interval, + 'sync': False + } + if self._msgbroker_config.msgconv_msg2p_lib: + publish_params['msg_conv_msg2p_lib'] = self._msgbroker_config.msgconv_msg2p_lib + + flow.publish(**publish_params) + if self._render_config.enable_stream: + if n_sink == 0: + flow = flow.fork() + n_sink += 1 + flow.render(RenderMode.STREAM, + enable_osd=self._render_config.enable_osd, + rtsp_mount_point=self._render_config.rtsp_mount_point, + rtsp_port=self._render_config.rtsp_port, + sync=False) + if self._render_config.enable_display: + if n_sink == 0: + flow = flow.fork() + n_sink += 1 + seg_mask_config = dict(self._render_config.seg_mask_config) if self._render_config.seg_mask_config else None + flow.render(RenderMode.DISPLAY, enable_osd=self._render_config.enable_osd, seg_mask_config=seg_mask_config, sync=False) + + flow = flow.attach(what=Probe("metadata_probe", self._output)).retrieve(self._output, **{'async': False}) + + if self._pipeline is not None: + self._pipeline.wait() + + if source_config_file: + # monitor the total streams and reset the output when the total streams is 0 + pipeline.start(on_message=lambda message: on_message(message, total_streams, self._output)) + else: + pipeline.start() + self._pipeline = pipeline + return list(range(len(url_list))) if url_list else list(range(self._batch_size)) + + def stop(self, reason: str): + if self._pipeline: + self._pipeline.stop() + self._pipeline.wait() + + +class BaseTensorOutput(BufferRetriever, BatchMetadataOperator): + """Base class for tensor outputs that can work as both BufferRetriever (appsink) and + BatchMetadataOperator (probe). + + Subclasses override _extract_metadata() to yield results. + Both consume() (appsink) and handle_metadata() (probe) iterate and deposit. + """ + def __init__(self, n_outputs, metadata_output_name: str = None, image_output_name: str = None): + """Initialize the base tensor output handler. + + Args: + n_outputs: Maximum number of output slots (typically max_batch_size + or max_batch_size * num_formats). Each slot corresponds to a + pad index in the DeepStream pipeline. + metadata_output_name: When set, collected results are wrapped in a + dict keyed by this name (e.g. {"output": }). Used by + MetadataOutput / PreprocessMetadataOutput for DS metadata + outputs (TYPE_CUSTOM_DS_METADATA). None for raw tensor outputs. + image_output_name: When set, indicates that decoded image frames + should be extracted from the DeepStream pipeline and returned + as RGB uint8 tensors in HWC layout (TYPE_CUSTOM_DS_IMAGE + output). The value is the output tensor name to use. + """ + BufferRetriever.__init__(self) + BatchMetadataOperator.__init__(self) + self._n_outputs = n_outputs + self._queue = Queue() + self._stashed = [] + self._metadata_output_name = metadata_output_name + self._image_output_name = image_output_name + self._image_queue = Queue() # separate queue for decoded image frames + self._image_stashed = [] # stashed image batches for cross-collect reuse + + def consume(self, buffer): + """Called when used as appsink retriever (BufferRetriever interface). + + When image output is enabled, extracts decoded RGB HWC frames from + the buffer and converts them to CPU numpy arrays via dlpack before + queuing. The dlpack conversion must happen here while the buffer's + GPU memory is still valid — once consume() returns, the buffer is + released and the GPU tensor data becomes stale. + + Obtains batch_meta from the buffer to get the batch_id → pad_index + mapping, then calls buffer.extract(batch_id) for each frame. + Note: batch_id is assigned by arrival order, not pad index — e.g. if + only pads 0, 2, 3 deliver frames, they get batch_ids 0, 1, 2. + """ + if self._image_output_name: + received = [None] * self._n_outputs + batch_meta = buffer.batch_meta + for frame_meta in batch_meta.frame_items: + frame = buffer.extract(frame_meta.batch_id) + if frame is not None: + # Clone via dlpack while buffer GPU memory is still valid; + # clone() copies to a new GPU allocation so the tensor + # survives after the buffer is released. + frame = torch.utils.dlpack.from_dlpack(frame).clone() + received[frame_meta.pad_index] = (frame, frame_meta.buffer_pts) + self._image_queue.put(received) + return 1 + + def handle_metadata(self, batch_meta): + """Called when used as probe (BatchMetadataOperator interface).""" + for metadata in self._extract_metadata(batch_meta): + self._deposit(metadata) + + def _extract_metadata(self, batch_meta): + """Override in subclasses to extract metadata. + + Yields a list (indexed by pad_index) where each non-None element is + a dict containing the extracted data. The dict should include a + "timestamp" key (buffer_pts) for synchronization with image frames + in collect(). DS metadata dicts already carry this; tensor outputs + insert it explicitly. + """ + return + yield # Make this a generator + + def collect(self, indices: List, timeout=None) -> List | None: + def move_data(data: list, collected: list): + for i, d in enumerate(data): + if d is not None: + if collected[i] is None: + collected[i] = d + data[i] = None + + def _drain(queue, stashed, collected, indices): + """Drain a queue into collected slots using stash for leftovers.""" + while stashed: + data = stashed.pop(0) + move_data(data, collected) + while not all(collected[i] is not None for i in indices): + try: + data = queue.get(timeout=timeout) + if data is None: + break + move_data(data, collected) + if any(d is not None for d in data): + stashed.append(data) + except Empty: + break + + def _drain_images(queue, stashed, collected, indices, target_pts): + """Drain image queue, discarding images older than metadata timestamps.""" + def process(data): + for i, d in enumerate(data): + if d is None: + continue + # Always discard stale images even if this pad is already collected + if i in target_pts: + _, img_pts = d + if img_pts < target_pts[i]: + data[i] = None + continue + if collected[i] is None: + collected[i] = d + data[i] = None + + remaining = [] + for data in stashed: + process(data) + if any(d is not None for d in data): + remaining.append(data) + stashed.clear() + stashed.extend(remaining) + + while not all(collected[i] is not None for i in indices): + try: + data = queue.get(timeout=timeout) + if data is None: + break + process(data) + if any(d is not None for d in data): + stashed.append(data) + except Empty: + break + + n_slots = max(indices) + 1 + + # Drain metadata queue first — metadata drives collection. + meta_collected = [None] * n_slots + _drain(self._queue, self._stashed, meta_collected, indices) + + if self._image_output_name: + # Build target timestamps from metadata for image synchronization. + # Images with pts older than the metadata are stale and discarded. + target_pts = {} + for i in indices: + meta = meta_collected[i] + if meta is not None and isinstance(meta, dict): + pts = meta.get("timestamp") + if pts is not None: + target_pts[i] = pts + + image_collected = [None] * n_slots + _drain_images(self._image_queue, self._image_stashed, image_collected, indices, target_pts) + + if all(i is None for i in meta_collected) and all(i is None for i in image_collected): + return None + + results = [] + for idx in indices: + result = {} + metadata = meta_collected[idx] + image_entry = image_collected[idx] + + if metadata is not None: + if self._metadata_output_name is not None: + result[self._metadata_output_name] = metadata + elif isinstance(metadata, dict): + result.update(metadata) + else: + result = metadata + + if image_entry is not None: + frame, _ = image_entry + if not isinstance(result, dict): + result = {} + result[self._image_output_name] = frame + + results.append(result if result else None) + return results + else: + # --- Metadata-only path --- + if all(i is None for i in meta_collected): + return None + collected = [meta_collected[i] for i in indices] + return collected if self._metadata_output_name is None else [ + {self._metadata_output_name: r} for r in collected + ] + + def reset(self): + # wake up the old queue first + self._queue.put(None) + self._queue = Queue(maxsize=self._queue.maxsize) + self._stashed = [] + self._image_queue = Queue() + self._image_stashed = [] + + def _deposit(self, received: list): + logger.debug("DeepstreamBackend: Depositing data: %s", received) + try: + self._queue.put(received) + except Full: + logger.warning(f"DeepstreamBackend: Queue is full, dropping data: {received}") + + +class TensorOutput(BaseTensorOutput): + def __init__(self, n_outputs, preprocess_config_path, image_output_name=None): + super().__init__(n_outputs, metadata_output_name=None, image_output_name=image_output_name) + self._preprocess_config_path = preprocess_config_path + + def _extract_metadata(self, batch_meta): + received = [None] * self._n_outputs + if self._preprocess_config_path: + for meta in batch_meta.preprocess_batch_items: + preprocess_batch = meta.as_preprocess_batch() + if not preprocess_batch: + continue + for roi in preprocess_batch.rois: + result = dict() + for user_meta in roi.tensor_items: + tensor_output = user_meta.as_tensor_output() + if tensor_output : + for n, tensor in tensor_output.get_layers().items(): + torch_tensor = torch.utils.dlpack.from_dlpack(tensor).to('cpu') + result[n] = torch_tensor + result["timestamp"] = roi.frame_meta.buffer_pts + received[roi.frame_meta.pad_index] = result + else: + for frame_meta in batch_meta.frame_items: + result = dict() + for user_meta in frame_meta.tensor_items: + tensor_output = user_meta.as_tensor_output() + if tensor_output : + for n, tensor in tensor_output.get_layers().items(): + torch_tensor = torch.utils.dlpack.from_dlpack(tensor).to('cpu') + result[n] = torch_tensor + result["timestamp"] = frame_meta.buffer_pts + received[frame_meta.pad_index] = result + yield received + +class PreprocessMetadataOutput(BaseTensorOutput): + """Output handler for preprocess metadata.""" + def __init__(self, n_outputs, output_name, dims, image_output_name=None): + super().__init__(n_outputs, metadata_output_name=output_name, image_output_name=image_output_name) + self._n_outputs = n_outputs + self._shape = dims + + def _extract_metadata(self, batch_meta): + for meta in batch_meta.preprocess_batch_items: + preprocess_batch = meta.as_preprocess_batch() + if not preprocess_batch: + continue + received = preprocess_batch.extract(self._n_outputs) + for roi in preprocess_batch.rois: + idx = roi.frame_meta.pad_index + if received[idx] is not None: + received[idx]["timestamp"] = roi.frame_meta.buffer_pts + yield received + +class MetadataOutput(BaseTensorOutput): + def __init__(self, n_outputs, output_name, dims, image_output_name=None): + super().__init__(n_outputs, metadata_output_name=output_name, image_output_name=image_output_name) + self._n_outputs = n_outputs + self._shape = dims + + def _extract_metadata(self, batch_meta): + # DS metadata from batch_meta.extract() already carries pts internally + yield batch_meta.extract(self._n_outputs) + +class DeepstreamBackend(ModelBackend): + """Deepstream backend using pyservicemaker""" + def __init__(self, model_config:Dict, model_home: str, device_id: int=0): + super().__init__(model_config, model_home, device_id) + self._max_batch_size = model_config["max_batch_size"] + self._model_name = model_config["name"] + self._output_names = [o['name'] for o in model_config['output']] + self._output_types = [o['data_type'] for o in model_config['output']] + self._image_tensor_name = None + self._media_url_tensor_name = None + self._mime_tensor_name = None + self._source_tensor_name = None + self._image_output_name = None + self._inference_timeout = model_config["parameters"].get("inference_timeout", None) + self._in_pools = {} + self._outputs = {} + self._pipelines = {} + + tensor_output = False if self._output_types[0] == "TYPE_CUSTOM_DS_METADATA" else True + for o in model_config['output']: + if o['data_type'] == 'TYPE_CUSTOM_DS_IMAGE': + self._image_output_name = o['name'] + break + dims = (0, 0) + + if "parameters" not in model_config or "infer_config_path" not in model_config["parameters"]: + raise Exception("Deepstream pipeline requires infer_config_path") + + infer_config_paths = self._correct_config_paths(model_config["parameters"]['infer_config_path']) + if not infer_config_paths: + raise Exception("Deepstream pipeline requires infer_config_path") + + preprocess_config_paths = [] + if "preprocess_config_path" in model_config["parameters"]: + preprocess_config_paths = self._correct_config_paths(model_config["parameters"]['preprocess_config_path']) + + if "tracker_config" in model_config["parameters"]: + tracker_config = TrackerConfig( + config_path=self._correct_config_paths( + [model_config["parameters"]["tracker_config"].get("ll_config_file")] + )[0] if model_config["parameters"]["tracker_config"].get("ll_config_file") else None, + lib_path=self._correct_config_paths( + [model_config["parameters"]["tracker_config"]["ll_lib_file"]] + )[0], + width=model_config["parameters"]["tracker_config"].get("width", 1920), + height=model_config["parameters"]["tracker_config"].get("height", 1088), + display_tracking_id=model_config["parameters"]["tracker_config"].get("display_tracking_id", False) + ) + if not tracker_config: + logger.warning("DeepstreamBackend: tracker_config is not properlyconfigured") + else: + tracker_config = TrackerConfig() + + if "msgbroker_config" in model_config["parameters"]: + msgbroker_config = MessageBrokerConfig( + proto_lib_path=self._correct_config_paths( + [model_config["parameters"]["msgbroker_config"]["msgbroker_proto_lib_path"]] + )[0], + conn_str=model_config["parameters"]["msgbroker_config"]["msgbroker_conn_str"], + topic=model_config["parameters"]["msgbroker_config"]["msgbroker_topic"], + msgconv_config_path=self._correct_config_paths( + [model_config["parameters"]["msgbroker_config"]["msgconv_config_path"]] + )[0] + ) + if "msgconv_payload_type" in model_config["parameters"]["msgbroker_config"]: + msgbroker_config.msgconv_payload_type = model_config["parameters"]["msgbroker_config"]["msgconv_payload_type"] + if "msgconv_msg2p_new_api" in model_config["parameters"]["msgbroker_config"]: + msgbroker_config.msgconv_msg2p_new_api = model_config["parameters"]["msgbroker_config"]["msgconv_msg2p_new_api"] + if "msgconv_frame_interval" in model_config["parameters"]["msgbroker_config"]: + msgbroker_config.msgconv_frame_interval = model_config["parameters"]["msgbroker_config"]["msgconv_frame_interval"] + if "msgconv_msg2p_lib" in model_config["parameters"]["msgbroker_config"]: + msgbroker_config.msgconv_msg2p_lib = self._correct_config_paths( + [model_config["parameters"]["msgbroker_config"]["msgconv_msg2p_lib"]] + )[0] + if not msgbroker_config: + logger.warning("DeepstreamBackend: msgbroker_config is not properly configured") + else: + msgbroker_config = MessageBrokerConfig() + + if "render_config" in model_config["parameters"]: + render_config = RenderConfig( + enable_display=model_config["parameters"]["render_config"].get("enable_display", False), + enable_osd=model_config["parameters"]["render_config"].get("enable_osd", False), + enable_stream=model_config["parameters"]["render_config"].get("enable_stream", False), + rtsp_mount_point=model_config["parameters"]["render_config"].get("rtsp_mount_point", "/ds-test"), + rtsp_port=model_config["parameters"]["render_config"].get("rtsp_port", 8554), + seg_mask_config=model_config["parameters"]["render_config"].get("seg_mask_visualization", None) + ) + else: + render_config = RenderConfig() + + if "perf_config" in model_config["parameters"]: + perf_config = PerfConfig( + enable_fps_logs=model_config["parameters"]["perf_config"].get("enable_fps_logs", False), + enable_latency_logs=model_config["parameters"]["perf_config"].get("enable_latency_logs", False) + ) + else: + perf_config = PerfConfig() + + if "kitti_output_path" in model_config["parameters"]: + kitti_config = KittiConfig( + infer_kitti_output_dir=model_config["parameters"]["kitti_output_path"].get("infer", None), + tracker_kitti_output_dir=model_config["parameters"]["kitti_output_path"].get("tracker", None) + ) + if not kitti_config: + logger.warning("DeepstreamBackend: kitti_config is not properly configured") + else: + kitti_config = KittiConfig() + + if "analytics_config" in model_config["parameters"]: + ac = model_config["parameters"]["analytics_config"] + config_path = self._correct_config_paths([ac["config_file_path"]])[0] if ac.get("config_file_path") else None + analytics_config = AnalyticsConfig( + config_path=config_path, + gpu_id=ac.get("gpu_id", device_id) + ) + if not analytics_config: + logger.warning("DeepstreamBackend: analytics_config is not properly configured") + else: + analytics_config = AnalyticsConfig() + + infer_element = model_config['backend'].split('/')[-1] + with_triton = infer_element == 'nvinferserver' + require_extra_input = False + warmup_data_0 = dict() + warmup_data_1 = dict() + for input in model_config['input']: + if input['data_type'] == 'TYPE_CUSTOM_DS_IMAGE': + self._image_tensor_name = input['name'] + elif input['data_type'] == 'TYPE_CUSTOM_DS_MEDIA_URL': + self._media_url_tensor_name = input['name'] + elif input['data_type'] == 'TYPE_CUSTOM_DS_MIME': + self._mime_tensor_name = input['name'] + elif input['data_type'] == 'TYPE_CUSTOM_DS_SOURCE_CONFIG': + self._source_tensor_name = input['name'] + elif not ('optional' in input and input['optional']): + tensor_name = input['name'] + require_extra_input = True + np_type = np_datatype_mapping[input['data_type']] + warmup_data_0[tensor_name] = np.random.rand(*input['dims']).astype(np_type) + warmup_data_1[tensor_name] = np.random.rand(*input['dims']).astype(np_type) + if (self._image_tensor_name is None and + self._media_url_tensor_name is None and + self._source_tensor_name is None): + raise ValueError( + "Deepstream pipeline requires at least one " + "TYPE_CUSTOM_DS_IMAGE or TYPE_CUSTOM_DS_MEDIA_URL input " + "or TYPE_CUSTOM_DS_SOURCE_CONFIG input" + ) + if ((self._image_tensor_name or self._media_url_tensor_name) and + self._mime_tensor_name is None): + raise ValueError("Deepstream pipeline requires TYPE_CUSTOM_DS_MIME input") + + primary_infer_config_property = {} + try: + primary_infer_config_path = infer_config_paths[0] + with open(primary_infer_config_path, 'r') as f: + primary_infer_config = yaml.safe_load(f) + if "property" in primary_infer_config: + primary_infer_config_property = primary_infer_config["property"] + except Exception as e: + raise RuntimeError(f"Failed to load primary inference config: {e}") from e + + if "resize_video" in model_config["parameters"] and len(model_config["parameters"]["resize_video"]) == 2: + resize_to = model_config["parameters"]["resize_video"] + dims = (resize_to[0], resize_to[1]) + logger.info(f"DeepstreamBackend: setting video size to {dims}") + else: + # video resized to network dimensions from the primary inference config by default + if "infer-dims" in primary_infer_config_property: + infer_dims = [int(dim) for dim in primary_infer_config_property["infer-dims"].split(";")] + if len(infer_dims) == 3: + if "network-input-order" in primary_infer_config_property and primary_infer_config_property["network-input-order"] == 1: + dims = (infer_dims[0], infer_dims[1]) + else: + dims = (infer_dims[1], infer_dims[2]) + logger.info(f"DeepstreamBackend: setting video size to network dimensions: {dims}") + + if dims[0] == 0 or dims[1] == 0: + raise ValueError( + "DeepstreamBackend: unable to find network dimensions: " + "infer-dims missing in the config?" + ) + + # get the label file path from the primary inference config + label_file_path = None + if "labelfile-path" in primary_infer_config_property: + label_path = primary_infer_config_property["labelfile-path"] + # Convert to absolute path if it's relative + if not os.path.isabs(label_path): + label_file_path = os.path.join(self._model_home, label_path) + else: + label_file_path = label_path + + # construct the input pools, outputs and pipelines + if self._image_tensor_name is not None: + # image input support + media = "image" + formats = ["JPEG", "PNG"] + in_pool = ImageTensorInputPool(dims[0], dims[1], formats, self._max_batch_size, self._image_tensor_name, self._media_url_tensor_name, self._mime_tensor_name, device_id, require_extra_input) + n_output = self._max_batch_size * len(formats) + if tensor_output: + output = TensorOutput(n_output, preprocess_config_paths, image_output_name=self._image_output_name) + elif preprocess_config_paths: + output = PreprocessMetadataOutput(n_output, self._output_names[0], dims, image_output_name=self._image_output_name) + else: + output = MetadataOutput(n_output, self._output_names[0], dims, image_output_name=self._image_output_name) + # create the pipeline + pipeline = Pipeline(f"deepstream-{self._model_name}-{media}") + + self._pipelines[media] = pipeline + self._in_pools[media] = in_pool + self._outputs[media] = output + + # build the inference flow + flow = Flow(pipeline) + batch_timeout = model_config["parameters"].get("batch_timeout", 1000 * self._max_batch_size) + flow = flow.inject(in_pool.image_inputs).decode().batch(batch_size=self._max_batch_size, batched_push_timeout=batch_timeout, live_source=False, width=dims[1], height=dims[0]) + for config_file in preprocess_config_paths: + input = self._in_pools[media].generic_input if require_extra_input else None + flow = flow.preprocess(config_file, None if not input else input.generate) + for config_file in infer_config_paths: + engine_file = self._generate_engine_name(config_file, device_id, self._max_batch_size) + if engine_file: + flow = flow.infer(config_file, with_triton, batch_size=self._max_batch_size, model_engine_file=engine_file) + else: + flow = flow.infer(config_file, with_triton, batch_size=self._max_batch_size) + + flow = flow.attach(what=Probe("metadata_probe", output)).retrieve(output, **{'async': False}) + + # warm up + warmup_data_0[self._image_tensor_name] = np.frombuffer(png_data, dtype=np.uint8) + warmup_data_0[self._mime_tensor_name] = "image/png" + warmup_data_1[self._image_tensor_name] = np.frombuffer(jpg_data, dtype=np.uint8) + warmup_data_1[self._mime_tensor_name] = "image/jpeg" + + logger.info("Image decoder warming up - pre-filling all queues") + # Submit BOTH PNG and JPEG warmup data BEFORE starting pipeline + # This ensures all 4 sources have data when streaming threads start + indices_0 = in_pool.submit([warmup_data_0.copy() for _ in range(self._max_batch_size)]) + indices_1 = in_pool.submit([warmup_data_1.copy() for _ in range(self._max_batch_size)]) + + # Now start pipeline - all queues have data + pipeline.start() + + # Collect all results together (PNG + JPEG) + all_indices = indices_0 + indices_1 + results = output.collect(all_indices) + output.reset() + logger.info(f"Warm up done: {results}") + + if (self._media_url_tensor_name is not None or + self._source_tensor_name is not None): + # video input support + media = "video" + if tensor_output: + output = TensorOutput(self._max_batch_size, preprocess_config_paths, image_output_name=self._image_output_name) + elif preprocess_config_paths: + output = PreprocessMetadataOutput(self._max_batch_size, self._output_names[0], dims, image_output_name=self._image_output_name) + else: + output = MetadataOutput(self._max_batch_size, self._output_names[0], dims, image_output_name=self._image_output_name) + engine_files = [ + self._generate_engine_name( + config_file, + device_id, + self._max_batch_size + ) + for config_file in infer_config_paths + ] + in_pool = BulkVideoInputPool( + max_batch_size=self._max_batch_size, + batch_timeout=model_config["parameters"].get("batch_timeout", 1000 * self._max_batch_size), + media_url_tensor_name=self._media_url_tensor_name, + source_tensor_name=self._source_tensor_name, + mime_tensor_name=self._mime_tensor_name, + infer_config_paths=infer_config_paths, + preprocess_config_paths=preprocess_config_paths, + tracker_config=tracker_config, + analytics_config=analytics_config, + msgbroker_config=msgbroker_config, + render_config=render_config, + perf_config=perf_config, + kitti_config=kitti_config, + output=output, + device_id=device_id, + require_extra_input=require_extra_input, + engine_file_names=engine_files, + dims=dims, + label_file_path=label_file_path, + model_home=self._model_home + ) + + # build tensorrt engine if not exist + if not all (os.path.exists(e) for e in engine_files): + with tempfile.NamedTemporaryFile(suffix='.jpg', delete=False) as f: + f.write(jpg_data) + warmup_video_path = f.name + # Disable perf/render probes for warmup to avoid leaked FPS reporters + in_pool._perf_config = PerfConfig() + in_pool._render_config = RenderConfig() + try: + logger.info("Video decoder warming up - building TensorRT engine") + warmup_item = {self._media_url_tensor_name: warmup_video_path} + if self._mime_tensor_name: + warmup_item[self._mime_tensor_name] = "video/mp4" + indices = in_pool.submit([warmup_item]) + if indices: + results = output.collect(indices) + logger.info(f"Video warm up done: {results}") + output.reset() + in_pool.stop("warmup") + finally: + in_pool._perf_config = perf_config + in_pool._render_config = render_config + os.unlink(warmup_video_path) + + self._in_pools[media] = in_pool + self._outputs[media] = output + + logger.info( + f"DeepstreamBackend created for {self._model_name} to generate " + f"{self._output_names}, output tensor: {tensor_output}" + ) + + + def __call__(self, *args, **kwargs): + in_data_list = args if args else split_tensor_in_dict(kwargs) + media = None + explicit_batch = True if args else False + + # analyze the input batch + for data in in_data_list: + # convert numpy types to native Python types + for k, v in data.items(): + if isinstance(v, np.generic): + v = v.item() + if isinstance(v, bytes): + v = v.decode() + data[k] = v + # get the media type + if ((self._image_tensor_name in data or self._media_url_tensor_name in data) and + not self._mime_tensor_name in data): + logger.error(f"MIME type is not specified for input {data}") + return + if self._source_tensor_name and self._source_tensor_name in data: + media = "video" + explicit_batch = True + break # only video source is supported through source config + + current_media = data[self._mime_tensor_name].split('/')[0] + if media is None: + media = current_media + elif media != current_media: + logger.error( + f"Mixed media types are not supported in a single batch, " + f"got {media} and {current_media}" + ) + return + + # validate the media type + if media not in self._in_pools: + if media == "image": + logger.error("TYPE_CUSTOM_DS_IMAGE input must be added to the pipeline for image support") + elif media == "video": + logger.error("TYPE_CUSTOM_DS_MEDIA_URL input must be added to the pipeline for video support") + else: + logger.error("Unknown media type : ", media) + return + + # submit the data to the pipeline which supports the media type + indices = self._in_pools[media].submit(in_data_list) + # collect the results + while True: + # TODO: timeout should be runtime configurable + results = self._outputs[media].collect(indices, timeout=self._inference_timeout) + if not results: + logger.info("DeepstreamBackend: No more data from this batch") + break + out_data_list = [] + for result in results: + out_data = dict() + for o in self._output_names: + if o in result: + out_data[o] = result[o] + else: + out_data[o] = None + out_data_list.append(out_data) + yield out_data_list if explicit_batch else out_data_list[0] + # No consecutive inference results for image + if media == "image": + break + + def stop(self): + for input_pool in self._in_pools.values(): + input_pool.stop("Finalized") + for pipeline in self._pipelines.values(): + pipeline.stop() + pipeline.wait() + self._in_pools.clear() + self._pipelines.clear() + super().stop() + + def __del__(self): + self.stop() + + def _generate_engine_name(self, config_path: str, device_id: int, batch_size: int): + def network_mode_to_string(network_mode: int): + if network_mode == 0: + return "fp32" + elif network_mode == 1: + return "int8" + elif network_mode == 2: + return "fp16" + else: + return "" + network_mode = "fp16" + onnx_file = "model.onnx" + with open(config_path, 'r') as f: + config = yaml.safe_load(f) + if not "property" in config: + return None + property = config["property"] + if not "onnx-file" in property: + return None + onnx_file = property["onnx-file"] + if "network-mode" in property: + mode = network_mode_to_string(property["network-mode"]) + if mode: + network_mode = mode + engine_file = f"{onnx_file}_b{batch_size}_gpu{device_id}_{network_mode}.engine" + return os.path.join(self._model_home, engine_file) + + + def _correct_config_paths(self, config_paths: List[str]) -> List[str]: + if not config_paths: + return [] + for i, path in enumerate(config_paths): + if not os.path.isabs(path): + config_paths[i] = os.path.join(self._model_home, path) + return config_paths diff --git a/tools/inference_builder/templates/backend/dummy.jinja.py b/tools/inference_builder/templates/backend/dummy.jinja.py new file mode 100644 index 00000000..b4ff1f1a --- /dev/null +++ b/tools/inference_builder/templates/backend/dummy.jinja.py @@ -0,0 +1,107 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +import numpy as np + +class DummyBackend(ModelBackend): + """Python TensorRT Backend from polygraph""" + def __init__(self, model_config:Dict, model_home: str, device_id: int=0): + super().__init__(model_config, model_home, device_id) + self._model_name = model_config["name"] + self._input_config = [i for i in model_config['input']] + self._output_config = [o for o in model_config['output']] + self._params = model_config["parameters"] if "parameters" in model_config else {} + n_workers = self._params.get("thread_concurrency", 0) + # enable thread pool for concurrent inference + self._thread_pool = ThreadPoolExecutor(max_workers=n_workers) if n_workers > 0 else None + logger.info(f"DummyBackend created for {self._model_name} to generate {[o['name'] for o in self._output_config]}") + + def __call__(self, *args, **kwargs): + def generate_sync(in_data): + for _ in in_data: + yield self._generate_dummy_data() + + def generate_async(in_data): + return [self._generate_dummy_data() for _ in in_data] + + in_data = list(args) if args else [kwargs] + if self._thread_pool is not None: + return self._thread_pool.submit(generate_async, in_data) + else: + return generate_sync(in_data) + + def _generate_dummy_data(self): + dummy_data = {} + for config in self._output_config: + name = config['name'] + dims = config['dims'] + data_type = config.get('data_type', 'TYPE_FP32') + + # Generate random data based on type with correct numpy dtype + if data_type == 'TYPE_BOOL': + data = np.random.choice([True, False], size=dims).astype(np.bool_) + elif data_type == 'TYPE_INT8': + data = np.random.randint(-128, 127, size=dims, dtype=np.int8) + elif data_type == 'TYPE_INT16': + data = np.random.randint(-32768, 32767, size=dims, dtype=np.int16) + elif data_type == 'TYPE_INT32': + data = np.random.randint(-100, 100, size=dims, dtype=np.int32) + elif data_type == 'TYPE_INT64': + data = np.random.randint(-100, 100, size=dims, dtype=np.int64) + elif data_type == 'TYPE_UINT8': + data = np.random.randint(0, 255, size=dims, dtype=np.uint8) + elif data_type == 'TYPE_UINT16': + data = np.random.randint(0, 65535, size=dims, dtype=np.uint16) + elif data_type == 'TYPE_UINT32': + data = np.random.randint(0, 100, size=dims, dtype=np.uint32) + elif data_type == 'TYPE_UINT64': + data = np.random.randint(0, 100, size=dims, dtype=np.uint64) + elif data_type == 'TYPE_FP16': + data = np.random.randn(*dims).astype(np.float16) + elif data_type == 'TYPE_FP32': + data = np.random.randn(*dims).astype(np.float32) + elif data_type == 'TYPE_FP64': + data = np.random.randn(*dims).astype(np.float64) + elif 'TYPE_STRING' in data_type or 'TYPE_BYTES' in data_type: + # Generate random strings + flat_size = np.prod(dims) if dims else 1 + data = np.array([''.join(np.random.choice(list('abcdefghijklmnopqrstuvwxyz0123456789'), size=10)) + for _ in range(flat_size)]).reshape(dims) if dims else np.array(['random_str']) + else: + # Default to FP32 for unknown types + data = np.random.randn(*dims).astype(np.float32) + + dummy_data[name] = data + return dummy_data + + def _valicate_inputs(self, data): + i_names = [i['name'] for i in self._input_config] + i_shapes = {i['name']: i['dims'] for i in self._input_config} + i_types = {i['name']: i['data_type'] for i in self._input_config} + for name, tensor in data.items(): + if name not in i_names: + raise ValueError(f"Input {name} not found in the input config") + if len(tensor.shape) != len(i_shapes[name]): + raise ValueError(f"Input {name} has invalid shape: {tensor.shape}") + for i, s in enumerate(tensor.shape): + + if i_shapes[name][i] != -1 and s != i_shapes[name][i]: + raise ValueError(f"Input {name} has invalid shape: {tensor.shape}") + if isinstance(tensor, np.ndarray) and tensor.dtype != np_datatype_mapping[i_types[name]]: + raise ValueError(f"Input {name} has invalid type: {tensor.dtype}") + if isinstance(tensor, torch.Tensor) and tensor.dtype != torch_datatype_mapping[i_types[name]]: + raise ValueError(f"Input {name} has invalid type: {tensor.dtype}") diff --git a/tools/inference_builder/templates/backend/polygraphy.jinja.py b/tools/inference_builder/templates/backend/polygraphy.jinja.py new file mode 100644 index 00000000..06bac46d --- /dev/null +++ b/tools/inference_builder/templates/backend/polygraphy.jinja.py @@ -0,0 +1,50 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} +from polygraphy.backend.common import BytesFromPath +from polygraphy.backend.trt import EngineFromBytes, TrtRunner + +class PolygraphBackend(ModelBackend): + """Python TensorRT Backend from polygraph""" + def __init__(self, model_config:Dict, model_home: str, device_id: int=0): + super().__init__(model_config, model_home, device_id) + self._model_name = model_config["name"] + self._output_names = [o['name'] for o in model_config['output']] + + logger.debug(f"PolygraphBackend created for {self._model_name} to generate {self._output_names}") + if "parameters" not in model_config or "tensorrt_engine" not in model_config["parameters"]: + raise("PolygraphBackend requires a path to tensorrt_engine") + engine_file = model_config["parameters"]["tensorrt_engine"] + if not os.path.isabs(engine_file): + engine_file = os.path.join(self._model_home, engine_file) + engine = EngineFromBytes(BytesFromPath(engine_file)) + self._trt_runner = TrtRunner(engine) + self._trt_runner.activate() + logger.info(f"TensorRT runtime created from {engine_file}") + + + def __call__(self, *args, **kwargs): + in_data = stack_tensors_in_dict(args) if args else dict(kwargs) + for k, v in in_data.items(): + if isinstance(v, np.ndarray): + in_data[k] = torch.from_numpy(v).to(self._device_id) + result = self._trt_runner.infer(in_data) + if not all([key in result for key in self._output_names]): + logger.error(f"Not all the expected output in {self._output_names} are not found in the result") + return + o_data = { o: result[o] for o in self._output_names} + yield o_data + diff --git a/tools/inference_builder/templates/backend/pytorch.jinja.py b/tools/inference_builder/templates/backend/pytorch.jinja.py new file mode 100644 index 00000000..62212919 --- /dev/null +++ b/tools/inference_builder/templates/backend/pytorch.jinja.py @@ -0,0 +1,41 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +import importlib + +class PytorchBackend(ModelBackend): + """Pytorch Backend to run models from Huggingface""" + def __init__(self, model_config:Dict, model_home: str, device_id: int=0): + super().__init__(model_config, model_home, device_id) + self._model_name = model_config["name"] + self._device = f"cuda:{device_id}" + self._output_names = [o["name"] for o in model_config["output"]] + self._model_class = model_config["parameters"].get("model_class", "AutoModelForCausalLM") + self._module = importlib.import_module("transformers") + model_class = getattr(self._module, self._model_class) + logger.info(f"Loading pre-trained model {self._model_name} of type {self._model_class} from {self._model_home}") + self._model = model_class.from_pretrained(self._model_home, torch_dtype="auto", device_map="auto") + self._model.to(self._device) + logger.info(f"Model {self._model_name} loaded from {self._model_home}") + + def __call__(self, *args, **kwargs): + in_data_list = args if args else [kwargs] + for in_data in in_data_list: + result = self._model.generate(**in_data) + if len(self._output_names) != len(result): + raise ValueError(f"Number of output names ({len(self._output_names)}) does not match the number of output tensors ({len(result)})") + yield {self._output_names[i]: tensor for i, tensor in enumerate(result)} diff --git a/tools/inference_builder/templates/backend/tensorrtllm.jinja.py b/tools/inference_builder/templates/backend/tensorrtllm.jinja.py new file mode 100644 index 00000000..6cf8a661 --- /dev/null +++ b/tools/inference_builder/templates/backend/tensorrtllm.jinja.py @@ -0,0 +1,199 @@ +from typing import List, Dict +from lib.inference import ModelBackend +import tensorrt_llm +from tensorrt_llm.runtime import Session, TensorInfo +import tensorrt as trt +import numpy +import os +import json +def trt_dtype_to_torch(dtype): + ''' + Convert TRT data type to PyTorch data type + ''' + if dtype == trt.float16: + return torch.float16 + elif dtype == trt.float32: + return torch.float32 + elif dtype == trt.int32: + return torch.int32 + else: + raise TypeError("%s is not supported" % dtype) + +def get_trt_dtype(dtype): + if dtype == torch.float16: + return trt.float16 + elif dtype == torch.float32: + return trt.float32 + elif dtype == torch.int32: + return trt.int32 + else: + raise TypeError("%s is not supported" % dtype) + +class TensorRTSession: + def __init__(self, stream, device, engine_file, input_dtype): + self._stream = stream + self._device = device + self._input_dtype = input_dtype + torch.cuda.set_stream(self._stream) + logger.info(f"Loading TensorRT Engine from {engine_file}...") + with open(engine_file, 'rb') as f: + engine_buffer = f.read() + self._trt_session = Session.from_serialized_engine(engine_buffer) + logger.info("TensorRT Engine loaded") + + def infer(self, in_data: Dict): + tensor_infos = [] + for key in in_data: + tensor = in_data[key] + if isinstance(tensor, numpy.ndarray): + tensor = torch.from_numpy(tensor).to(self._device) + if not isinstance(tensor, torch.Tensor): + logger.error(f"Input tensor must be a numpy array or a torch tensor, but got {type(tensor)}") + return {} + dtype = self._input_dtype[key] + in_data[key] = tensor.to(dtype=dtype) + tensor_infos.append(TensorInfo(key, get_trt_dtype(dtype), tensor.shape)) + output_info = self._trt_session.infer_shapes(tensor_infos) + trt_out = { t.name: torch.empty(tuple(t.shape), dtype=trt_dtype_to_torch(t.dtype), device=tensor.device) for t in output_info } + ok = self._trt_session.run(in_data, trt_out, self._stream.cuda_stream) + assert ok, "Runtime execution failed for vision encoder session" + self._stream.synchronize() + # TODO associate trt output names with triton output names + return trt_out + + +class TensorRTLLMBackend(ModelBackend): + """Python TensorRT Backend""" + def __init__(self, model_config:Dict, model_home: str, device_id: int=0): + super().__init__(model_config, model_home, device_id) + self._model_name = model_config["name"] + self._output_names = [o['name'] for o in model_config['output']] + self._device = f"cuda:{device_id}" + self._stream = torch.cuda.Stream(self._device) + self._params = model_config["parameters"] if "parameters" in model_config else {} + self._inputs = model_config["input"] if "input" in model_config else [] + llm_backend = model_config["backend"].split("/")[-1] + + if not self._inputs: + raise ValueError("No input tensors found in model config") + + if llm_backend == "pytorch": + from tensorrt_llm import SamplingParams + from tensorrt_llm import LLM + from tensorrt_llm.llmapi import (DraftTargetDecodingConfig, EagleDecodingConfig, + KvCacheConfig, MTPDecodingConfig, + NGramDecodingConfig, TorchCompileConfig) + + in_names = [i['name'] for i in model_config['input']] + if "max_tokens" not in in_names or "temperature" not in in_names or "top_p" not in in_names or "top_k" not in in_names: + raise ValueError("max_tokens, temperature, top_p, and top_k must be provided for tensorrtllmpytorch backend") + self._trt_session = None + default_kv_cache_config = { + "enable_block_reuse": True + } + if "kv_cache_config" in self._params: + default_kv_cache_config.update(self._params.pop("kv_cache_config")) + kv_cache_config = KvCacheConfig(**default_kv_cache_config) + + spec_decode_algo = self._params.pop("spec_decode_algo", None) + if spec_decode_algo is not None: + spec_decode_algo = spec_decode_algo.upper() + + if spec_decode_algo == 'MTP': + spec_config = MTPDecodingConfig( + num_nextn_predict_layers=self._params.pop("spec_decode_nextn", 1), + use_relaxed_acceptance_for_thinking=self._params.pop("use_relaxed_acceptance_for_thinking", False), + relaxed_topk=self._params.pop("relaxed_topk", 1), + relaxed_delta=self._params.pop("relaxed_delta", 0.0)) + elif spec_decode_algo == "EAGLE3": + spec_config = EagleDecodingConfig( + max_draft_len=self._params.pop("spec_decode_nextn", 1), + pytorch_weights_path=self._params.pop("draft_model_dir", None), + eagle3_one_model=self._params.pop("use_one_model", None)) + elif spec_decode_algo == "DRAFT_TARGET": + spec_config = DraftTargetDecodingConfig( + max_draft_len=self._params.pop("spec_decode_nextn", 1), + pytorch_weights_path=self._params.pop("draft_model_dir", None)) + elif spec_decode_algo == "NGRAM": + spec_config = NGramDecodingConfig( + prompt_lookup_num_tokens=self._params.pop("spec_decode_nextn", 1), + max_matching_ngram_size=self._params.pop("max_matching_ngram_size", 1), + is_keep_all=True, + is_use_oldest=True, + is_public_pool=True, + ) + else: + spec_config = None + + use_torch_compile = self._params.pop("use_torch_compile", False) + torch_compile_config = TorchCompileConfig( + enable_fullgraph=True, + enable_inductor=True, + enable_piecewise_cuda_graph=self._params.pop("use_piecewise_cuda_graph", False) + ) if use_torch_compile else None + + self._llm = LLM( + model=self._model_home, + backend="pytorch", + kv_cache_config=kv_cache_config, + speculative_config=spec_config, + torch_compile_config=torch_compile_config, + **self._params + ) + self._sample_params_cls = SamplingParams + self._trtllm_input_name = next((i["name"] for i in self._inputs if i["data_type"] == "TYPE_CUSTOM_VLM_INPUT"), None) + if self._trtllm_input_name is None: + raise ValueError("TYPE_CUSTOM_VLM_INPUT must be provided for tensorrtllm/pytorch backend") + + logger.debug(f"TensorRTLLMBackend with pytorch created for {self._model_name} to generate {self._output_names}") + else: + self._llm = None + if "tensorrt_engine" not in model_config: + raise("TensorRTLLM backend requires a path to tensorrt_engine") + engine_file = model_config["parameters"]["tensorrt_engine"] + if not os.path.isabs(engine_file): + engine_file = os.path.join(self._model_home, engine_file) + input_dtype = { i['name']: torch_datatype_mapping[i['data_type']] for i in model_config['input']} + self._trt_session = TensorRTSession(self._stream, self._device, engine_file, input_dtype) + logger.debug(f"TensorRTBackend created for {self._model_name} to generate {self._output_names}") + + def __call__(self, *args, **kwargs): + if self._llm is not None: + params = args[0] if args else kwargs + sample_params = self._sample_params_cls( + max_tokens=params.get("max_tokens", 1024), + temperature=params.get("temperature", 0.7), + top_p=params.get("top_p", 0.95), + top_k=params.get("top_k", 0) + ) + inputs = [] + if args: + for i in args: + if self._trtllm_input_name in i: + input = i[self._trtllm_input_name] + inputs.extend(input) if isinstance(input, list) else inputs.append(input) + else: + logger.warning(f"TensorRTLLMBackend: Input {self._trtllm_input_name} not found in {i}") + elif kwargs: + if self._trtllm_input_name in kwargs: + inputs = kwargs[self._trtllm_input_name] + else: + logger.warning(f"TensorRTLLMBackend: Input {self._trtllm_input_name} not found in {kwargs}") + else: + logger.warning("TensorRTLLMBackend: No inputs provided") + if not inputs: + return + + results = self._llm.generate(inputs, sample_params) + yield [{"outputs": r} for r in results] + elif self._trt_session is not None: + # TensorRT LLM uses implicit batching, so we need to stack the input tensors + in_data = stack_tensors_in_dict(args) if args else dict(kwargs) + yield self._trt_session.infer(in_data) + else: + raise Exception("TensorRTLLM backend is not correctly initialized") + + + + + diff --git a/tools/inference_builder/templates/backend/triton.jinja.py b/tools/inference_builder/templates/backend/triton.jinja.py new file mode 100644 index 00000000..64c8a081 --- /dev/null +++ b/tools/inference_builder/templates/backend/triton.jinja.py @@ -0,0 +1,180 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +{% if server_type == "triton" %} + +class TritonBackend(ModelBackend): + """Triton Python Backend""" + def __init__(self, model_config: Dict, model_home: str): + logger.debug(f"model_config: {model_config}, model_home: {model_home}") + super().__init__(model_config, model_home) + self._model_name = model_config["name"] + self._input_names = [i['name'] for i in model_config['input']] + self._output_names = [o['name'] for o in model_config['output']] + logger.debug(f"TritonBackend created for {self._model_name} with inputs {self._input_names} and outputs {self._output_names}") + + def __call__(self, *args, **kwargs): + in_data_list = args if args else [kwargs] + input_config = self._model_config["input"] + # to determine if we need to stack the input, TODO: below logic needs be more generic + need_stack = False + for in_data in in_data_list: + for key, value in in_data.items(): + input_config = next((i for i in self._model_config["input"] if i['name'] == key), None) + if input_config is None: + logger.error(f"Unexpected input: {key}") + continue + expected_dims = len(input_config["dims"]) + if expected_dims == len(value.shape) + 1: + need_stack = True + break + if need_stack: + in_data_list = [stack_tensors_in_dict(in_data_list)] + for in_data in in_data_list: + tensors = [] + for k in in_data: + tensor = in_data[k] + batched = "max_batch_size" in self._model_config and self._model_config["max_batch_size"] > 0 + if isinstance(tensor, np.ndarray): + tensor = pb_utils.Tensor(k, np.expand_dims(tensor, 0)) if batched else pb_utils.Tensor(k, tensor) + elif isinstance(tensor, torch.Tensor): + if batched: + tensor = tensor.unsqueeze(0) + tensor = pb_utils.Tensor.from_dlpack(k, torch.utils.dlpack.to_dlpack(tensor)) + elif hasattr(tensor, "__dlpack__") and hasattr(tensor, "__dlpack_device__"): + tensor = pb_utils.Tensor.from_dlpack(k, tensor) + else: + yield Error(message="Unsupported input tensor format") + return + tensors.append(tensor) + + llm_request = pb_utils.InferenceRequest( + model_name = self._model_name, + requested_output_names = self._output_names, + inputs = tensors + ) + finish_reason = "done" + for idx, response in enumerate(llm_request.exec(decoupled=True)): + expected = {n: None for n in self._output_names} + if response.has_error(): + yield Error(message=f"{response.error().message()}, stream_id={idx}") + if not response.output_tensors(): + continue + for name in expected: + config = next((c for c in self._model_config['output'] if c['name'] == name), None) + dims = config['dims'] + output = pb_utils.get_output_tensor_by_name(response, name) + if not output: + continue + if pb_utils.Tensor.is_cpu(output): + tensor = output.as_numpy() + if tensor.size != 0: + expected[name] = np.squeeze(tensor, 0) if len(tensor.shape) == (len(dims)+1) else tensor + else: + tensor = torch.utils.dlpack.from_dlpack(output.to_dlpack()) + if tensor.numel() != 0: + expected[name] = torch.squeeze(tensor, 0) if len(tensor.shape) == (len(dims)+1) else tensor + logger.debug(f"TritonBackend saved inference results to: {expected}") + if all([expected[k] is not None for k in expected]): + yield expected + logger.info(f"Infernece with TritonBackend {self._model_name} accomplished") + +{% else %} + +import tritonclient.http as httpclient +from tritonclient.utils import * + +class TritonBackend(ModelBackend): + """Triton Python Backend""" + def __init__(self, model_config: Dict, model_home: str): + logger.debug(f"model_config: {model_config}") + super().__init__(model_config, model_home) + self._model_name = model_config["name"] + self._input_names = [i['name'] for i in model_config['input']] + self._output_names = [o['name'] for o in model_config['output']] + + # Wait for Triton server to be ready + max_retries = 60 + retry_interval = 1 + for attempt in range(max_retries): + try: + with httpclient.InferenceServerClient("localhost:8000") as client: + if client.is_server_ready(): + logger.info(f"Triton server is ready after {attempt + 1} attempt(s)") + break + except Exception as e: + logger.debug(f"Attempt {attempt + 1}/{max_retries}: Triton server not ready yet - {e}") + if attempt < max_retries - 1: + import time + time.sleep(retry_interval) + else: + logger.error(f"Triton server did not become ready after {max_retries} attempts") + raise RuntimeError("Triton server is not ready") + + logger.debug(f"TritonBackend created for {self._model_name} with inputs {self._input_names} and outputs {self._output_names}") + + def __call__(self, *args, **kwargs): + in_data_list = args if args else [kwargs] + input_config = self._model_config["input"] + # to determine if we need to stack the input, TODO: below logic needs be more generic + need_stack = False + for in_data in in_data_list: + for key, value in in_data.items(): + input_config = next((i for i in self._model_config["input"] if i['name'] == key), None) + if input_config is None: + logger.error(f"Unexpected input: {key}") + continue + expected_dims = len(input_config["dims"]) + if expected_dims == len(value.shape) + 1: + need_stack = True + break + if need_stack: + in_data_list = [stack_tensors_in_dict(in_data_list)] + for in_data in in_data_list: + inputs = [] + for k in in_data: + tensor = in_data[k] + batched = "max_batch_size" in self._model_config and self._model_config["max_batch_size"] > 0 + if isinstance(tensor, torch.Tensor): + tensor = tensor.cpu().numpy() + if batched: + tensor = np.expand_dims(tensor, 0) + elif not isinstance(tensor, np.ndarray): + yield Error(message="Unsupported input tensor format") + return + input = httpclient.InferInput(k, tensor.shape, np_to_triton_dtype(tensor.dtype)) + input.set_data_from_numpy(tensor) + inputs.append(input) + outputs = [httpclient.InferRequestedOutput(n) for n in self._output_names] + with httpclient.InferenceServerClient("localhost:8000") as client: + response = client.infer(self._model_name, inputs, request_id=str(1), outputs=outputs) + + result = response.get_response() + expected = {n: None for n in self._output_names} +# if response.has_error(): +# yield Error(message=f"{response.error().message()}, stream_id={idx}") + for name in expected: + config = next((c for c in self._model_config['output'] if c['name'] == name), None) + dims = config['dims'] + output = response.as_numpy(name) + expected[name] = np.squeeze(output, 0) if len(output.shape) == (len(dims)+1) else output + logger.debug(f"TritonBackend saved inference results to: {expected}") + if all([expected[k] is not None for k in expected]): + yield expected + logger.info(f"Inference with TritonBackend {self._model_name} accomplished") + +{% endif %} \ No newline at end of file diff --git a/tools/inference_builder/templates/backend/vllm.jinja.py b/tools/inference_builder/templates/backend/vllm.jinja.py new file mode 100644 index 00000000..4652e0d5 --- /dev/null +++ b/tools/inference_builder/templates/backend/vllm.jinja.py @@ -0,0 +1,202 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +import asyncio, threading, uuid, queue +from asyncio import run_coroutine_threadsafe +from typing import Callable, Any, Optional, List, Dict +from concurrent.futures import Future +from vllm import LLM, SamplingParams + +class VLLMSyncFacade: + """ + Wrapper around AsyncLLMEngine that provides a synchronous interface + for submitting inference requests that can be processed concurrently. + """ + def __init__(self, **engine_kwargs): + self.loop = asyncio.new_event_loop() + self.out_q = queue.Queue(maxsize=1000) + self._ready = threading.Event() + + def runner(): + from vllm.engine.async_llm_engine import AsyncLLMEngine + try: + from vllm.engine.async_llm_engine import AsyncEngineArgs + except ImportError: + from vllm.engine.arg_utils import AsyncEngineArgs + asyncio.set_event_loop(self.loop) + self.engine = AsyncLLMEngine.from_engine_args(AsyncEngineArgs(**engine_kwargs)) + self._ready.set() + self.loop.run_forever() + + threading.Thread(target=runner, daemon=True).start() + self._ready.wait() + logger.info("VLLMSyncFacade: AsyncLLMEngine initialized and ready") + + def submit(self, + prompts: List[Any], + sampling_params: SamplingParams, + result_filter: Callable[[Any], Dict[str, Any]], + job_id_prefix: Optional[str] = None) -> Future: + """ + Submit requests for inference. AsyncEngine processes one prompt at a time, + but can handle multiple concurrent requests with different request_ids. + + Args: + prompts: List of prompts (always a list from __call__) + sampling_params: SamplingParams object for this request + result_filter: Function that takes a result and returns a dict + job_id_prefix: Optional prefix for request IDs + Returns: + Future that resolves to list of filtered outputs (list of dicts) + """ + if not callable(result_filter): + raise ValueError("result_filter must be a callable") + + job_id_prefix = job_id_prefix or f"batch_{uuid.uuid4().hex[:8]}" + + async def _run_single(prompt, request_id): + """Process a single prompt with unique request_id""" + final_output = None + async for out in self.engine.generate(prompt, sampling_params, request_id): + final_output = out + # Apply result_filter to each output + return final_output + + async def _run_all(): + """Submit all prompts concurrently and collect results""" + # Create tasks for all prompts with unique request_ids + tasks = [] + for idx, prompt in enumerate(prompts): + request_id = f"{job_id_prefix}_req{idx}" + logger.debug(f"VLLMSyncFacade: Creating task for request {request_id}") + task = _run_single(prompt, request_id) + tasks.append(task) + + # Run all tasks concurrently and wait for all to complete + results = await asyncio.gather(*tasks, return_exceptions=True) + + # Extract outputs from RequestOutput objects and apply filter + all_outputs = [] + for idx, result in enumerate(results): + if isinstance(result, Exception): + logger.error(f"VLLMSyncFacade: Request {idx} failed: {result}") + # Add empty result for failed request + all_outputs.append({}) + elif result is not None: + all_outputs.append(result_filter(result)) + else: + logger.warning(f"VLLMSyncFacade: Request {idx} returned unexpected result: {result}") + + return all_outputs + + return run_coroutine_threadsafe(_run_all(), self.loop) + +class VLLMBackend(ModelBackend): + """VLLM Backend""" + def __init__(self, model_config:Dict, model_home: str, device_id: int=0): + super().__init__(model_config, model_home, device_id) + self._model_name = model_config["name"] + self._output_names = [o['name'] for o in model_config['output']] + self._params = model_config["parameters"] if "parameters" in model_config else {} + self._inputs = model_config["input"] if "input" in model_config else [] + self._vlm_input_name = next((i["name"] for i in self._inputs if i["data_type"] == "TYPE_CUSTOM_VLM_INPUT"), None) + self._async_mode = self._params.get("async_mode", False) + + llm_kwargs = {} + for key in [ + "tensor_parallel_size", + "gpu_memory_utilization", + "dtype", + "max_model_len", + "max_num_batched_tokens", + "max_num_seqs", + "kv_cache_dtype", + "pipeline_parallel_size", + "max_parallel_loading_workers", + "enforce_eager", + ]: + if key in self._params: + llm_kwargs[key] = self._params.pop(key) + + if self._async_mode: + self._llm = VLLMSyncFacade( + model=model_home, + **llm_kwargs + ) + else: + self._llm = LLM( + model=model_home, + **llm_kwargs + ) + logger.info(f"Model {self._model_name} loaded from {model_home}") + + def extract_outputs(self, result: Any) -> Dict[str, Any]: + """ + Extracts the outputs from the result based on the configured output names + Args: + result: The result object from vLLM generation + Returns: + Dictionary mapping output names to their values + """ + outputs = {n: None for n in self._output_names} + for name in self._output_names: + if hasattr(result, name): + outputs[name] = getattr(result, name) + else: + logger.warning(f"VLLMBackend: Output {name} not found in {result}") + return outputs + + def __call__(self, *args, **kwargs): + def assemble_input(vlm_input_name: str, vlm_input: List[Any], all_input: Dict[str, Any]) -> Any: + if vlm_input_name in all_input: + i = all_input.pop(vlm_input_name) + if isinstance(i, list): + vlm_input.extend(i) + else: + vlm_input.append(i) + else: + logger.warning(f"VLLMBackend: Input {vlm_input_name} not found in {all_input}") + + def generate_sync(inputs, sampling_params): + results = self._llm.generate(inputs, sampling_params) + for result in results: + yield self.extract_outputs(result) + + # Extract inputs and parameters + inputs = [] + params = {} + if args: + for i in args: + assemble_input(self._vlm_input_name, inputs, i) + params = args[0] + elif kwargs: + assemble_input(self._vlm_input_name, inputs, kwargs) + params = kwargs + + # Convert numpy scalars to Python scalars + for key, value in params.items(): + if isinstance(value, np.ndarray) and not value.shape: + params[key] = value.item() + + sampling_params = SamplingParams(**params) + + # Use async facade or sync LLM based on mode + if self._async_mode: + return self._llm.submit(inputs, sampling_params, self.extract_outputs) + else: + return generate_sync(inputs, sampling_params) + diff --git a/tools/inference_builder/templates/client/test_runner.jinja.py b/tools/inference_builder/templates/client/test_runner.jinja.py new file mode 100644 index 00000000..e27c74d0 --- /dev/null +++ b/tools/inference_builder/templates/client/test_runner.jinja.py @@ -0,0 +1,165 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +import unittest +import json +import yaml +import os +import sys +import logging +from pathlib import Path + +# Configure logging +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S' +) +logger = logging.getLogger(__name__) + +# # Add builder/validator.py path to Python path +# VALIDATOR_DIR = Path("{{ validator_dir }}") +# if str(VALIDATOR_DIR) not in sys.path: +# sys.path.append(str(VALIDATOR_DIR)) + +# Will load validate.py in the same directory +import validate + +# Common paths relative to test runner location +GENERATED_CLIENT_DIR = Path(__file__).parent / validate.GENERATED_CLIENT_DIR +TEST_CASES_FILE = Path(__file__).parent / validate.TEST_CASES_FILE + +# Setup environment before imports +if not validate.check_client_exists(): + if not validate.setup_environment(GENERATED_CLIENT_DIR): + logger.error("Failed to setup client environment") + sys.exit(1) + +from openapi_client.api.nvidiametropolisinferenceapi_api import NVIDIAMETROPOLISINFERENCEAPIApi +from openapi_client.api_client import ApiClient +from openapi_client.configuration import Configuration +from openapi_client.models.inference_request import InferenceRequest + +class TestInference(unittest.TestCase): + @classmethod + def setUpClass(cls): + """Set up test environment once for all test methods. + + This is a class method because it sets up shared resources (host, api client) + that will be used by all test methods. It runs once before any tests. + """ + cls.host = os.getenv("TEST_HOST", "http://127.0.0.1:8800") + cls.tolerance = float(os.getenv("TEST_TOLERANCE", "1e-5")) + + logger.info("Setting up test environment") + logger.info(f"Server host: {cls.host}") + logger.info(f"Tolerance: {cls.tolerance}") + + with open(TEST_CASES_FILE) as f: + cls.test_cases = yaml.safe_load(f) + logger.info(f"Loaded {len(cls.test_cases)} test cases from {TEST_CASES_FILE}") + + config = Configuration(host=cls.host) + api_client = ApiClient(config) + cls.api = NVIDIAMETROPOLISINFERENCEAPIApi(api_client) + + def setUp(self): + """Set up test fixtures before each test method. + + Instance method because it's specific to each test run. + Creates a logger for the specific test instance. + """ + self.logger = logging.getLogger(f"{__name__}.{self.id()}") + self.logger.info(f"Starting test: {self._testMethodName}") + + def tearDown(self): + """Clean up after each test method. + + Instance method because it's specific to each test run. + """ + self.logger.info(f"Completed test: {self._testMethodName}") + + def test_health_check(self): + """Test health check endpoint""" + # self.logger.info("Running health check...") + # response = self.api.health_ready_v1_health_ready_get_with_http_info() + # self.assertEqual(response.status_code, 200) + # self.assertEqual(response.data["status"], "ready") + # self.logger.info("Health check successful") + self.logger.info(f"Skip health check for {self.host}") + + def test_inference(self): + """Test inference with pre-built requests""" + + for test in self.test_cases: + with self.subTest(test=test["name"]): + test_logger = logging.getLogger(f"{__name__}.{self.id()}.{test['name']}") + test_logger.info(f"Starting test case: {test['name']}") + try: + # Load pre-built request + request_path = Path(test["request"]) + test_logger.debug(f"Loading request from: {request_path}") + with open(request_path) as f: + request_data = json.load(f) + request = InferenceRequest.from_dict(request_data) + + # Load expected output + expected_path = Path(test["expected"]) + test_logger.debug(f"Loading expected output from: {expected_path}") + with open(expected_path) as f: + expected = json.load(f) + + # Run inference + test_logger.info("Executing inference request...") + response = self.api.inference(request) + actual = response.to_dict() + + # Compare results + if expected: + test_logger.info("Validating response...") + self.assertTrue( + # TODO: We can template below line for different validators + # validator = {{ my_validator }} + # validator.compare_responses(actual, expected, self.tolerance) + # or make abstract validator class and ask users to implement their own validator + validate.CvValidator.compare_responses(actual, expected, self.tolerance), + f"Test {test['name']}: Response doesn't match expected output under tolerance {self.tolerance}. " + f"Actual: {actual}, Expected: {expected}" + ) + else: + test_logger.info("No expected output, skipping validation") + test_logger.info(f"Test case '{test['name']}' passed successfully") + + except Exception as e: + test_logger.error(f"Test case '{test['name']}' failed: {str(e)}") + raise + +if __name__ == '__main__': + # Create a test runner that outputs both to console and file + runner = unittest.TextTestRunner( + verbosity=2, # Increased verbosity + stream=sys.stdout, # Output to console + ) + + # Create test suite + suite = unittest.TestLoader().loadTestsFromTestCase(TestInference) + + # Run tests + result = runner.run(suite) + + # Exit with appropriate code so the test framework detects failures + sys.exit(0 if result.wasSuccessful() else 1) \ No newline at end of file diff --git a/tools/inference_builder/templates/common/config.jinja.py b/tools/inference_builder/templates/common/config.jinja.py new file mode 100644 index 00000000..317bf6ff --- /dev/null +++ b/tools/inference_builder/templates/common/config.jinja.py @@ -0,0 +1,89 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} +{{ license }} + +import os +import re +from omegaconf import OmegaConf + + +def _resolve_env_vars(config_dict): + """ + Recursively resolve environment variable references in the config. + + Supports the format: $ENV_VAR|default_value + If ENV_VAR exists, uses its value. Otherwise, uses default_value. + + Type conversion is performed based on the default value: + - "true"/"false" (case-insensitive) -> bool + - numeric strings -> int or float + - everything else -> string + """ + env_pattern = re.compile(r'^\$([A-Za-z_][A-Za-z0-9_]*)\|(.*)$') + + def convert_value(value_str): + """Convert string value to appropriate type.""" + # Handle boolean strings + if value_str.lower() in ('true', 'false'): + return value_str.lower() == 'true' + + # Try to convert to int + try: + if '.' not in value_str: + return int(value_str) + except ValueError: + pass + + # Try to convert to float + try: + return float(value_str) + except ValueError: + pass + + # Return as string + return value_str + + def process_value(value): + """Process a single value for environment variable substitution.""" + if isinstance(value, str): + match = env_pattern.match(value) + if match: + env_var = match.group(1) + default_value = match.group(2) + + # Check if environment variable exists + if env_var in os.environ: + return convert_value(os.environ[env_var]) + else: + return convert_value(default_value) + elif isinstance(value, dict): + return {k: process_value(v) for k, v in value.items()} + elif isinstance(value, list): + return [process_value(item) for item in value] + + return value + + return process_value(config_dict) + + +# Load the base configuration +_base_config = OmegaConf.create("""{{ config }}""") + +# Convert to dict, resolve environment variables, and convert back to OmegaConf +_config_dict = OmegaConf.to_container(_base_config) +_resolved_config = _resolve_env_vars(_config_dict) +global_config = OmegaConf.create(_resolved_config) \ No newline at end of file diff --git a/tools/inference_builder/templates/common/custom.__init__.jinja.py b/tools/inference_builder/templates/common/custom.__init__.jinja.py new file mode 100644 index 00000000..2ff619e8 --- /dev/null +++ b/tools/inference_builder/templates/common/custom.__init__.jinja.py @@ -0,0 +1,50 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +import importlib +from pathlib import Path +from lib.utils import get_logger + +logger = get_logger(__name__) + +custom_module_table = { + {% for item in classes %} + "{{ item.name }}" : { + "module": "{{ item.module }}", + "class": "{{ item.class_name }}" + }{% if not loop.last %},{% endif %} + {% endfor %} +} + +def create_instance(name:str, config): + if not name in custom_module_table: + logger.error(f"{name} not found") + return None + module_name = custom_module_table[name]["module"] + class_name = custom_module_table[name]["class"] + try: + # Dynamically import the module + module = importlib.import_module(f".{module_name}", __package__) + + # Get the class from the module + cls = getattr(module, class_name) + + # Instantiate and return the class object + return cls(config) + except Exception as e: + logger.error(f"Error creating class '{class_name}' from module '{module_name}': {e}") + return None \ No newline at end of file diff --git a/tools/inference_builder/templates/generic/model.jinja.py b/tools/inference_builder/templates/generic/model.jinja.py new file mode 100644 index 00000000..4098fc94 --- /dev/null +++ b/tools/inference_builder/templates/generic/model.jinja.py @@ -0,0 +1,227 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} +{{ license }} + +from config import global_config +from lib.inference import * +from lib.utils import * +from lib.errors import ErrorFactory +from omegaconf import OmegaConf +import json +import os +from typing import List, Dict +import asyncio +import numpy as np +import torch +from pathlib import Path +import dataclasses + +logger = get_logger(__name__) + +{% for backend in backends %} +{{ backend }} +{% endfor %} + +class GenericInference(InferenceBase): + """The class that drives a generic inference flow""" + + def _create_backend(self, backend_spec: List[str], model_config: Dict, model_home: str): + if backend_spec[0] == 'triton': + backend_class = TritonBackend + elif backend_spec[0] == 'deepstream': + backend_class = DeepstreamBackend + elif backend_spec[0] == 'polygraphy': + backend_class = PolygraphBackend + elif backend_spec[0] == 'tensorrtllm': + backend_class = TensorRTLLMBackend + elif backend_spec[0] == 'dummy': + backend_class = DummyBackend + elif backend_spec[0] == 'pytorch': + backend_class = PytorchBackend + elif backend_spec[0] == 'vllm': + backend_class = VLLMBackend + else: + return None + return backend_class(model_config, model_home) + + async def execute(self, request): + """ execute a list of requests""" + if self._async_dispatcher is None: + self._async_dispatcher = AsyncDispatcher(self._collector, loop=asyncio.get_running_loop()) + + logger.debug(f"Received request {request}") + if not self._inject_tensors(request): + error = ErrorFactory.create( + "ERR_DF_006", + caller=self, + input_data={"request_keys": list(request.keys())}, + tensor_names=[n for i in self._inputs for n in i.in_names] + ) + error.log(logger) + InferenceBase._export_errors() + yield error + return + + async_queue = asyncio.Queue() + self._async_dispatcher.append_async_queue(async_queue) + # Wait for all the results from one inference request + while not self._stop_event.is_set(): + try: + logger.debug("Waiting for tensors from async queue") + result = await async_queue.get() + if isinstance(result, Stop): + logger.info(f"Got Stop: {result.reason}") + return + if isinstance(result, Error): + InferenceBase._export_errors() + else: + logger.debug(f"Got result: {result}") + # post-process the data + result = self._post_process(result) + # Yield control to allow other requests to be processed + await asyncio.sleep(0) + yield result + except Exception as e: + error = ErrorFactory.from_exception(e, caller=self) + error.log(logger) + yield error + + def exec_sync(self, request): + """ execute a list of requests synchronously""" + from queue import Empty + + logger.debug(f"Received request {request}") + if not self._inject_tensors(request): + error = ErrorFactory.create( + "ERR_DF_006", + caller=self, + input_data={"request_keys": list(request.keys())}, + tensor_names=[n for i in self._inputs for n in i.in_names] + ) + error.log(logger) + yield error + return + + # Wait for all the results from one inference request + while not self._stop_event.is_set(): + try: + logger.debug("Waiting for tensors from collector") + result = self._collector.collect() + if isinstance(result, Stop): + logger.info(f"Got Stop: {result.reason}") + return + if isinstance(result, Error): + InferenceBase._export_errors() + else: + logger.debug(f"Got result: {result}") + # post-process the data + result = self._post_process(result) + yield result + except Empty: + continue + except Exception as e: + error = ErrorFactory.from_exception(e, caller=self) + error.log(logger) + yield error + + def finalize(self): + self._stop_event.set() + super().finalize() + + def _inject_tensors(self, request: Dict) -> bool: + """Inject tensors into the input flows""" + injected = False + matched = [[n for n in i.in_names if n in request and request[n]] for i in self._inputs] + reshuffled = sorted(range(len(matched)), key=lambda x: len(matched[x]), reverse=True) + for i in reshuffled: + input_flow = self._inputs[i] + tensors = {} + # select and transform the tensors for the input + for n in matched[i]: + if n in request: + tensors[n] = np.array(request.pop(n)) + if tensors: + logger.debug(f"Injecting tensors {tensors}") + input_flow.put(tensors) + input_flow.put(Stop(reason="end")) + injected = True + return injected + + def _post_process(self, data: Dict): + processed = {k: v for k, v in data.items()} + data_type_names = { i['name']: i['data_type'] for i in self._output_config} + for processor in self._processors: + if not all([i in data for i in processor.input]): + logger.warning(f"Input settings invalid for the processor: {processor.name}") + continue + input = [processed.pop(i) for i in processor.input] + logger.debug(f"Post-processor invoked with given input {input}") + output = processor(*input) + logger.debug(f"Post-processor generated output {output}") + if len(output) != len(processor.output): + logger.warning(f"Number of postprocessing output doesn't match the configuration, expecting {len(processor.output)}, while getting {len(output)}") + continue + # update as processed + for key, value in zip(processor.output, output): + processed[key] = value + # correct data type + if key not in data_type_names: + logger.warning(f"Invalid output parsed: {key}") + continue + data_type = data_type_names[key] + if isinstance(value, np.ndarray): + data_type = np_datatype_mapping[data_type] + if value.dtype != data_type: + processed[key] = value.astype(data_type) + elif isinstance(value, torch.Tensor): + data_type = torch_datatype_mapping[data_type] + if value.dtype != data_type: + processed[key] = value.to(data_type) + else: + processed[key] = value + # convert numpy and torch tensors to list for server to process + def convert_to_list(v, is_string_type): + """Convert numpy/torch tensor to list with proper string decoding""" + if isinstance(v, np.ndarray): + if is_string_type and (np.issubdtype(v.dtype, np.bytes_) or np.issubdtype(v.dtype, np.str_) or v.dtype == np.object_): + # Decode string arrays + flat_list = v.flatten().tolist() + decoded = [i.decode("utf-8", "ignore") if isinstance(i, bytes) else str(i) for i in flat_list] + return np.array(decoded).reshape(v.shape).tolist() + else: + return v.tolist() + elif isinstance(v, torch.Tensor): + if v.dtype == torch.uint8 and is_string_type: + # Decode byte tensors as strings + flat_list = v.flatten().tolist() + decoded = [bytes([i]).decode("utf-8", "ignore") if isinstance(i, int) else str(i) for i in flat_list] + return decoded if v.dim() == 1 else np.array(decoded).reshape(v.shape).tolist() + else: + return v.tolist() + elif dataclasses.is_dataclass(v): + return dataclasses.asdict(v) + else: + return v + + for key, value in processed.items(): + is_string_type = key in data_type_names and 'TYPE_STRING' in data_type_names[key] + if isinstance(value, list): + # this is a batch of data + processed[key] = [convert_to_list(v, is_string_type) for v in value] + else: + processed[key] = convert_to_list(value, is_string_type) + return processed diff --git a/tools/inference_builder/templates/responder/add_file.jinja.py b/tools/inference_builder/templates/responder/add_file.jinja.py new file mode 100644 index 00000000..282cdf2d --- /dev/null +++ b/tools/inference_builder/templates/responder/add_file.jinja.py @@ -0,0 +1,27 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + + async def {{ name }}(self, request, file): + if not file: + return 400, "No file provided" + try: + asset = self._asset_manager.save_file(file.file, file.filename, file.content_type) + except Exception as e: + return 500, str(e) + response = self.process_response("{{ name }}", request, asset.to_dict()) + return 200, response + diff --git a/tools/inference_builder/templates/responder/add_live_stream.jinja.py b/tools/inference_builder/templates/responder/add_live_stream.jinja.py new file mode 100644 index 00000000..2bfe8403 --- /dev/null +++ b/tools/inference_builder/templates/responder/add_live_stream.jinja.py @@ -0,0 +1,32 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + + async def {{ name }}(self, request, body, **kwargs): + stream_info = self.process_request("{{ name }}", body) + if "url" not in stream_info or not stream_info["url"]: + return 400, "No url provided" + try: + asset = self._asset_manager.add_live_stream( + stream_info["url"], + stream_info["description"], + stream_info["username"], + stream_info["password"]) + except Exception as e: + return 500, str(e) + response = self.process_response("{{ name }}", request, asset.to_dict()) + return 200, response + diff --git a/tools/inference_builder/templates/responder/del_file.jinja.py b/tools/inference_builder/templates/responder/del_file.jinja.py new file mode 100644 index 00000000..0ed61407 --- /dev/null +++ b/tools/inference_builder/templates/responder/del_file.jinja.py @@ -0,0 +1,25 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + + async def {{ name }}(self, request, **kwargs): + asset_id = list(kwargs.values())[0] + try: + status = self._asset_manager.delete_asset(asset_id) + except Exception as e: + return 500, str(e) + response = self.process_response("{{ name }}", request, {"status": status}) + return 200, response diff --git a/tools/inference_builder/templates/responder/del_live_stream.jinja.py b/tools/inference_builder/templates/responder/del_live_stream.jinja.py new file mode 100644 index 00000000..0ed61407 --- /dev/null +++ b/tools/inference_builder/templates/responder/del_live_stream.jinja.py @@ -0,0 +1,25 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + + async def {{ name }}(self, request, **kwargs): + asset_id = list(kwargs.values())[0] + try: + status = self._asset_manager.delete_asset(asset_id) + except Exception as e: + return 500, str(e) + response = self.process_response("{{ name }}", request, {"status": status}) + return 200, response diff --git a/tools/inference_builder/templates/responder/healthy_ready.jinja.py b/tools/inference_builder/templates/responder/healthy_ready.jinja.py new file mode 100644 index 00000000..ef32a650 --- /dev/null +++ b/tools/inference_builder/templates/responder/healthy_ready.jinja.py @@ -0,0 +1,22 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + + async def {{ name }}(self, request, **kwargs): + if super().healthy_ready(): + return 200, "Ready" + else: + return 503, "Service Unavailable" diff --git a/tools/inference_builder/templates/responder/infer.jinja.py b/tools/inference_builder/templates/responder/infer.jinja.py new file mode 100644 index 00000000..2d1b5f4b --- /dev/null +++ b/tools/inference_builder/templates/responder/infer.jinja.py @@ -0,0 +1,64 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + + async def {{ name }}(self, request, body, **kwargs): + accept = request.headers.get("accept", "") + streaming = "application/x-ndjson" in accept + try: + in_data = self.process_request("{{ name }}", body) + self.logger.debug(f"request processed as {in_data}") + except Exception as e: + self.logger.error(f"Request processing failed: {type(e).__name__}: {e}") + return 400, str(e) + + def get_error_response(err): + """Get structured error response for EnhancedError, or simple dict for Error.""" + if isinstance(err, EnhancedError): + return err.to_dict(include_stack_trace=False) + return {"error": str(err)} + + try: + if streaming: + async def generate_stream(): + async for result in self._inference.execute(in_data): + # Yield control to allow other requests to be processed + await asyncio.sleep(0) + if not result: + if isinstance(result, Stop): + return # Normal termination + self.logger.error(f"Inference error: {result}") + yield get_error_response(result) + return + yield self.process_response("infer", request, result) + + return 200, StreamingResponse(generate_stream(), media_type="application/x-ndjson") + else: + # If not streaming, process and return the last result + response = None + async for result in self._inference.execute(in_data): + # Yield control to allow other requests to be processed + await asyncio.sleep(0) + if not result: + if isinstance(result, Stop): + break # Normal termination + self.logger.error(f"Inference error: {result}") + return 500, get_error_response(result) + response = self.process_response("infer", request, result) + return (200, response) if response else (500, "No results generated from inference") + except Exception as e: + self.logger.error(f"Inference failed: {type(e).__name__}: {e}") + return 500, str(e) diff --git a/tools/inference_builder/templates/responder/list_files.jinja.py b/tools/inference_builder/templates/responder/list_files.jinja.py new file mode 100644 index 00000000..85da82ea --- /dev/null +++ b/tools/inference_builder/templates/responder/list_files.jinja.py @@ -0,0 +1,24 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + + async def {{ name }}(self, request): + try: + assets = [asset for asset in self._asset_manager.list_assets() if asset.file_name] + except Exception as e: + return 500, str(e) + response = self.process_response("{{ name }}", request, {"assets": assets}) + return 200, response diff --git a/tools/inference_builder/templates/responder/list_live_streams.jinja.py b/tools/inference_builder/templates/responder/list_live_streams.jinja.py new file mode 100644 index 00000000..d7416ddb --- /dev/null +++ b/tools/inference_builder/templates/responder/list_live_streams.jinja.py @@ -0,0 +1,24 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + + async def {{ name }}(self, request): + try: + assets = [asset for asset in self._asset_manager.list_assets() if not asset.file_name] + except Exception as e: + return 500, str(e) + response = self.process_response("{{ name }}", request, {"assets": assets}) + return 200, response diff --git a/tools/inference_builder/templates/serverless/inference.jinja.py b/tools/inference_builder/templates/serverless/inference.jinja.py new file mode 100644 index 00000000..79c8cb25 --- /dev/null +++ b/tools/inference_builder/templates/serverless/inference.jinja.py @@ -0,0 +1,137 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} +{{ license }} + +import argparse +from config import global_config +from typing import List, Optional +from lib.inference import py_datatype_mapping +from .model import GenericInference +import json +import sys +from lib.utils import NumpyFlatEncoder + + +def create_parser(inputs: List) -> argparse.ArgumentParser: + """Create and configure the argument parser for the application.""" + parser = argparse.ArgumentParser( + description='Command line interface for{{ service_name }}' + ) + for input_item in inputs: + input_name = input_item.name.replace("_", "-") + nargs = 1 + optional = input_item.optional if hasattr(input_item, "optional") else False + if len(input_item.dims) == 1: + if input_item.dims[0] == -1: + nargs = "+" + elif input_item.dims[0] == 1 and optional: + nargs = "?" + else: + nargs = input_item.dims[0] + parser.add_argument( + f'--{input_name}', + type=py_datatype_mapping[input_item.data_type], + nargs=nargs, + required=not optional + ) + parser.add_argument( + '-s', + '--save-to', + type=str, + nargs='?', + const='stdout', + help='Save results to a file, or use -s alone for stdout' + ) + return parser + + +def run_inference(args) -> Optional[int]: + """Run the inference service synchronously. + + Args: + args: Parsed command line arguments + + Returns: + Optional[int]: Exit code, 0 for success + """ + # Read and remove save_to argument before converting to dict + save_to = getattr(args, 'save_to', None) + if hasattr(args, 'save_to'): + delattr(args, 'save_to') + + # Convert remaining args to dictionary + inputs = vars(args) + + # Convert input names back to original format (replace '-' with '_') + inputs = {k.replace('-', '_'): v for k, v in inputs.items()} + + service = GenericInference() + service.initialize() + status = 0 + + # Determine output target: file, stdout, or None (no output) + output_file = None + close_file = False + if save_to: + if save_to in ('-', 'stdout'): + output_file = sys.stdout + else: + output_file = open(save_to, 'w', encoding='utf-8') + close_file = True + + try: + for result in service.exec_sync(inputs): + if not result: + status = -1 + break + # Unified logic: write JSON to output target if specified + if output_file: + json_str = json.dumps(result, indent=4, cls=NumpyFlatEncoder) + output_file.write(json_str) + output_file.write("\n") + if close_file: + output_file.flush() # Ensure data is written to disk + finally: + if close_file and output_file: + output_file.close() + + print("Inference completed.") + service.finalize() + return status + + +def main() -> int: + """Main entry point for the inference service. + + Returns: + Optional[int]: Exit code, None for success + """ + parser = create_parser(global_config.input) + args = parser.parse_args() + + try: + return run_inference(args) + except KeyboardInterrupt: + print("\nInterrupted by user") + return 130 + except Exception as e: + print(f"Error: {e}") + return 1 + + +if __name__ == "__main__": + exit(main()) diff --git a/tools/inference_builder/templates/triton/model.jinja.py b/tools/inference_builder/templates/triton/model.jinja.py new file mode 100644 index 00000000..2335740f --- /dev/null +++ b/tools/inference_builder/templates/triton/model.jinja.py @@ -0,0 +1,274 @@ +{# + SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. + SPDX-License-Identifier: Apache-2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +#} + +from config import global_config +import triton_python_backend_utils as pb_utils +from lib.inference import * +from lib.utils import * +from omegaconf import OmegaConf +import json +import os +from typing import List, Dict +import asyncio +from concurrent.futures import ThreadPoolExecutor +import numpy as np +import torch +from pathlib import Path + +logger = get_logger(__name__) + +CHECKPOINTS_DIR = os.getenv("CHECKPOINTS_DIR", Path(__file__).resolve().parent.parent.parent) + +triton_input_type_map = { + "TYPE_CUSTOM_BINARY_BASE64": "TYPE_STRING", + "TYPE_CUSTOM_IMAGE_BASE64": "TYPE_STRING" +} + +{% for backend in backends %} +{{ backend }} +{% endfor %} + +{% if top_level %} + +class TritonPythonModel(InferenceBase): + """The top level python model that drives the inference flow""" + + @staticmethod + def auto_complete_config(auto_complete_model_config): + # create a minimum config + auto_complete_model_config.set_max_batch_size(1) + auto_complete_model_config.set_dynamic_batching() + auto_complete_model_config.set_model_transaction_policy({"decoupled": True}) + for input in global_config.input: + input_config = OmegaConf.to_container(input) + data_type = input_config["data_type"] + if data_type.startswith("TYPE_CUSTOM_"): + data_type = triton_input_type_map[data_type] if data_type in triton_input_type_map else None + if data_type is None: + raise Exception(f"Unsupported input type: {data_type}") + input_config["data_type"] = data_type + auto_complete_model_config.add_input(input_config) + for output in global_config.output: + output_config = OmegaConf.to_container(output) + auto_complete_model_config.add_output(output_config) + logger.info(f"Model configuration completed as {auto_complete_model_config.as_dict()}") + return auto_complete_model_config + + def _create_backend(self, backend_spec: List[str], model_config: Dict, model_home: str): + if backend_spec[0] == 'triton': + return TritonBackend(model_config, model_home) + return None + + async def execute(self, requests): + """ execute a list of requests""" + async def async_put(queue, item): + await queue.put(item) + def thread_to_async_bridge(thread_queue, async_queue, loop): + while True: + try: + item = thread_queue.get() + asyncio.run_coroutine_threadsafe(async_put(async_queue, item), loop) + if isinstance(item, Stop) or isinstance(item, Error): + break + except Empty: + continue + + + logger.info(f"Received {len(requests)} request(s)") + for request in requests: + response_sender = request.get_response_sender() + if request.is_cancelled(): + response_sender.send(pb_utils.InferenceResponse( + error=pb_utils.TritonError("request is cancelled", pb_utils.TritonError.CANCELLED)), + flags=pb_utils.TRITONSERVER_RESPONSE_COMPLETE_FINAL) + continue + for input in self._inputs: + # select the tensors for the input + tensors = {n: pb_utils.get_input_tensor_by_name(request, n) for n in input.in_names} + # the tensors need to be transformed to generic type + for name in tensors: + tensor = tensors[name] + config = next((c for c in self._input_config if c['name'] == name), None) + if config is None: + logger.warning(f"Invalid input parsed: {name}") + continue + dims = config['dims'] + if pb_utils.Tensor.is_cpu(tensor): + tensor = tensor.as_numpy() + # auto reshape + if len(tensor.shape) == (len(dims)+1): + tensor = np.squeeze(tensor, 0) + else: + tensor = torch.utils.dlpack.from_dlpack(tensor.to_dlpack()) + # auto reshape + if len(tensor.shape) == (len(dims)+1): + tensor = torch.squeeze(tensor, 0) + tensors[name] = tensor + if tensors: + logger.debug(f"Injecting tensors {tensors}") + input.put(tensors) + input.put(Stop(reason="end")) + # fetch result + loop = asyncio.get_event_loop() + for a_output, output in zip(self._async_outputs, self._outputs): + logger.error(f"Submitting {output._timeout} to async executor") + self._async_executor.submit(thread_to_async_bridge, output, a_output, loop) + stop = False + while not stop: + try: + logger.debug("Waiting for tensors from async queue") + response_data = dict() + results = await asyncio.gather(*(ao.get() for ao in self._async_outputs)) + for data in results: + logger.debug(f"Got output data: {data}") + if isinstance(data, Error): + error = pb_utils.TritonError(f"steam llm_response, error received: {data.message}") + response_sender.send( + pb_utils.InferenceResponse(error=error), + flags=pb_utils.TRITONSERVER_RESPONSE_COMPLETE_FINAL + ) + return + elif isinstance(data, Stop): + stop = True + continue + # collect the output + for k, v in data.items(): + response_data[k] = v + response_data = self._post_process(response_data) + # response with partial data + response_sender.send(pb_utils.InferenceResponse( + output_tensors=[ + pb_utils.Tensor(name, tensor) for name, tensor in response_data.items() + ] + )) + except Exception as e: + logger.exception(e) + + response_sender.send(flags=pb_utils.TRITONSERVER_RESPONSE_COMPLETE_FINAL) + logger.debug(f"Finalizing the response for requests: {request}") + logger.debug(f"All request done") + + def finalize(self): + super().finalize() + + def _post_process(self, data: Dict): + processed = {k: v for k, v in data.items()} + for processor in self._processors: + if not all([i in data for i in processor.input]): + logger.warning(f"Input settings invalid for the processor: {processor}") + continue + input = [processed.pop(i) for i in processor.input] + logger.debug(f"Post-processor invoked with given input {input}") + output = processor(*input) + logger.debug(f"Post-processor generated output {output}") + if len(output) != len(processor.output): + logger.warning(f"Number of postprocessing output doesn't match the configuration, expecting {len(processor.output)}, while getting {len(output)}") + continue + # update as processed + for key, value in zip(processor.output, output): + processed[key] = value + return processed + +{% else %} +class TritonPythonModel: + def initialize(self, args): + """ + This function allows + the model to initialize any state associated with this model. + """ + model_name = args["model_name"] + model_home = os.path.join(global_config.model_repo, model_name, "1") + model_config = next((m for m in global_config.models if m.name == model_name), None) + if model_config is None: + raise Exception("Model config not found") + self._model_backend = None + self._model_config = OmegaConf.to_container(model_config) + self._in_config = {i["name"]: i for i in self._model_config["input"]} + self._out_config = {o["name"]: o for o in self._model_config["output"]} + self._model_repo = args["model_repository"] + self._device_id = int(json.loads(args["model_instance_device_id"])) + # default model path + engine_path = os.path.join(self._model_repo, "1", "model.plan") + if "tensorrt_engine" in self._model_config: + self._model_config["tensorrt_engine"] = os.path.join(CHECKPOINTS_DIR, self._model_config["tensorrt_engine"]) + else: + self._model_config["tensorrt_engine"] = engine_path + # create backend + BackendClass = None + backend_spec = model_config.backend.split('/') + if backend_spec[-1] == "tensorrtllm": + BackendClass = TensorRTLLMBackend + elif backend_spec[-1] == "polygraphy": + BackendClass = PolygraphBackend + elif backend_spec[-1] == "dummy": + BackendClass = DummyBackend + if BackendClass is not None: + self._model_backend = BackendClass(self._model_config, model_home,self._device_id) + else: + raise Exception(f"Backend not supported: {model_config.backend}") + + + def execute(self, requests): + """ + execute each request + """ + logger.info(f"Model {self._model_config['name']} received {len(requests)} requests") + + r_list = [] + responses = [] + for request in requests: + inputs = {k: None for k in self._in_config} + for name, config in self._in_config.items(): + dims = config['dims'] + pb_tensor = pb_utils.get_input_tensor_by_name(request, name) + if pb_utils.Tensor.is_cpu(pb_tensor): + tensor = pb_tensor.as_numpy() + # auto reshape + if len(dims) > 1 and len(tensor.shape) == (len(dims)+1): + tensor = np.squeeze(tensor, 0) + else: + tensor = torch.utils.dlpack.from_dlpack(pb_tensor.to_dlpack()) + # auto reshape + if len(dims) > 1 and len(tensor.shape) == (len(dims)+1): + tensor = torch.squeeze(tensor, 0) + inputs[name] = tensor + + for output in self._model_backend(**inputs): + r_list.append(output) + for r in r_list: + logger.info(f"Model {self._model_config['name']} generating responses {r}") + for k in r: + v = r[k] + force_cpu = True if "force_cpu" in self._out_config[k] and self._out_config[k]["force_cpu"] else False + if isinstance(v, torch.Tensor): + tensor = pb_utils.Tensor(k, v.cpu().numpy()) if force_cpu else pb_utils.Tensor.from_dlpack(k, torch.utils.dlpack.to_dlpack(v)) + elif isinstance(v, np.ndarray): + tensor = pb_utils.Tensor(k, v) + elif hasattr(v, "__dlpack__") and hasattr(v, "__dlpack_device__"): + tensor = pb_utils.Tensor(k, np.from_dlpack(v)) if force_cpu else pb_utils.Tensor.from_dlpack(k, v) + else: + responses.append( + pb_utils.InferenceResponse( + pb_utils.TritonError(f"Unsupported tensor format from the backend. {v}") + ) + ) + break + r[k] = tensor + responses.append(pb_utils.InferenceResponse(output_tensors=[r[k] for k in r])) + + return responses +{% endif %} \ No newline at end of file diff --git a/tools/inference_builder/tools/trt_build.py b/tools/inference_builder/tools/trt_build.py new file mode 100644 index 00000000..04598a1a --- /dev/null +++ b/tools/inference_builder/tools/trt_build.py @@ -0,0 +1,110 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import tensorrt as trt + +def build_engine(onnx_file_path, min_batch_size, opt_batch_size, max_batch_size, max_text_len): + # Create a TensorRT logger and builder + TRT_LOGGER = trt.Logger(trt.Logger.WARNING) + trt.init_libnvinfer_plugins(TRT_LOGGER, namespace="") + builder = trt.Builder(TRT_LOGGER) + network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)) + parser = trt.OnnxParser(network, TRT_LOGGER) + + # Read the ONNX file + with open(onnx_file_path, "rb") as model: + if not parser.parse(model.read()): + print("Failed to parse the ONNX file!") + for error in range(parser.num_errors): + print(parser.get_error(error)) + return None + + inputs = [network.get_input(i) for i in range(network.num_inputs)] + outputs = [network.get_output(i) for i in range(network.num_outputs)] + # Set builder configurations + config = builder.create_builder_config() + config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 2 << 30) # 2GB of workspace + config.set_flag(trt.BuilderFlag.FP16) +# builder.max_batch_size = max_batch_size + profile = builder.create_optimization_profile() + for model_input in inputs: + print(f"Input {model_input.name} with shape {model_input.shape} and dtype {model_input.dtype}") + input_shape = model_input.shape + input_name = model_input.name + if input_name == 'inputs': + real_shape_min = (min_batch_size, *input_shape[1:]) + real_shape_opt = (opt_batch_size, *input_shape[1:]) + real_shape_max = (max_batch_size, *input_shape[1:]) + elif input_name == 'text_token_mask': + real_shape_min = (min_batch_size, max_text_len, max_text_len) + real_shape_opt = (opt_batch_size, max_text_len, max_text_len) + real_shape_max = (max_batch_size, max_text_len, max_text_len) + else: + real_shape_min = (min_batch_size, max_text_len) + real_shape_opt = (opt_batch_size, max_text_len) + real_shape_max = (max_batch_size, max_text_len) + + profile.set_shape(input=input_name, + min=real_shape_min, + opt=real_shape_opt, + max=real_shape_max) + + config.add_optimization_profile(profile) + + for output in outputs: + print(f"Output {output.name} with shape {output.shape} and dtype {output.dtype}") + + # Build and return the engine + print("Building the engine. This might take a while...") + engine = builder.build_serialized_network(network, config) + if engine: + print("Engine built successfully!") + return engine + +def save_engine(engine, file_name): + with open(file_name, "wb") as f: + f.write(engine) + +def main(args): + onnx_file_path = args.input # Your ONNX file path + engine_file_path = args.output # Output TensorRT engine file + + engine = build_engine(onnx_file_path, args.min_batch_size, args.opt_batch_size, args.max_batch_size, args.max_text_len) + if engine: + save_engine(engine, engine_file_path) + print(f"Engine saved to {engine_file_path}") + +if __name__ == "__main__": + parser = argparse.ArgumentParser("TRT Builder") + parser.add_argument("input", type=str, help="Onnx input file") + parser.add_argument("-o", "--output", type=str, help="TensorRT engine file", default="model.plan") + parser.add_argument('--max_batch_size', + type=int, + default=1, + help="Maximum batch size for input images") + parser.add_argument('--min-batch-size', + type=int, + default=1, + help="Minimum batch size for input images") + parser.add_argument('--opt-batch-size', + type=int, + default=1, + help="Optimal batch size for input images") + parser.add_argument('--max-text-len', + type=int, + default=256, + help="Maximum text length for input prompt") + main(parser.parse_args()) From 47055cb972e37c3dbd0ff3ec672e91c6b61b140f Mon Sep 17 00:00:00 2001 From: ankitat Date: Thu, 14 May 2026 17:51:18 +0530 Subject: [PATCH 7/7] Revert "migrate: copy tools/inference_builder/ from mono-repo" This reverts commit dea1cc262f1019581011431a79c66152f7bcadab. --- tools/inference_builder/.Dockerfile.builder | 42 - tools/inference_builder/.gitattributes | 7 - tools/inference_builder/.gitignore | 12 - tools/inference_builder/.gitkeep | 0 tools/inference_builder/.gitmodules | 3 - tools/inference_builder/CONTRIBUTING.md | 44 - tools/inference_builder/LICENSE | 201 -- tools/inference_builder/README.md | 207 -- tools/inference_builder/VERSION | 1 - tools/inference_builder/builder/__init__.py | 14 - .../builder/allowed_servers.txt | 3 - .../boilerplates/fastapi/cookiecutter.json | 3 - .../{{cookiecutter.service_name}}/__main__.py | 19 - .../config/__init__.py | 14 - .../custom/__init__.py | 14 - .../lib/__init__.py | 14 - .../server/__init__.py | 14 - .../boilerplates/serverless/cookiecutter.json | 3 - .../{{cookiecutter.service_name}}/__main__.py | 19 - .../app/__init__.py | 14 - .../config/__init__.py | 14 - .../custom/__init__.py | 14 - .../lib/__init__.py | 14 - tools/inference_builder/builder/main.py | 677 ---- .../builder/openapitools.json | 8 - .../builder/samples/README.md | 49 - .../builder/samples/changenet/Dockerfile | 85 - .../builder/samples/changenet/README.md | 96 - .../builder/samples/changenet/golden_0.jpg | Bin 35195 -> 0 bytes .../builder/samples/changenet/ib_client.py | 84 - .../builder/samples/changenet/openapi.yaml | 248 -- .../samples/changenet/payloads/payloads.jsonl | 1 - .../builder/samples/changenet/processors.py | 107 - .../builder/samples/changenet/test_0.jpg | Bin 32942 -> 0 bytes .../samples/changenet/test_config.json | 58 - .../samples/changenet/trt_changenet.yaml | 109 - .../builder/samples/cradio/Dockerfile | 102 - .../builder/samples/cradio/README.md | 255 -- .../builder/samples/cradio/ds_cradio.yaml | 85 - .../builder/samples/cradio/export_onnx.py | 128 - .../builder/samples/cradio/prepare_engine.sh | 61 - .../builder/samples/cradio/processors.py | 97 - .../builder/samples/cradio/test_config.json | 47 - .../builder/samples/docker-compose.yml | 155 - .../builder/samples/ds_app/Dockerfile | 130 - .../samples/ds_app/Dockerfile.dgxspark | 149 - .../builder/samples/ds_app/Dockerfile.tegra | 147 - .../builder/samples/ds_app/README.md | 251 -- .../samples/ds_app/classification/README.md | 201 -- .../changenet-classify/labels.txt | 2 - .../changenet-classify/nvdsinfer_config.yaml | 29 - .../nvdspreprocess_config_0.yaml | 46 - .../nvdspreprocess_config_1.yaml | 46 - .../ds_app/classification/ds_changenet.yaml | 59 - .../samples/ds_app/classification/ds_pcb.yaml | 55 - .../pcbclassification/labels.txt | 1 - .../pcbclassification/nvdsinfer_config.yaml | 30 - .../sample-inputs/IMG_0002_C71.png | Bin 21907 -> 0 bytes .../sample-inputs/IMG_0002_C75.png | Bin 23923 -> 0 bytes .../samples/ds_app/detection/README.md | 206 -- .../samples/ds_app/detection/ds_detect.yaml | 95 - .../mask2former/nvdsinfer_config.yaml | 48 - .../peoplenet_transformer/labels.txt | 4 - .../nvdsinfer_config.yaml | 38 - .../ds_app/detection/resnet/labels.txt | 4 - .../detection/resnet/nvdsinfer_config.yaml | 37 - .../ds_app/detection/rtdetr/labels.txt | 5 - .../detection/rtdetr/nvdsinfer_config.yaml | 36 - .../builder/samples/ds_app/gdino/README.md | 184 - .../samples/ds_app/gdino/ds_gdino.yaml | 104 - .../ds_app/gdino/gdino/nvdsinfer_config.yaml | 32 - .../gdino/gdino/nvdspreprocess_config.yaml | 44 - .../gdino/mask_gdino/nvdsinfer_config.yaml | 32 - .../mask_gdino/nvdspreprocess_config.yaml | 45 - .../samples/ds_app/segmentation/README.md | 154 - .../segmentation/citysemsegformer/labels.txt | 20 - .../citysemsegformer/nvdsinfer_config.yaml | 35 - .../ds_app/segmentation/ds_segformer.yaml | 66 - .../builder/samples/ds_app/test_config.json | 241 -- .../samples/ds_app/test_data/pass_0.png | Bin 93529 -> 0 bytes .../samples/ds_app/test_data/pass_1.png | Bin 88879 -> 0 bytes .../ds_app/test_data/source_config.yaml | 23 - .../builder/samples/dummy/Dockerfile | 75 - .../builder/samples/dummy/README.md | 25 - .../builder/samples/dummy/dummy.yaml | 233 -- .../builder/samples/dummy/openapi.yaml | 499 --- .../builder/samples/dummy/processors.py | 44 - .../builder/samples/dummy/test_client.py | 86 - .../builder/samples/nvclip/Dockerfile | 75 - .../builder/samples/nvclip/README.md | 88 - .../builder/samples/nvclip/openapi.yaml | 487 --- .../builder/samples/nvclip/optimizer/CLIP.png | Bin 252444 -> 0 bytes .../samples/nvclip/optimizer/Dockerfile | 47 - .../configs/NVCLIP_224_700M_ViTH14.json | 29 - .../nvclip/optimizer/export_to_onnx.py | 81 - .../samples/nvclip/optimizer/optimize.sh | 31 - .../builder/samples/nvclip/processors.py | 69 - .../samples/nvclip/tensorrt_nvclip.yaml | 135 - .../builder/samples/nvclip/test_client.sh | 32 - .../builder/samples/qwen/Dockerfile | 83 - .../builder/samples/qwen/README.md | 129 - .../builder/samples/qwen/client.py | 137 - .../builder/samples/qwen/openapi.yaml | 1367 -------- .../samples/qwen/payloads/images.jsonl | 2 - .../samples/qwen/payloads/videos.jsonl | 3 - .../builder/samples/qwen/processors.py | 341 -- .../builder/samples/qwen/pytorch_qwen.yaml | 144 - .../builder/samples/qwen/test_config.json | 142 - .../samples/qwen/trtllm_nvdec_qwen.yaml | 189 -- .../builder/samples/qwen/trtllm_qwen.yaml | 182 - .../builder/samples/tao/Dockerfile | 174 - .../builder/samples/tao/HOWTO.md | 471 --- .../samples/tao/config/live_source.yaml | 9 - .../builder/samples/tao/ds_changenet.yaml | 150 - .../builder/samples/tao/ds_gdino.yaml | 193 -- .../builder/samples/tao/ds_tao.yaml | 146 - .../builder/samples/tao/ds_tao_live.yaml | 72 - .../builder/samples/tao/evaluation/README.md | 126 - .../tao/evaluation/classification_eval.py | 632 ---- .../tao/evaluation/create_coco_subset.py | 230 -- .../samples/tao/evaluation/detection_eval.py | 209 -- .../tao/evaluation/eg.experiment.cls.yaml | 218 -- .../tao/evaluation/eg.experiment.seg.yaml | 204 -- .../evaluation/semantic_segmentation_eval.py | 518 --- .../tao/evaluation/validation_utils.py | 231 -- .../builder/samples/tao/openapi.yaml | 446 --- .../builder/samples/tao/pass_0.png | Bin 93529 -> 0 bytes .../builder/samples/tao/pass_1.png | Bin 88879 -> 0 bytes .../builder/samples/tao/processors.py | 558 ---- .../builder/samples/tao/test_config.json | 153 - .../samples/tao/validation/.dockerignore | 13 - .../tao/validation/Dockerfile.validation | 35 - .../builder/samples/tao/validation/build.py | 144 - .../citysemsegformer/sample_720p.jpg | Bin 59724 -> 0 bytes .../cls/ILSVRC2012_val_00001362.JPEG | Bin 240232 -> 0 bytes .../cls/ILSVRC2012_val_00002167.JPEG | Bin 178312 -> 0 bytes .../cls/expected.ILSVRC2012_val_00001362.json | 1 - .../cls/expected.ILSVRC2012_val_00002167.json | 1 - .../samples/tao/validation/cls/labels.txt | 1 - .../validation/cls/model_manifest.generate.sh | 17 - .../cls/model_manifest.profile.yaml | 24 - .../tao/validation/cls/model_manifest.yaml | 34 - .../tao/validation/cls/nvdsinfer_config.yaml | 33 - .../tao/validation/docker-compose.yaml | 28 - ...cted.iva_0010_02_1280_0_181016_007207.json | 1 - .../iva_0010_02_1280_0_181016_007207.jpg | Bin 114044 -> 0 bytes .../iva_0010_02_1280_0_181016_007207.txt | 1 - .../gdino/model_manifest.generate.sh | 17 - .../gdino/model_manifest.profile.yaml | 24 - .../tao/validation/gdino/model_manifest.yaml | 35 - .../validation/gdino/nvdsinfer_config.yaml | 36 - .../gdino/nvdspreprocess_config.yaml | 64 - ...cted.iva_0010_02_1280_0_181016_007207.json | 1 - .../iva_0010_02_1280_0_181016_007207.jpg | Bin 114044 -> 0 bytes .../iva_0010_02_1280_0_181016_007207.txt | 1 - .../mgdino/model_manifest.generate.sh | 2 - .../mgdino/model_manifest.profile.yaml | 24 - .../tao/validation/mgdino/model_manifest.yaml | 35 - .../validation/mgdino/nvdsinfer_config.yaml | 37 - .../mgdino/nvdspreprocess_config.yaml | 63 - .../pcbclassification/IMG_0002_C75.png | Bin 23923 -> 0 bytes .../expected.IMG_0002_C75.json | 1 - .../samples/tao/validation/requirements.txt | 7 - ...cted.iva_0010_02_1280_0_181016_007207.json | 1 - .../iva_0010_02_1280_0_181016_007207.jpg | Bin 114044 -> 0 bytes .../samples/tao/validation/rtdetr/labels.txt | 81 - .../rtdetr/model_manifest.generate.sh | 17 - .../rtdetr/model_manifest.profile.yaml | 24 - .../tao/validation/rtdetr/model_manifest.yaml | 34 - .../validation/rtdetr/nvdsinfer_config.yaml | 35 - .../samples/tao/validation/run_validation.sh | 30 - .../tao/validation/seg/expected.image_0.json | 1 - .../samples/tao/validation/seg/image_0.png | Bin 224897 -> 0 bytes .../validation/seg/model_manifest.generate.sh | 17 - .../seg/model_manifest.profile.yaml | 24 - .../tao/validation/seg/model_manifest.yaml | 31 - .../tao/validation/seg/nvdsinfer_config.yaml | 33 - .../builder/samples/vllm/Dockerfile | 88 - .../builder/samples/vllm/README.md | 131 - .../builder/samples/vllm/openapi.yaml | 1367 -------- .../samples/vllm/payloads/images.jsonl | 2 - .../samples/vllm/payloads/videos.jsonl | 3 - .../builder/samples/vllm/test_config.json | 233 -- .../builder/samples/vllm/vllm_cosmos.yaml | 106 - .../samples/vllm/vllm_nvdec_cosmos.yaml | 209 -- .../samples/vllm/vllm_nvdec_qwen3_vl.yaml | 209 -- .../builder/samples/vllm/vllm_qwen3_vl.yaml | 106 - .../builder/tests/Dockerfile | 53 - .../inference_builder/builder/tests/README.md | 708 ---- .../builder/tests/asset_management/app.yaml | 88 - .../asset_management/payloads/assets.jsonl | 2 - .../payloads/start_stream.jsonl | 2 - .../tests/asset_management/processors.py | 25 - .../builder/tests/concurrency/app.yaml | 63 - .../tests/concurrency/payloads/payloads.jsonl | 4 - .../builder/tests/concurrency/processors.py | 32 - .../inference_builder/builder/tests/frame.jpg | Bin 378609 -> 0 bytes .../builder/tests/frame_sampling/app.yaml | 42 - .../tests/frame_sampling/processors.py | 36 - .../builder/tests/negative/df_1.yaml | 50 - .../builder/tests/negative/df_2.yaml | 50 - .../builder/tests/negative/df_3 copy.yaml | 33 - .../builder/tests/negative/df_3.yaml | 44 - .../builder/tests/negative/image.yaml | 29 - .../builder/tests/negative/mo_1.yaml | 33 - .../builder/tests/negative/mo_2.yaml | 34 - .../builder/tests/negative/model.yaml | 28 - .../tests/negative/payloads/payloads.jsonl | 1 - .../builder/tests/negative/pp_1.yaml | 33 - .../builder/tests/negative/pp_2.yaml | 33 - .../builder/tests/negative/pp_3.yaml | 33 - .../builder/tests/negative/processors.py | 32 - .../builder/tests/negative/route_1.yaml | 33 - .../builder/tests/negative/route_2.yaml | 33 - .../builder/tests/negative/route_3.yaml | 33 - .../builder/tests/negative/route_4.yaml | 33 - .../builder/tests/negative/route_5.yaml | 33 - .../builder/tests/negative/video.yaml | 29 - .../builder/tests/output_types/app.yaml | 110 - .../output_types/payloads/payloads.jsonl | 4 - .../builder/tests/output_types/processors.py | 68 - .../builder/tests/run_tests.sh | 194 -- .../builder/tests/setup_rtsp_server.sh | 376 --- .../builder/tests/test_configs.json | 504 --- .../builder/tests/test_docker_builds.py | 2971 ----------------- .../builder/triton/__init__.py | 14 - .../builder/triton/model_config_pb2.py | 195 -- .../inference_builder/builder/triton/utils.py | 80 - tools/inference_builder/builder/utils.py | 172 - tools/inference_builder/builder/validate.py | 1012 ------ .../inference_builder/cursor-mcp-config.json | 13 - tools/inference_builder/doc/architecture.md | 38 - .../doc/assets/architecture.png | Bin 45036 -> 0 bytes .../doc/assets/block_digram.png | Bin 34289 -> 0 bytes .../doc/assets/inference_flow.png | Bin 500165 -> 0 bytes tools/inference_builder/doc/platform-guide.md | 99 - tools/inference_builder/doc/usage.md | 204 -- tools/inference_builder/lib/__init__.py | 14 - tools/inference_builder/lib/asset_manager.py | 363 -- tools/inference_builder/lib/codec.py | 100 - tools/inference_builder/lib/errors.py | 1163 ------- tools/inference_builder/lib/inference.py | 2051 ------------ tools/inference_builder/lib/responder.py | 137 - tools/inference_builder/lib/utils.py | 387 --- tools/inference_builder/mcp.png | Bin 150765 -> 0 bytes .../mcp/QUICK_NORMALIZATION_REFERENCE.md | 211 -- tools/inference_builder/mcp/README-MCP.md | 217 -- .../mcp/STD_NORMALIZATION_CALCULATOR.md | 395 --- tools/inference_builder/mcp/examples.md | 113 - tools/inference_builder/mcp/mcp_server.py | 1994 ----------- tools/inference_builder/mcp/setup_mcp.py | 207 -- .../inference_builder/mcp/test_mcp_client.py | 171 - .../inference_builder/mcp/test_mcp_server.py | 144 - tools/inference_builder/overview.png | Bin 81445 -> 0 bytes tools/inference_builder/requirements.txt | 16 - .../inference_builder/schemas/ARCHITECTURE.md | 244 -- tools/inference_builder/schemas/README.md | 686 ---- tools/inference_builder/schemas/RESPONDERS.md | 230 -- .../schemas/backends/deepstream.schema.json | 47 - .../schemas/backends/dummy.schema.json | 45 - .../deepstream-parameters.schema.json | 207 -- .../parameters/dummy-parameters.schema.json | 10 - .../polygraphy-parameters.schema.json | 16 - .../parameters/pytorch-parameters.schema.json | 10 - .../tensorrtllm-parameters.schema.json | 10 - .../parameters/triton-parameters.schema.json | 10 - .../parameters/vllm-parameters.schema.json | 55 - .../schemas/backends/polygraphy.schema.json | 47 - .../schemas/backends/pytorch.schema.json | 50 - .../schemas/backends/tensorrtllm.schema.json | 49 - .../schemas/backends/triton.schema.json | 54 - .../schemas/backends/vllm.schema.json | 47 - .../schemas/common/base-model.schema.json | 96 - .../schemas/common/base-processor.schema.json | 36 - .../schemas/common/definitions.schema.json | 111 - .../schemas/common/postprocessors.schema.json | 27 - .../schemas/common/preprocessors.schema.json | 27 - .../schemas/config.schema.json | 371 -- tools/inference_builder/schemas/index.json | 105 - .../schemas/validate_config.py | 220 -- .../api_server/fastapi/responder.jinja.py | 88 - .../api_server/fastapi/route/inference.jinja2 | 76 - .../templates/backend/deepstream.jinja.py | 1178 ------- .../templates/backend/dummy.jinja.py | 107 - .../templates/backend/polygraphy.jinja.py | 50 - .../templates/backend/pytorch.jinja.py | 41 - .../templates/backend/tensorrtllm.jinja.py | 199 -- .../templates/backend/triton.jinja.py | 180 - .../templates/backend/vllm.jinja.py | 202 -- .../templates/client/test_runner.jinja.py | 165 - .../templates/common/config.jinja.py | 89 - .../templates/common/custom.__init__.jinja.py | 50 - .../templates/generic/model.jinja.py | 227 -- .../templates/responder/add_file.jinja.py | 27 - .../responder/add_live_stream.jinja.py | 32 - .../templates/responder/del_file.jinja.py | 25 - .../responder/del_live_stream.jinja.py | 25 - .../responder/healthy_ready.jinja.py | 22 - .../templates/responder/infer.jinja.py | 64 - .../templates/responder/list_files.jinja.py | 24 - .../responder/list_live_streams.jinja.py | 24 - .../templates/serverless/inference.jinja.py | 137 - .../templates/triton/model.jinja.py | 274 -- tools/inference_builder/tools/trt_build.py | 110 - 304 files changed, 40343 deletions(-) delete mode 100644 tools/inference_builder/.Dockerfile.builder delete mode 100644 tools/inference_builder/.gitattributes delete mode 100644 tools/inference_builder/.gitignore delete mode 100644 tools/inference_builder/.gitkeep delete mode 100644 tools/inference_builder/.gitmodules delete mode 100644 tools/inference_builder/CONTRIBUTING.md delete mode 100644 tools/inference_builder/LICENSE delete mode 100644 tools/inference_builder/README.md delete mode 100644 tools/inference_builder/VERSION delete mode 100644 tools/inference_builder/builder/__init__.py delete mode 100644 tools/inference_builder/builder/allowed_servers.txt delete mode 100644 tools/inference_builder/builder/boilerplates/fastapi/cookiecutter.json delete mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/__main__.py delete mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/config/__init__.py delete mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/custom/__init__.py delete mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/lib/__init__.py delete mode 100644 tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/server/__init__.py delete mode 100644 tools/inference_builder/builder/boilerplates/serverless/cookiecutter.json delete mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/__main__.py delete mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/app/__init__.py delete mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/config/__init__.py delete mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/custom/__init__.py delete mode 100644 tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/lib/__init__.py delete mode 100644 tools/inference_builder/builder/main.py delete mode 100644 tools/inference_builder/builder/openapitools.json delete mode 100644 tools/inference_builder/builder/samples/README.md delete mode 100644 tools/inference_builder/builder/samples/changenet/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/changenet/README.md delete mode 100644 tools/inference_builder/builder/samples/changenet/golden_0.jpg delete mode 100644 tools/inference_builder/builder/samples/changenet/ib_client.py delete mode 100644 tools/inference_builder/builder/samples/changenet/openapi.yaml delete mode 100644 tools/inference_builder/builder/samples/changenet/payloads/payloads.jsonl delete mode 100644 tools/inference_builder/builder/samples/changenet/processors.py delete mode 100644 tools/inference_builder/builder/samples/changenet/test_0.jpg delete mode 100644 tools/inference_builder/builder/samples/changenet/test_config.json delete mode 100644 tools/inference_builder/builder/samples/changenet/trt_changenet.yaml delete mode 100644 tools/inference_builder/builder/samples/cradio/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/cradio/README.md delete mode 100644 tools/inference_builder/builder/samples/cradio/ds_cradio.yaml delete mode 100644 tools/inference_builder/builder/samples/cradio/export_onnx.py delete mode 100644 tools/inference_builder/builder/samples/cradio/prepare_engine.sh delete mode 100644 tools/inference_builder/builder/samples/cradio/processors.py delete mode 100644 tools/inference_builder/builder/samples/cradio/test_config.json delete mode 100644 tools/inference_builder/builder/samples/docker-compose.yml delete mode 100644 tools/inference_builder/builder/samples/ds_app/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/ds_app/Dockerfile.dgxspark delete mode 100644 tools/inference_builder/builder/samples/ds_app/Dockerfile.tegra delete mode 100644 tools/inference_builder/builder/samples/ds_app/README.md delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/README.md delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/labels.txt delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_0.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_1.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/ds_changenet.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/ds_pcb.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/labels.txt delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C71.png delete mode 100644 tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C75.png delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/README.md delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/ds_detect.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/mask2former/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/labels.txt delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/resnet/labels.txt delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/resnet/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/rtdetr/labels.txt delete mode 100644 tools/inference_builder/builder/samples/ds_app/detection/rtdetr/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/README.md delete mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/ds_gdino.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdspreprocess_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdspreprocess_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/segmentation/README.md delete mode 100644 tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/labels.txt delete mode 100644 tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/segmentation/ds_segformer.yaml delete mode 100644 tools/inference_builder/builder/samples/ds_app/test_config.json delete mode 100644 tools/inference_builder/builder/samples/ds_app/test_data/pass_0.png delete mode 100644 tools/inference_builder/builder/samples/ds_app/test_data/pass_1.png delete mode 100644 tools/inference_builder/builder/samples/ds_app/test_data/source_config.yaml delete mode 100644 tools/inference_builder/builder/samples/dummy/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/dummy/README.md delete mode 100644 tools/inference_builder/builder/samples/dummy/dummy.yaml delete mode 100644 tools/inference_builder/builder/samples/dummy/openapi.yaml delete mode 100644 tools/inference_builder/builder/samples/dummy/processors.py delete mode 100644 tools/inference_builder/builder/samples/dummy/test_client.py delete mode 100644 tools/inference_builder/builder/samples/nvclip/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/nvclip/README.md delete mode 100644 tools/inference_builder/builder/samples/nvclip/openapi.yaml delete mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/CLIP.png delete mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/configs/NVCLIP_224_700M_ViTH14.json delete mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/export_to_onnx.py delete mode 100644 tools/inference_builder/builder/samples/nvclip/optimizer/optimize.sh delete mode 100644 tools/inference_builder/builder/samples/nvclip/processors.py delete mode 100644 tools/inference_builder/builder/samples/nvclip/tensorrt_nvclip.yaml delete mode 100644 tools/inference_builder/builder/samples/nvclip/test_client.sh delete mode 100644 tools/inference_builder/builder/samples/qwen/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/qwen/README.md delete mode 100644 tools/inference_builder/builder/samples/qwen/client.py delete mode 100644 tools/inference_builder/builder/samples/qwen/openapi.yaml delete mode 100644 tools/inference_builder/builder/samples/qwen/payloads/images.jsonl delete mode 100644 tools/inference_builder/builder/samples/qwen/payloads/videos.jsonl delete mode 100644 tools/inference_builder/builder/samples/qwen/processors.py delete mode 100644 tools/inference_builder/builder/samples/qwen/pytorch_qwen.yaml delete mode 100644 tools/inference_builder/builder/samples/qwen/test_config.json delete mode 100644 tools/inference_builder/builder/samples/qwen/trtllm_nvdec_qwen.yaml delete mode 100644 tools/inference_builder/builder/samples/qwen/trtllm_qwen.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/tao/HOWTO.md delete mode 100644 tools/inference_builder/builder/samples/tao/config/live_source.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/ds_changenet.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/ds_gdino.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/ds_tao.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/ds_tao_live.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/evaluation/README.md delete mode 100644 tools/inference_builder/builder/samples/tao/evaluation/classification_eval.py delete mode 100644 tools/inference_builder/builder/samples/tao/evaluation/create_coco_subset.py delete mode 100644 tools/inference_builder/builder/samples/tao/evaluation/detection_eval.py delete mode 100644 tools/inference_builder/builder/samples/tao/evaluation/eg.experiment.cls.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/evaluation/eg.experiment.seg.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/evaluation/semantic_segmentation_eval.py delete mode 100644 tools/inference_builder/builder/samples/tao/evaluation/validation_utils.py delete mode 100644 tools/inference_builder/builder/samples/tao/openapi.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/pass_0.png delete mode 100644 tools/inference_builder/builder/samples/tao/pass_1.png delete mode 100644 tools/inference_builder/builder/samples/tao/processors.py delete mode 100644 tools/inference_builder/builder/samples/tao/test_config.json delete mode 100644 tools/inference_builder/builder/samples/tao/validation/.dockerignore delete mode 100644 tools/inference_builder/builder/samples/tao/validation/Dockerfile.validation delete mode 100644 tools/inference_builder/builder/samples/tao/validation/build.py delete mode 100644 tools/inference_builder/builder/samples/tao/validation/citysemsegformer/sample_720p.jpg delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/ILSVRC2012_val_00001362.JPEG delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/ILSVRC2012_val_00002167.JPEG delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00001362.json delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00002167.json delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/labels.txt delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.generate.sh delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.profile.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/cls/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/docker-compose.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/expected.iva_0010_02_1280_0_181016_007207.json delete mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.jpg delete mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.txt delete mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.generate.sh delete mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.profile.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/gdino/nvdspreprocess_config.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/expected.iva_0010_02_1280_0_181016_007207.json delete mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.jpg delete mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.txt delete mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.generate.sh delete mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.profile.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/mgdino/nvdspreprocess_config.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/pcbclassification/IMG_0002_C75.png delete mode 100644 tools/inference_builder/builder/samples/tao/validation/pcbclassification/expected.IMG_0002_C75.json delete mode 100644 tools/inference_builder/builder/samples/tao/validation/requirements.txt delete mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/expected.iva_0010_02_1280_0_181016_007207.json delete mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/iva_0010_02_1280_0_181016_007207.jpg delete mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/labels.txt delete mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.generate.sh delete mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.profile.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/rtdetr/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/run_validation.sh delete mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/expected.image_0.json delete mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/image_0.png delete mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.generate.sh delete mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.profile.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.yaml delete mode 100644 tools/inference_builder/builder/samples/tao/validation/seg/nvdsinfer_config.yaml delete mode 100644 tools/inference_builder/builder/samples/vllm/Dockerfile delete mode 100644 tools/inference_builder/builder/samples/vllm/README.md delete mode 100644 tools/inference_builder/builder/samples/vllm/openapi.yaml delete mode 100644 tools/inference_builder/builder/samples/vllm/payloads/images.jsonl delete mode 100644 tools/inference_builder/builder/samples/vllm/payloads/videos.jsonl delete mode 100644 tools/inference_builder/builder/samples/vllm/test_config.json delete mode 100644 tools/inference_builder/builder/samples/vllm/vllm_cosmos.yaml delete mode 100644 tools/inference_builder/builder/samples/vllm/vllm_nvdec_cosmos.yaml delete mode 100644 tools/inference_builder/builder/samples/vllm/vllm_nvdec_qwen3_vl.yaml delete mode 100644 tools/inference_builder/builder/samples/vllm/vllm_qwen3_vl.yaml delete mode 100644 tools/inference_builder/builder/tests/Dockerfile delete mode 100644 tools/inference_builder/builder/tests/README.md delete mode 100644 tools/inference_builder/builder/tests/asset_management/app.yaml delete mode 100644 tools/inference_builder/builder/tests/asset_management/payloads/assets.jsonl delete mode 100644 tools/inference_builder/builder/tests/asset_management/payloads/start_stream.jsonl delete mode 100644 tools/inference_builder/builder/tests/asset_management/processors.py delete mode 100644 tools/inference_builder/builder/tests/concurrency/app.yaml delete mode 100644 tools/inference_builder/builder/tests/concurrency/payloads/payloads.jsonl delete mode 100644 tools/inference_builder/builder/tests/concurrency/processors.py delete mode 100644 tools/inference_builder/builder/tests/frame.jpg delete mode 100644 tools/inference_builder/builder/tests/frame_sampling/app.yaml delete mode 100644 tools/inference_builder/builder/tests/frame_sampling/processors.py delete mode 100644 tools/inference_builder/builder/tests/negative/df_1.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/df_2.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/df_3 copy.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/df_3.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/image.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/mo_1.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/mo_2.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/model.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/payloads/payloads.jsonl delete mode 100644 tools/inference_builder/builder/tests/negative/pp_1.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/pp_2.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/pp_3.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/processors.py delete mode 100644 tools/inference_builder/builder/tests/negative/route_1.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/route_2.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/route_3.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/route_4.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/route_5.yaml delete mode 100644 tools/inference_builder/builder/tests/negative/video.yaml delete mode 100644 tools/inference_builder/builder/tests/output_types/app.yaml delete mode 100644 tools/inference_builder/builder/tests/output_types/payloads/payloads.jsonl delete mode 100644 tools/inference_builder/builder/tests/output_types/processors.py delete mode 100644 tools/inference_builder/builder/tests/run_tests.sh delete mode 100644 tools/inference_builder/builder/tests/setup_rtsp_server.sh delete mode 100644 tools/inference_builder/builder/tests/test_configs.json delete mode 100644 tools/inference_builder/builder/tests/test_docker_builds.py delete mode 100644 tools/inference_builder/builder/triton/__init__.py delete mode 100644 tools/inference_builder/builder/triton/model_config_pb2.py delete mode 100644 tools/inference_builder/builder/triton/utils.py delete mode 100644 tools/inference_builder/builder/utils.py delete mode 100644 tools/inference_builder/builder/validate.py delete mode 100644 tools/inference_builder/cursor-mcp-config.json delete mode 100644 tools/inference_builder/doc/architecture.md delete mode 100644 tools/inference_builder/doc/assets/architecture.png delete mode 100644 tools/inference_builder/doc/assets/block_digram.png delete mode 100644 tools/inference_builder/doc/assets/inference_flow.png delete mode 100644 tools/inference_builder/doc/platform-guide.md delete mode 100644 tools/inference_builder/doc/usage.md delete mode 100644 tools/inference_builder/lib/__init__.py delete mode 100644 tools/inference_builder/lib/asset_manager.py delete mode 100644 tools/inference_builder/lib/codec.py delete mode 100644 tools/inference_builder/lib/errors.py delete mode 100644 tools/inference_builder/lib/inference.py delete mode 100644 tools/inference_builder/lib/responder.py delete mode 100644 tools/inference_builder/lib/utils.py delete mode 100644 tools/inference_builder/mcp.png delete mode 100644 tools/inference_builder/mcp/QUICK_NORMALIZATION_REFERENCE.md delete mode 100644 tools/inference_builder/mcp/README-MCP.md delete mode 100644 tools/inference_builder/mcp/STD_NORMALIZATION_CALCULATOR.md delete mode 100644 tools/inference_builder/mcp/examples.md delete mode 100644 tools/inference_builder/mcp/mcp_server.py delete mode 100644 tools/inference_builder/mcp/setup_mcp.py delete mode 100644 tools/inference_builder/mcp/test_mcp_client.py delete mode 100644 tools/inference_builder/mcp/test_mcp_server.py delete mode 100644 tools/inference_builder/overview.png delete mode 100644 tools/inference_builder/requirements.txt delete mode 100644 tools/inference_builder/schemas/ARCHITECTURE.md delete mode 100644 tools/inference_builder/schemas/README.md delete mode 100644 tools/inference_builder/schemas/RESPONDERS.md delete mode 100644 tools/inference_builder/schemas/backends/deepstream.schema.json delete mode 100644 tools/inference_builder/schemas/backends/dummy.schema.json delete mode 100644 tools/inference_builder/schemas/backends/parameters/deepstream-parameters.schema.json delete mode 100644 tools/inference_builder/schemas/backends/parameters/dummy-parameters.schema.json delete mode 100644 tools/inference_builder/schemas/backends/parameters/polygraphy-parameters.schema.json delete mode 100644 tools/inference_builder/schemas/backends/parameters/pytorch-parameters.schema.json delete mode 100644 tools/inference_builder/schemas/backends/parameters/tensorrtllm-parameters.schema.json delete mode 100644 tools/inference_builder/schemas/backends/parameters/triton-parameters.schema.json delete mode 100644 tools/inference_builder/schemas/backends/parameters/vllm-parameters.schema.json delete mode 100644 tools/inference_builder/schemas/backends/polygraphy.schema.json delete mode 100644 tools/inference_builder/schemas/backends/pytorch.schema.json delete mode 100644 tools/inference_builder/schemas/backends/tensorrtllm.schema.json delete mode 100644 tools/inference_builder/schemas/backends/triton.schema.json delete mode 100644 tools/inference_builder/schemas/backends/vllm.schema.json delete mode 100644 tools/inference_builder/schemas/common/base-model.schema.json delete mode 100644 tools/inference_builder/schemas/common/base-processor.schema.json delete mode 100644 tools/inference_builder/schemas/common/definitions.schema.json delete mode 100644 tools/inference_builder/schemas/common/postprocessors.schema.json delete mode 100644 tools/inference_builder/schemas/common/preprocessors.schema.json delete mode 100644 tools/inference_builder/schemas/config.schema.json delete mode 100644 tools/inference_builder/schemas/index.json delete mode 100644 tools/inference_builder/schemas/validate_config.py delete mode 100644 tools/inference_builder/templates/api_server/fastapi/responder.jinja.py delete mode 100644 tools/inference_builder/templates/api_server/fastapi/route/inference.jinja2 delete mode 100644 tools/inference_builder/templates/backend/deepstream.jinja.py delete mode 100644 tools/inference_builder/templates/backend/dummy.jinja.py delete mode 100644 tools/inference_builder/templates/backend/polygraphy.jinja.py delete mode 100644 tools/inference_builder/templates/backend/pytorch.jinja.py delete mode 100644 tools/inference_builder/templates/backend/tensorrtllm.jinja.py delete mode 100644 tools/inference_builder/templates/backend/triton.jinja.py delete mode 100644 tools/inference_builder/templates/backend/vllm.jinja.py delete mode 100644 tools/inference_builder/templates/client/test_runner.jinja.py delete mode 100644 tools/inference_builder/templates/common/config.jinja.py delete mode 100644 tools/inference_builder/templates/common/custom.__init__.jinja.py delete mode 100644 tools/inference_builder/templates/generic/model.jinja.py delete mode 100644 tools/inference_builder/templates/responder/add_file.jinja.py delete mode 100644 tools/inference_builder/templates/responder/add_live_stream.jinja.py delete mode 100644 tools/inference_builder/templates/responder/del_file.jinja.py delete mode 100644 tools/inference_builder/templates/responder/del_live_stream.jinja.py delete mode 100644 tools/inference_builder/templates/responder/healthy_ready.jinja.py delete mode 100644 tools/inference_builder/templates/responder/infer.jinja.py delete mode 100644 tools/inference_builder/templates/responder/list_files.jinja.py delete mode 100644 tools/inference_builder/templates/responder/list_live_streams.jinja.py delete mode 100644 tools/inference_builder/templates/serverless/inference.jinja.py delete mode 100644 tools/inference_builder/templates/triton/model.jinja.py delete mode 100644 tools/inference_builder/tools/trt_build.py diff --git a/tools/inference_builder/.Dockerfile.builder b/tools/inference_builder/.Dockerfile.builder deleted file mode 100644 index a0e357cf..00000000 --- a/tools/inference_builder/.Dockerfile.builder +++ /dev/null @@ -1,42 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Dockerfile.builder -FROM python:3.10-slim - -# Install system dependencies -RUN apt-get update && apt-get install -y \ - protobuf-compiler \ - git \ - default-jre \ - && rm -rf /var/lib/apt/lists/* - -# Configure pip to use NVIDIA's PyPI -ENV PIP_INDEX_URL=https://urm.nvidia.com/artifactory/api/pypi/nv-shared-pypi/simple - -# Install NIM tools and other Python dependencies -RUN pip install --no-cache-dir \ - openapi-generator-cli - -# Install project dependencies -COPY requirements.txt /tmp/ -RUN pip install --no-cache-dir -r /tmp/requirements.txt - -# Set JAVA_HOME -ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 -ENV PATH="$JAVA_HOME/bin:$PATH" - -# Set working directory -WORKDIR /workspace diff --git a/tools/inference_builder/.gitattributes b/tools/inference_builder/.gitattributes deleted file mode 100644 index 58cee12d..00000000 --- a/tools/inference_builder/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -builder/boilerplates/nim/** merge=ours -builder/boilerplates/triton/** merge=ours -templates/api_server/nim/** merge=ours -templates/api_server/triton/** merge=ours -builder/allowed_servers.txt merge=ours -.gitlab-ci.yml merge=ours -builder/samples/tao/ib_client.py merge=ours diff --git a/tools/inference_builder/.gitignore b/tools/inference_builder/.gitignore deleted file mode 100644 index ee1eb869..00000000 --- a/tools/inference_builder/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -**/__pycache__ -*.swp -*.vscode -.vscode/** -.vscode -dist -.venv -output -generated_client -*tmp* -*.tgz -.tmp diff --git a/tools/inference_builder/.gitkeep b/tools/inference_builder/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/tools/inference_builder/.gitmodules b/tools/inference_builder/.gitmodules deleted file mode 100644 index 5cb67da8..00000000 --- a/tools/inference_builder/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "dependencies/triton-inference-server/common"] - path = dependencies/triton-inference-server/common - url = https://github.com/triton-inference-server/common diff --git a/tools/inference_builder/CONTRIBUTING.md b/tools/inference_builder/CONTRIBUTING.md deleted file mode 100644 index f8df0d30..00000000 --- a/tools/inference_builder/CONTRIBUTING.md +++ /dev/null @@ -1,44 +0,0 @@ -## Inference Builder OSS Contribution Rules - -#### Signing Your Work - -* We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. - - * Any contribution which contains commits that are not Signed-Off will not be accepted. - -* To sign off on a commit you simply use the `--signoff` (or `-s`) option when committing your changes: - ```bash - $ git commit -s -m "Add cool feature." - ``` - This will append the following to your commit message: - ``` - Signed-off-by: Your Name - ``` - -* Full text of the DCO: - - ``` - Developer Certificate of Origin - Version 1.1 - - Copyright (C) 2004, 2006 The Linux Foundation and its contributors. - 1 Letterman Drive - Suite D4700 - San Francisco, CA, 94129 - - Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - ``` - - ``` - Developer's Certificate of Origin 1.1 - - By making a contribution to this project, I certify that: - - (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or - - (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or - - (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. - - (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. - ``` diff --git a/tools/inference_builder/LICENSE b/tools/inference_builder/LICENSE deleted file mode 100644 index 56ee3c8c..00000000 --- a/tools/inference_builder/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/README.md b/tools/inference_builder/README.md deleted file mode 100644 index 17fc7972..00000000 --- a/tools/inference_builder/README.md +++ /dev/null @@ -1,207 +0,0 @@ -# Inference Builder - -## Overview - -Inference Builder is a tool that automatically generates inference pipelines and integrates them into either a microservice or a standalone application. It takes an inference configuration file and an OpenAPI specification (when integrated with an HTTP server) as inputs, and may also require custom code snippets in certain cases. - -The output of the tool is a Python package that can be used to build a microservice container image with a customized Dockerfile. - -![Overview](overview.png) - -The Inference Builder consists of three major components: - -- Code templates: These are reusable modules for various inference backends and frameworks, as well as for API servers. They are optimized and tested, making them suitable for any model with specified inputs, outputs, and configuration parameters. -- Common inference flow: It serves as the core logic that standardizes the end-to-end inference process—including data loading and pre-processing, model inference, post-processing, and integration with the API server. It supports pluggable inference backends and frameworks, enabling flexibility and performance optimization. -- Command line tool: It generates a source code package by combining predefined code templates with the Common Inference Flow. It also automatically produces corresponding test cases and evaluation scripts to support validation and performance assessment. - -Visit our [documentation](doc) for more details: - -- [Inference Builder Usage](doc/usage.md) -- [Inference Builder Architecture](doc/architecture.md) - -## Getting started - -First, be sure your system meets the requirement. - -| Operating System | Python | CPU | GPU[^1] | -|:-------------------|:-------|:---------------|:-----------------------------| -|Ubuntu 24.04 |3.12 | x86, aarch64 |Nvidia ADA, Hopper, Blackwell | - -[^1]: If you only generate the inference pipeline without running it, no GPU is required. - -Next, follow these steps to get started: - -### Install prerequisites - -```bash -sudo apt update -sudo apt install protobuf-compiler -sudo apt install python3.12-venv python3.12-dev -``` - -**Note for TEGRA users:** If you're using a TEGRA device, you'll also need to install the Docker buildx plugin: - -```bash -sudo apt install docker-buildx -``` - -### Clone the repository - -```bash -git clone https://github.com/NVIDIA-AI-IOT/inference_builder -``` - -### Set up the virtual environment - -```bash -cd inference_builder -git submodule update --init --recursive -python3 -m venv .venv -source .venv/bin/activate -pip3 install -r requirements.txt -``` - -## Play with the examples - -Docker environment must be properly set up with below packages for building and running the examples: - -- **Docker**: [Installation Guide](https://docs.docker.com/desktop/setup/install/linux/ubuntu/) -- **Docker Compose**: [Installation Guide](https://docs.docker.com/desktop/setup/install/linux/ubuntu/) -- **NVIDIA Container Toolkit**: [Installation Guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) - - -Ensure nvidia runtime added to `/etc/docker/daemon.json` to run GPU-enabled containers - -```bash -{ - "runtimes": { - "nvidia": { - "args": [], - "path": "nvidia-container-runtime" - } - } -} -``` - -The `docker` group must exist in your system, please check if it has been created using `getent group docker`. Your current user must belong to the `docker` group, If not, run the command below, then log out and back in for the group change to take effect. - -```bash -sudo usermod -aG docker $USER -``` - -Now you can try [our examples](builder/samples/README.md) to learn more. These examples span all supported backends and demonstrate their distinct inference flows. - -![Inference FLow of Different Backend](doc/assets/inference_flow.png) - -## Benefit of using Inference Builder - -Compared to manually crafting inference source code, Inference Builder offers developers the following advantages: -- Separation of concerns: Introduces a new programming paradigm that decouples inference data flow and server logic from the model implementation, allowing developers to focus solely on model behavior. -- Backend flexibility: Standardizes data flow across different inference backends, enabling developers to switch to the optimal backend for their specific requirement without rewriting the entire pipeline. -- Hardware acceleration: Automatically enables GPU-accelerated processing to boost performance. -- Streaming support: Provides built-in support for streaming protocols such as RTSP with minimal configuration. -- Standardized testing: Automates and standardizes test case generation to simplify validation and evaluation workflows. - -## MCP Integration - -Inference Builder includes MCP (Model Context Protocol) integration, enabling AI-assisted pipeline generation directly within Cursor or Claude Code. With MCP, you can use natural language to generate inference pipelines, build Docker images, and explore sample configurations. - -For detailed tool reference and advanced usage, see [mcp/README-MCP.md](mcp/README-MCP.md). - -### Prerequisites - -Before setting up MCP, ensure you have completed the [Getting Started](#getting-started) steps above. - -Ensure that you are in the repository's root directory. - -### Set Up for Cursor - -1. **Generate the MCP configuration** - - For a global configuration (available across all projects): - ```bash - python3 mcp/setup_mcp.py ~/.cursor/mcp.json - ``` - - For a project-specific configuration: - ```bash - python3 mcp/setup_mcp.py /path/to/your_project/.cursor/mcp.json - ``` - -2. **Open your project folder and verify the MCP server is successfully loaded** - - In Cursor, navigate to **File > Preferences > Cursor Settings > MCP**. You should see: - - ![MCP Server](mcp.png) - - A green status icon next to `deepstream-inference-builder` indicates the server is connected. - -3. **Start using the MCP tools:** - - Start a new Cursor agent and invoke the tools by mentioning "deepstream inference builder" in your prompt: - - "Show me what sample configurations are available from the inference builder?" - - "Generate a DeepStream object detection pipeline using the inference builder with PeopleNet transformer model from NGC." - -### Set Up for Claude Code - -1. **Generate the MCP configuration:** - - For a global configuration: - ```bash - python3 mcp/setup_mcp.py ~/.claude/.mcp.json - ``` - - For a project-specific configuration: - ```bash - python3 mcp/setup_mcp.py /path/to/your_project/.mcp.json - ``` - -2. **Start Claude Code from your project folder and Verify the MCP server is connected:** - - Run `/mcp` in the Claude Code console. You should see: - ``` - ❯ deepstream-inference-builder · ✔ connected - ``` - -3. **Start using the MCP tools:** - - Simply ask Claude Code to perform tasks by mentioning "deepstream inference builder" in your prompt: - - "Show me what sample configurations are available from the inference builder?" - - "Generate a DeepStream object detection pipeline using the inference builder with PeopleNet transformer model from NGC." - -### Available MCP Tools - -| Tool | Description | -|------|-------------| -| `generate_inference_pipeline` | Generate inference pipelines from YAML configuration files | -| `build_docker_image` | Build Docker images from generated pipelines | -| `docker_run_image` | Run Docker images for testing and troubleshooting | -| `prepare_model_repository` | Download models from NGC or HuggingFace and prepare repositories | -| `generate_nvinfer_config` | Generate DeepStream nvinfer runtime configuration files | - -### Available MCP Resources - -| Resource | Description | -|----------|-------------| -| `docs://README.md` | Project documentation | -| `docs://mcp/README-MCP.md` | MCP integration documentation | -| `schema://config.schema.json` | Configuration schema reference | -| `samples://config/*` | Sample pipeline configurations | -| `samples://dockerfile/*` | Sample Dockerfiles | -| `samples://processor/*` | Sample preprocessors and postprocessors | - -### Sample Prompts - -You can now try out the [example prompts](mcp/examples.md) using either Cursor or Claude Code. - -## Contributing - -Contributions are welcome! Please feel free to submit a PR. - - -## Project status and roadmap - -The project is under active development and the following features are expected to be supported in the near future: - -- Support for more backends and frameworks such as SGLANG. -- Support for more model types such as speech models. diff --git a/tools/inference_builder/VERSION b/tools/inference_builder/VERSION deleted file mode 100644 index 0ea3a944..00000000 --- a/tools/inference_builder/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.2.0 diff --git a/tools/inference_builder/builder/__init__.py b/tools/inference_builder/builder/__init__.py deleted file mode 100644 index 3159bfe6..00000000 --- a/tools/inference_builder/builder/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tools/inference_builder/builder/allowed_servers.txt b/tools/inference_builder/builder/allowed_servers.txt deleted file mode 100644 index 08e5d42f..00000000 --- a/tools/inference_builder/builder/allowed_servers.txt +++ /dev/null @@ -1,3 +0,0 @@ -fastapi -serverless - diff --git a/tools/inference_builder/builder/boilerplates/fastapi/cookiecutter.json b/tools/inference_builder/builder/boilerplates/fastapi/cookiecutter.json deleted file mode 100644 index ebeca75a..00000000 --- a/tools/inference_builder/builder/boilerplates/fastapi/cookiecutter.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "service_name": "my-service" -} diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/__main__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/__main__.py deleted file mode 100644 index b5442ae4..00000000 --- a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/__main__.py +++ /dev/null @@ -1,19 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import server.inference - -if __name__ == "__main__": - server.inference.main() \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/config/__init__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/config/__init__.py deleted file mode 100644 index f9c99939..00000000 --- a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/config/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/custom/__init__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/custom/__init__.py deleted file mode 100644 index f9c99939..00000000 --- a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/custom/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/lib/__init__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/lib/__init__.py deleted file mode 100644 index f9c99939..00000000 --- a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/lib/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/server/__init__.py b/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/server/__init__.py deleted file mode 100644 index f9c99939..00000000 --- a/tools/inference_builder/builder/boilerplates/fastapi/{{cookiecutter.service_name}}/server/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/serverless/cookiecutter.json b/tools/inference_builder/builder/boilerplates/serverless/cookiecutter.json deleted file mode 100644 index ebeca75a..00000000 --- a/tools/inference_builder/builder/boilerplates/serverless/cookiecutter.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "service_name": "my-service" -} diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/__main__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/__main__.py deleted file mode 100644 index 613fefcd..00000000 --- a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/__main__.py +++ /dev/null @@ -1,19 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import app.inference - -if __name__ == "__main__": - app.inference.main() \ No newline at end of file diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/app/__init__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/app/__init__.py deleted file mode 100644 index 3159bfe6..00000000 --- a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/app/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/config/__init__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/config/__init__.py deleted file mode 100644 index 3159bfe6..00000000 --- a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/config/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/custom/__init__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/custom/__init__.py deleted file mode 100644 index 3159bfe6..00000000 --- a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/custom/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/lib/__init__.py b/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/lib/__init__.py deleted file mode 100644 index 3159bfe6..00000000 --- a/tools/inference_builder/builder/boilerplates/serverless/{{cookiecutter.service_name}}/lib/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tools/inference_builder/builder/main.py b/tools/inference_builder/builder/main.py deleted file mode 100644 index e8085c30..00000000 --- a/tools/inference_builder/builder/main.py +++ /dev/null @@ -1,677 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import base64 -import tempfile -import shutil -from omegaconf import OmegaConf -import cookiecutter.main -import cookiecutter -import logging -from typing import Dict, List -from pathlib import Path -from utils import get_resource_path, copy_files, create_tar_gz -from triton.utils import generate_pbtxt -from omegaconf.errors import ConfigKeyError -from jinja2 import Environment, FileSystemLoader -import ast -import os -import sys -import subprocess -import validate -import re -import json -import sys - -# Import schema validation functions -try: - from jsonschema import Draft7Validator -except ImportError: - Draft7Validator = None - logging.warning("jsonschema not installed. Schema validation will be skipped. Install with: pip install jsonschema") - -""" -Inference Builder Main Module - -Security Features: -- Input validation for file paths and directory paths to prevent directory traversal attacks -- Server type validation against allowed values to prevent injection -- Safe subprocess calls using argument lists instead of shell string interpolation -- Comprehensive argument validation in main function to prevent command injection -- Logging of all executed commands for audit trails -""" - -LICENSE_HEADER = """ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - - -def load_allowed_servers(file_path: str = None) -> List[str]: - """Load allowed server types from a text file. - - Args: - file_path: Path to the text file containing allowed server types. - If None, uses the default 'allowed_servers.txt' - in the builder directory. - - Returns: - List of allowed server type strings. - - Raises: - FileNotFoundError: If the configuration file is not found. - ValueError: If the file is empty or contains invalid entries. - """ - if file_path is None: - # Use default file in the same directory as this script - script_dir = Path(__file__).parent - file_path = script_dir / "allowed_servers.txt" - else: - file_path = Path(file_path) - - if not file_path.exists(): - raise FileNotFoundError( - f"Allowed servers configuration file not found: {file_path}" - ) - - allowed_servers = [] - with open(file_path, 'r', encoding='utf-8') as f: - for line in f: - # Strip whitespace and ignore empty lines and comments - line = line.strip() - if line and not line.startswith('#'): - allowed_servers.append(line) - - if not allowed_servers: - raise ValueError(f"No valid server types found in {file_path}") - - return allowed_servers - - -# Load allowed server types from configuration file -ALLOWED_SERVER = load_allowed_servers() - - -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger("Main") -OmegaConf.register_new_resolver("multiline", lambda x: x, replace=False) - - -def validate_file_path(file_path: str) -> str: - """Validate and sanitize a file path to prevent directory traversal and command injection. - - Returns: - str: Validated and resolved absolute file path. - Raises: - ValueError: If path is invalid or potentially dangerous. - """ - if not file_path: - raise ValueError("File path cannot be empty") - - try: - abs_path = os.path.abspath(file_path) - resolved_path = os.path.realpath(abs_path) - except (OSError, ValueError) as e: - raise ValueError(f"Invalid file path: {e}") - - if ".." in os.path.normpath(file_path): - raise ValueError("Path traversal detected in file path") - - invalid_chars = ['<', '>', ':', '"', '|', '?', '*'] - if any(char in file_path for char in invalid_chars): - raise ValueError("Invalid characters in file path") - - system_dirs = ['/etc', '/sys', '/proc', '/dev', '/boot', '/usr/bin', '/usr/sbin'] - for sys_dir in system_dirs: - if resolved_path.startswith(sys_dir): - raise ValueError(f"Access to system directory {sys_dir} is not allowed") - - path = Path(resolved_path) - if not path.exists() or not path.is_file(): - raise ValueError(f"File not found or not a regular file: {resolved_path}") - - return resolved_path - - -def validate_directory_path(dir_path: str) -> str: - """Validate and sanitize a directory path to prevent directory traversal attacks. - - Returns: - str: Validated and resolved absolute directory path. - Raises: - ValueError: If path is invalid or potentially dangerous. - """ - if not dir_path: - raise ValueError("Directory path cannot be empty") - - try: - abs_path = os.path.abspath(dir_path) - resolved_path = os.path.realpath(abs_path) - except (OSError, ValueError) as e: - raise ValueError(f"Invalid directory path: {e}") - - if ".." in os.path.normpath(dir_path): - raise ValueError("Path traversal detected in directory path") - - invalid_chars = ['<', '>', ':', '"', '|', '?', '*'] - if any(char in dir_path for char in invalid_chars): - raise ValueError("Invalid characters in directory path") - - system_dirs = ['/etc', '/sys', '/proc', '/dev', '/boot', '/usr/bin', '/usr/sbin'] - for sys_dir in system_dirs: - if resolved_path.startswith(sys_dir): - raise ValueError(f"Access to system directory {sys_dir} is not allowed") - - return resolved_path - - -def validate_server_type(server_type: str) -> bool: - """Validate server type against allowed values.""" - return server_type in ALLOWED_SERVER - - -def validate_config_against_schema(config_dict: Dict, schema_dir: Path = None) -> bool: - """Validate configuration against JSON schema. - - Args: - config_dict: Configuration dictionary to validate - schema_dir: Directory containing schema files (default: ../schemas from this file) - - Returns: - True if valid, False otherwise - """ - if Draft7Validator is None: - logger.warning("Skipping schema validation (jsonschema not installed)") - return True - - # Determine schema directory - if schema_dir is None: - schema_dir = Path(__file__).parent.parent / "schemas" - - if not schema_dir.exists(): - logger.warning(f"Schema directory not found: {schema_dir}. Skipping schema validation.") - return True - - # Load main schema - schema_path = schema_dir / "config.schema.json" - try: - with open(schema_path, 'r') as f: - schema = json.load(f) - except FileNotFoundError: - logger.warning(f"Schema file not found: {schema_path}. Skipping schema validation.") - return True - except json.JSONDecodeError as e: - logger.error(f"Invalid schema file: {e}") - return False - - # Validate configuration - try: - validator = Draft7Validator(schema) - errors = list(validator.iter_errors(config_dict)) - - if not errors: - logger.info("✓ Configuration schema validation passed") - return True - - logger.error(f"✗ Configuration validation failed with {len(errors)} error(s):") - for i, error in enumerate(errors, 1): - path = '.'.join(str(p) for p in error.path) if error.path else 'root' - logger.error(f" Error {i} at '{path}': {error.message}") - - if error.context: - for ctx_error in error.context: - logger.error(f" - {ctx_error.message}") - - return False - - except Exception as e: - logger.error(f"Error during schema validation: {e}") - return False - - -def get_version(): - version_file = Path(__file__).parent.parent / "VERSION" - with open(version_file, 'r') as f: - return f.read().strip() - - -def build_args(parser): - parser.add_argument( - "-v", - "--version", - action="version", - version=f"%(prog)s {get_version()}" - ) - parser.add_argument( - "--server-type", - type=str, - nargs='?', - default='fastapi', - choices=ALLOWED_SERVER, - help="Choose the server type" - ) - parser.add_argument( - "-o", - "--output-dir", - type=str, - nargs='?', - default='.', - help="Output directory" - ) - parser.add_argument( - "-a", - "--api-spec", - type=argparse.FileType('r'), - nargs='?', - help="File for OpenAPI specification" - ) - parser.add_argument( - "-c", - "--custom-module", - type=argparse.FileType('r'), - nargs='*', - help="Custom python modules" - ) - parser.add_argument( - "-x", - "--exclude-lib", - action='store_true', - help="Don't include common lib to the generated code." - ) - parser.add_argument( - "-t", - "--tar-output", - action='store_true', - help="Zip the output to a single file" - ) - parser.add_argument("config", type=str, help="Path the the configuration") - parser.add_argument( - "--validation-dir", - type=str, - help="valid validation directory path to build validator" - ) - parser.add_argument( - "--no-docker", - action="store_true", - help="Use local OpenAPI Generator instead of Docker for OpenAPI client generation") - parser.add_argument( - "--test-cases-abs-path", - action="store_true", - help="Use absolute paths in generated test_cases.yaml" - ) - -def build_tree(server_type, config, temp_dir): - cookiecutter.main.cookiecutter( - get_resource_path(f"builder/boilerplates/{server_type}"), - no_input=True, - extra_context={"service_name": config.name}, - output_dir=temp_dir) - return Path(temp_dir) / Path(config.name) - -def build_custom_modules(custom_modules: List, tree): - cls_list = [] - tpl_dir = get_resource_path("templates") - jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) - tree = tree / "custom" - for m in custom_modules: - filename = os.path.basename(m.name) - module_id = os.path.splitext(filename)[0] - with m as f: - valid = False - source = f.read() - py = ast.parse(source) - for node in ast.walk(py): - if isinstance(node, ast.ClassDef): - name = None - has_call = False - for cls_node in node.body: - if isinstance(cls_node, ast.Assign): - for target in cls_node.targets: - if isinstance(target, ast.Name) and target.id == "name": - name = ast.literal_eval(cls_node.value) - if isinstance(cls_node, ast.FunctionDef): - if cls_node.name == "__call__": - has_call = True - if name and has_call: - if next((i for i in cls_list if i["name"] == name), None): - logger.warning(f"Custom class {name} defined more than once") - continue - cls_list.append({ - "name": name, - "module": module_id, - "class_name": node.name - }) - valid = True - if valid: - # write the python module - target_path = tree / f"{module_id}.py" - with open(target_path, "w") as t: - t.write(source) - custom_tpl = jinja_env.get_template('common/custom.__init__.jinja.py') - output = custom_tpl.render(classes=cls_list) - with open(tree/"__init__.py", 'w') as f: - f.write(output) - -def build_inference(server_type, config, output_dir: Path): - tpl_dir = get_resource_path("templates") - jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) - triton_model_repo_dir = output_dir/'model_repo' - triton_tpl = jinja_env.get_template("triton/model.jinja.py") - generic_tpl = jinja_env.get_template("generic/model.jinja.py") - - # collect the backend: build model.py and pbtxt if the backend is triton - t_backends = [] - for model in config.models: - backend_spec = model.backend.split('/') - if backend_spec[0] == "triton": - os.makedirs(triton_model_repo_dir/f"{model.name}/1", exist_ok=True) - if len(backend_spec) < 2: - raise Exception("Triton backend needs a triton backend type") - if backend_spec[1] == "python": - if len(backend_spec) < 3: - raise Exception("Triton python backend needs an implementation type") - # generating triton model for triton backend - target_dir = triton_model_repo_dir/f"{model.name}/1" - # Triton python backend needs a model.py - backend_tpl = jinja_env.get_template(f"backend/{backend_spec[2]}.jinja.py") - backend = backend_tpl.render(server_type=server_type) - output = triton_tpl.render(backends=[backend], top_level=False, license=LICENSE_HEADER) - with open (target_dir/"model.py", 'w') as o: - o.write(output) - # triton python backend to communicate with triton fastapi server - if "triton" not in t_backends: - t_backends.append("triton") - # write the pbtxt - pbtxt_str = generate_pbtxt(OmegaConf.to_container(model), backend_spec[1] ) - pbtxt_path = triton_model_repo_dir/model.name/"config.pbtxt" - with open(pbtxt_path, 'w') as f: - f.write(pbtxt_str) - else: - bare_backend = backend_spec[0] - if bare_backend not in t_backends: - t_backends.append(bare_backend) - - # create backends and model.py - backends = [] - if server_type == "serverless": - target_dir = output_dir / "app" - elif server_type == "triton": - target_dir = triton_model_repo_dir/f"{config.name}"/"1/" - else: - target_dir = output_dir / "server" - for backend in t_backends: - backend_tpl = jinja_env.get_template(f"backend/{backend}.jinja.py") - backends.append(backend_tpl.render(server_type=server_type)) - if server_type == "triton": - # render top level triton backend - output = triton_tpl.render(backends=backends, top_level=True) - else: - # render generic model.y - output = generic_tpl.render(backends=backends, license=LICENSE_HEADER) - with open (target_dir/"model.py", 'w') as o: - o.write(output) - -def build_serverless(name: str, output_dir: Path): - output_dir = output_dir / "app" - tpl_dir = get_resource_path("templates") - jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) - app_tpl = jinja_env.get_template("serverless/inference.jinja.py") - output = app_tpl.render(service_name=name, license=LICENSE_HEADER) - with open(output_dir/"inference.py", 'w') as f: - f.write(output) - -def build_server(server_type, model_name, api_spec, config: Dict, output_dir): - output_dir = output_dir / "server" - # generate pydantic data models and inference base class from swagger spec - tpl_dir = get_resource_path("templates") - jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) - api_tpl_dir = get_resource_path(f"templates/api_server/{server_type}/route") - - # Use safer subprocess call with argument list instead of shell string interpolation - # Find fastapi-codegen in the same directory as the current Python executable - python_dir = Path(sys.executable).parent - fastapi_codegen = python_dir / "fastapi-codegen" - - command = [ - str(fastapi_codegen), - "--input", api_spec.name, - "--output", str(output_dir), - "--output-model-type", "pydantic_v2.BaseModel", - "--template-dir", str(api_tpl_dir), - "-m", "data_model.py", - "--disable-timestamp" - ] - - logger.info(f"Executing command: {' '.join(command)}") - result = subprocess.run(command, capture_output=True, text=True) - if result.returncode != 0: - raise Exception(f"Failed to generate fastapi data models: {result.stderr}") - - responders = [] - for name, r in config["responders"].items(): - responder = { - "name": name, - "operation": r["operation"], - } - tpl = jinja_env.get_template(f"responder/{name}.jinja.py") - responder["implementation"] = tpl.render(**responder) - responders.append(responder) - svr_tpl = jinja_env.get_template(f"api_server/{server_type}/responder.jinja.py") - # render the responder.py - if server_type == "triton": - req_cls = [k for k in config["responders"]["infer"]["requests"].keys()] - res_cls = [k for k in config["responders"]["infer"]["responses"].keys()] - triton_config = { - "request_class": req_cls[0], - "response_class": res_cls[0], - "streaming_response_class": res_cls[1] if len(res_cls) > 1 else res_cls[0] - } - output = svr_tpl.render( - service_name=model_name, - license=LICENSE_HEADER, - responders=responders, - triton=triton_config - ) - elif server_type == "fastapi": - output = svr_tpl.render( - service_name=model_name, - license=LICENSE_HEADER, - responders=responders - ) - else: - raise ValueError(f"Unsupported server type: {server_type}") - with open(output_dir/"responder.py", 'w') as f: - f.write(output) - - -def generate_configuration(config, tree): - def encode_templates(templates): - encoded_templates = dict() - for key, value in templates.items(): - # these are json templates and need be encoded before being - # embeded as yaml strings - if isinstance(value, str): - encoded_templates[key] = base64.b64encode(value.encode()) - else: - encoded_templates[key] = value - return encoded_templates - # base64 encode the templates if found in the config - config_map = OmegaConf.to_container(config) - if "input" not in config_map: - config_map["input"] = [] - for m in config_map["models"]: - for i in m["input"]: - config_map["input"].append(i) - if "output" not in config_map: - config_map["output"] = [] - for m in config_map["models"]: - for o in m["output"]: - config_map["output"].append(o) - if "server" in config_map: - try: - for responder in config_map["server"]["responders"].values(): - input_templates = responder.get("requests", None) - output_templates = responder.get("responses", None) - if input_templates: - responder["requests"] = encode_templates(input_templates) - if output_templates: - responder["responses"] = encode_templates(output_templates) - except ConfigKeyError: - raise ValueError("Server config error: responders not found") - # write the config to a python file - tpl_dir = get_resource_path("templates") - jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) - config_tpl = jinja_env.get_template('common/config.jinja.py') - config = OmegaConf.create(config_map) - output = config_tpl.render(config=OmegaConf.to_yaml(config), license=LICENSE_HEADER) - with open(tree/"config/__init__.py", 'w') as f: - f.write(output) - - -def main(args): - # Defense-in-depth: validate and sanitize all path arguments - try: - args.config = validate_file_path(args.config) - except ValueError as e: - raise ValueError(f"Invalid config file path: {e}") - - if not validate_server_type(args.server_type): - raise ValueError(f"Invalid server type: {args.server_type}") - - try: - args.output_dir = validate_directory_path(args.output_dir) - except ValueError as e: - raise ValueError(f"Invalid output directory: {e}") - - if args.validation_dir: - try: - args.validation_dir = validate_directory_path(args.validation_dir) - except ValueError as e: - raise ValueError(f"Invalid validation directory: {e}") - - if args.custom_module: - for module in args.custom_module: - try: - validate_file_path(module.name) - except ValueError as e: - raise ValueError(f"Invalid custom module file path: {e}") - - # Load configuration - logger.info(f"Loading configuration from: {args.config}") - config = OmegaConf.load(args.config) - - # Validate configuration against JSON schema - logger.info("Validating configuration against JSON schema...") - config_dict = OmegaConf.to_container(config, resolve=True) - - if not validate_config_against_schema(config_dict): - logger.error("Configuration validation failed. Fix the errors above and try again.") - sys.exit(1) - - with tempfile.TemporaryDirectory() as temp_dir: - tree = build_tree(args.server_type, config, temp_dir) - if args.server_type == "serverless": - build_serverless(config.name, tree) - else: - build_server(args.server_type, config.name, args.api_spec, OmegaConf.to_container(config.server), tree) - build_inference(args.server_type, config, tree) - generate_configuration(config, tree) - if not args.exclude_lib : - copy_files(get_resource_path("lib"), tree/"lib") - if args.custom_module: - build_custom_modules(args.custom_module, tree) - if args.tar_output: - target = Path(args.output_dir).resolve() / f"{config.name}.tgz" - create_tar_gz(target, tree) - else: - try: - target = Path(args.output_dir).resolve() / config.name - shutil.copytree(tree, target, dirs_exist_ok=True) - except FileExistsError: - logging.error(f"{target} already exists in the output directory") - # Build validator if validation dir provided - if args.validation_dir: - try: - validation_dir = Path(args.validation_dir).resolve() - api_spec_path = Path(args.api_spec.name).resolve() - if validate.build_validation(api_spec_path, validation_dir, not args.no_docker, args.test_cases_abs_path): - logger.info("✓ Successfully built validation") - else: - logger.error("✗ Failed to build validation") - except Exception as e: - logger.error(f"validation build failed: {e}") - # Continue with other builds - # Continue to finish the build without validation - print("Build completed successfully") - - - -if __name__ == "__main__": - parser = argparse.ArgumentParser("Inference Builder") - build_args(parser) - - try: - args = parser.parse_args() - except Exception as e: - print(f"Error: Argument parsing failed: {str(e)}") - sys.exit(1) - - # Comprehensive security validation - validation_errors = [] - - # Validate and sanitize config file path - try: - args.config = validate_file_path(args.config) - except ValueError as e: - validation_errors.append(f"Invalid config file path: {e}") - - # Validate server type (already constrained by argparse choices) - if not validate_server_type(args.server_type): - validation_errors.append(f"Invalid server type: {args.server_type}") - - # Validate and sanitize output directory - try: - args.output_dir = validate_directory_path(args.output_dir) - except ValueError as e: - validation_errors.append(f"Invalid output directory: {e}") - - # Validate and sanitize validation directory - if args.validation_dir: - try: - args.validation_dir = validate_directory_path(args.validation_dir) - except ValueError as e: - validation_errors.append(f"Invalid validation directory: {e}") - - # Exit if any validation errors - if validation_errors: - print("Security validation failed:") - for error in validation_errors: - print(f" - {error}") - sys.exit(1) - - main(args) \ No newline at end of file diff --git a/tools/inference_builder/builder/openapitools.json b/tools/inference_builder/builder/openapitools.json deleted file mode 100644 index b3ae3aa4..00000000 --- a/tools/inference_builder/builder/openapitools.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", - "spaces": 2, - "generator-cli": { - "version": "7.14.0" - } -} - diff --git a/tools/inference_builder/builder/samples/README.md b/tools/inference_builder/builder/samples/README.md deleted file mode 100644 index c90fb155..00000000 --- a/tools/inference_builder/builder/samples/README.md +++ /dev/null @@ -1,49 +0,0 @@ -## Introduction - -The examples in this folder demonstrates how to use Inference Builder to create inference pipelines with various backend, such as Deepstream, TensorRT, Triton, TensorRT-LLM, etc. - -With the provided Dockerfile, you can package the generated pipeline into a container image and run it as a standalone app or a microservice. Build steps vary by backend. Check the corresponding README.md in each example folder for exact instructions. For examples that run as microservices, we've provided an all-in-one [docker-compose.yml](./docker-compose.yml) to manage them together. You can customize the container behavior by changing the configurations there accordingly. - -## Models - -Some of the models for examples are from the NVIDIA GPU Cloud (NGC) repository, and certain models from NGC require active subscription. Please download and install the NGC CLI from the [NGC page](https://org.ngc.nvidia.com/setup/installers/cli) and follow the [NGC CLI Guide](https://docs.ngc.nvidia.com/cli/index.html) to set up the tool. - -## List of Examples - -### DeepStream Backend Examples - -| Name | Description | Models | Backend | Output | -|------|-------------|---------|---------|---------| -| [ds_app](./ds_app/) | examples of building standalone deepstream application | TAO Computer Vision models | Deepstream | command line interface application | -| [tao](./tao/) | examples of building inference microservices using deepstream pipeline and fastapi | TAO Computer Vision models | Deepstream | microservice | - -### Triton Backend Examples - -| Name | Description | Models | Backend | Output | -|------|-------------|---------|---------|---------| -| [changenet](./changenet/) | example of building inference microservices with triton server | Visual ChangeNet | Triton/TensorRT | microservice | - -### TensorRT Backend Examples - -| Name | Description | Models | Backend | Output | -|------|-------------|---------|---------|---------| -| [nvclip](./nvclip/) | example of building inference microservices with TensorRT backend | NVCLIP | TensorRT | microservice | - -### TensorRT-LLM Backend Examples - -| Name | Description | Models | Backend | Output | -|------|-------------|---------|---------|---------| -| [qwen](./qwen/) | example of building inference microservices with TensorRT-LLM backend for vlm models | Qwen 2.5 VL models | TensorRT-LLM, Pytorch | microservice | - -### Multiple Model Examples - -| Name | Description | Models | Backend | Output | -|------|-------------|---------|---------|---------| -| [cradio](./cradio/) | two-stage pipeline: PeopleNet Transformer (detection) then C-RADIOv3-H (per-detection embeddings) | PeopleNet Transformer, C-RADIOv3-H | DeepStream/nvinfer, TensorRT (polygraphy) | command line interface application | - -### VLLM Backend Examples - -| Name | Description | Models | Backend | Output | -|------|-------------|---------|---------|---------| -| [vllm](./vllm/) | example of building inference microservices with vLLM backend and DeepStream MediaExtractor | Cosmos-Reason2-2B, Qwen3-VL-2B-Instruct | vLLM, DeepStream | microservice | - diff --git a/tools/inference_builder/builder/samples/changenet/Dockerfile b/tools/inference_builder/builder/samples/changenet/Dockerfile deleted file mode 100644 index 0ca172a0..00000000 --- a/tools/inference_builder/builder/samples/changenet/Dockerfile +++ /dev/null @@ -1,85 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# A sample Dockerfile for a Triton inference backend with DeepStream- -# accelerated ImageInputDataFlow and CVCUDA for pre-processing. - -# Pull the base image from Deepstream Triton multiarch image. -FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS builder_base - -# Install the Python dependencies required by THIS changenet sample -# backend. These versions are pinned for reproducibility and may be -# adjusted for other pipelines or environments. -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install \ - requests==2.32.3 \ - python-multipart==0.0.9 \ - aiofiles==23.2.1 \ - aiohttp==3.11.0 \ - annotated-types==0.7.0 \ - python-magic==0.4.27 \ - torch==2.7.0 --extra-index-url https://download.pytorch.org/whl/cu128 \ - torchvision==0.22.0 \ - Pillow==11.1.0 \ - open_clip_torch==2.30.0 \ - numpy==1.26.4 \ - omegaconf==2.3.0 \ - transformers==4.48.0 \ - fastapi==0.115.12 \ - uvicorn==0.29.0 \ - tritonclient[all]==2.63.0 - -# Install CVCUDA for pre-processing. -# NOTE: These .deb files are built for x86_64 and specific CUDA/Python -# versions. For different architectures or CUDA/Python versions you may -# need to update these URLs to a compatible CVCUDA release. -RUN wget https://github.com/CVCUDA/CV-CUDA/releases/download/v0.16.0/cvcuda-lib-0.16.0-cuda13-x86_64-linux.deb \ - https://github.com/CVCUDA/CV-CUDA/releases/download/v0.16.0/cvcuda-dev-0.16.0-cuda13-x86_64-linux.deb \ - https://github.com/CVCUDA/CV-CUDA/releases/download/v0.16.0/cvcuda-python3.12-0.16.0-cuda13-x86_64-linux.deb \ - && dpkg -i *.deb - -ENV TRANSFORMERS_CACHE=/tmp - -WORKDIR /workspace - -# Copy the inference flow package generated by Inference Builder. -# This tarball (here: changenet.tgz) is typically the result of running -# the builder with tar ball output enabled, and its name should match the -# generated pipeline artifact you want to deploy. -ADD changenet.tgz /workspace - -RUN groupadd --gid 1000 --non-unique nvs && \ - useradd --create-home --shell /usr/sbin/nologin --uid 1000 --non-unique --gid 1000 nvs && \ - chown 1000.1000 /workspace - -USER nvs:1000 - -# Create the entrypoint script that runs the generated -# /workspace/__main__.py (the Inference Builder pipeline entrypoint) -# and then starts Triton with /workspace/model_repo as the model repository. -RUN touch /workspace/start_server.sh && \ - chmod a+rx /workspace/start_server.sh && \ - cat > /workspace/start_server.sh <<-EOF - #!/usr/bin/env bash - set -eu - - # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. - # SPDX-License-Identifier: LicenseRef-NvidiaProprietary - python3 /workspace/__main__.py & tritonserver --model-repository /workspace/model_repo -# while true; do sleep 5; done -EOF - -ENTRYPOINT ["/workspace/start_server.sh"] -CMD [] \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/changenet/README.md b/tools/inference_builder/builder/samples/changenet/README.md deleted file mode 100644 index 4bdb3f23..00000000 --- a/tools/inference_builder/builder/samples/changenet/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Introduction - -This sample demonstrates how to build an inference pipeline for models that use triton backend. It also shows how to incorporate CVCUDA in customized processors to accelerate media processing. - -We provide a sample Dockerfile for the example, which you can use to build a Docker image and test the microservice on any x86 system with an NVIDIA Ampere, Hopper, and Blackwell GPU. - -# Prerequisites - -**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. - -The model used in the sample can be found on NGC: https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/visual_changenet_segmentation_landsatscd - -Before downloading the model file, you need to set up your model repository: - -```bash -mkdir -p ~/.cache/model-repo && chmod 777 ~/.cache/model-repo -export MODEL_REPO=~/.cache/model-repo -``` - -## Download the model file using NGC CLI: - -```bash -ngc registry model download-version "nvidia/tao/visual_changenet_segmentation_landsatscd:deployable_v1.2" -# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default -mv visual_changenet_segmentation_landsatscd_vdeployable_v1.2 $MODEL_REPO/visual_changenet -# Change the access right for docker command -chmod 777 $MODEL_REPO/visual_changenet -chmod 666 $MODEL_REPO/visual_changenet/* # correct the permissions in case they're wrong -``` - -Run `ls $MODEL_REPO/visual_changenet -l`, be sure you have `changenet_768.onnx` in your model folder and the file permissions are correct. - -**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided above within the prerequisites section. - -## Create the optimized TensorRT Engine: - -```bash -docker login nvcr.io -docker run -it --rm --gpus all \ --v ~/.cache/model-repo/visual_changenet/:/changenet \ -nvcr.io/nvidia/tensorrt:25.12-py3 \ -trtexec --onnx=/changenet/changenet_768.onnx --saveEngine=/changenet/model.plan --fp16 -``` - -Run `ls $MODEL_REPO/visual_changenet -l`, be sure you have `model.plan` generated in your model folder and the file permissions are correct. The process takes approximately 10 minutes and you only need to run it once unless the model file changes. - -# Build the inference flow: - -Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment, and you're already in the inference_builder folder. - -The following command activates the virtual environment and generates the inference source package in `builder/samples/changenet` - -```bash -source .venv/bin/activate -python builder/main.py \ - --server-type fastapi \ - -a builder/samples/changenet/openapi.yaml \ - -c builder/samples/changenet/processors.py \ - -o builder/samples/changenet -t \ - builder/samples/changenet/trt_changenet.yaml -``` - -# Build and run the docker image: - -The process takes about 10 minutes, though the actual time may vary depending on your hardware and network bandwidth. - -```bash -cd builder/samples -docker compose up --build ms-changenet -``` - -# Test the microservice with a client - -After the server has started successfully, open a new terminal in the inference_builder folder and launch the client to compare two sample images. A display environment is required for the client to visualize the difference between the two input pictures. - -To avoid errors related to display, you need to set the DISPLAY environment variable based on your system: - -```bash -export DISPLAY=:0 # or :1 depending on your system -``` - -Then, allow X server connections from any host: -```bash -xhost + -``` - -If the configuration is successful, you will see this message in the log: `access control disabled, clients can connect from any host`. - -Then start the client: - -```bash -source .venv/bin/activate && cd builder/samples/changenet -python ib_client.py --host 127.0.0.1 --port 8803 --file test_0.jpg golden_0.jpg -``` - -If the inference request is successfully processed, you'll get a HTTP 200 response and a new window shows the difference between two images. \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/changenet/golden_0.jpg b/tools/inference_builder/builder/samples/changenet/golden_0.jpg deleted file mode 100644 index d1286e9afce26dd8ea09a6c1235e7eda8f828874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35195 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

A}*nR#8gHAC`=A8hs+0Xb0w(D?+evgCE|u0CV4 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

r48&ZKsTkW*#uZ%(_{5Am(&ohT?3hJ2ASt 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 (which is just a placeholder) with your actual RTSP stream URL. The application supports various RTSP stream formats including H.264, H.265, and MJPEG. - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). - -# Note: Replace rtsp:// with your actual RTSP stream URL - -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url rtsp:// \ - --mime video/mp4 -``` - -### Run with source config - -```bash -# source-config: path to the source configuration file that defines input sources -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --source-config /opt/nvidia/deepstream/deepstream/service-maker/sources/apps/python/pipeline_api/deepstream_test5_app/source_list_dynamic.yaml -``` - -**Note:** To use a custom source configuration file, you need to mount your file into the docker container and reference it from within the container's filesystem. This allows you to use your own source configuration instead of the default one. - -```bash -# source-config: path to the source configuration file that defines input sources - -# Note: /workspace/inputs/source_list_dynamic.yaml is just a placeholder for any config present in $SAMPLE_INPUT directory - -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $MODEL_REPO:/workspace/models \ - -v $SAMPLE_INPUT:/workspace/inputs \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --source-config /workspace/inputs/source_list_dynamic.yaml -``` - -### Run with image input - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). - -# Note: /sample_input/test_1.jpg is just a placeholder for any image present in $SAMPLE_INPUT directory - -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $SAMPLE_INPUT:/sample_input \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url /sample_input/test_1.jpg \ - --mime image/jpeg -``` - - diff --git a/tools/inference_builder/builder/samples/ds_app/detection/ds_detect.yaml b/tools/inference_builder/builder/samples/ds_app/detection/ds_detect.yaml deleted file mode 100644 index 2f19b82d..00000000 --- a/tools/inference_builder/builder/samples/ds_app/detection/ds_detect.yaml +++ /dev/null @@ -1,95 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -name: "deepstream-app" -model_repo: "/workspace/models" - -input: -- name: media_url - data_type: TYPE_CUSTOM_LIST - dims: [ -1 ] - optional: true -- name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - optional: true -- name: source_config - data_type: TYPE_CUSTOM_DS_SOURCE_CONFIG - dims: [ 1 ] - optional: true - -output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - -models: -- name: rtdetr - backend: deepstream/nvinfer - max_batch_size: "$MAX_BATCH_SIZE|4" - input: - - name: images - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [ -1 ] - optional: true - - name: media_url - data_type: TYPE_CUSTOM_DS_MEDIA_URL - dims: [ -1 ] - optional: true - - name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - optional: true - - name: source_config - data_type: TYPE_CUSTOM_DS_SOURCE_CONFIG - dims: [ 1 ] - optional: true - output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - parameters: - # timeout in microseconds for batching multiple inputs - batch_timeout: 33333 - infer_config_path: - - nvdsinfer_config.yaml - tracker_config: - ll_lib_file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so - ll_config_file: /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_perf.yml - width: 960 - height: 544 - display_tracking_id: true - # analytics_config: - # config_file_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-nvdsanalytics-test/config_nvdsanalytics.txt - # gpu_id: 0 - # msgbroker_config: - # msgbroker_proto_lib_path: /opt/nvidia/deepstream/deepstream/lib/libnvds_kafka_proto.so - # msgbroker_conn_str: localhost;9092 - # msgbroker_topic: ds_app - # msgconv_config_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5/configs/dstest5_msgconv_sample_config.txt - render_config: - enable_display: "$ENABLE_DISPLAY|true" - enable_osd: true - # enable_stream: true - # rtsp_mount_point: /ds_app - # rtsp_port: 8554 - perf_config: - enable_fps_logs: true - enable_latency_logs: true - # kitti_output_path: - # infer: /workspace/models/resnet/infer-kitti-dump/ - # tracker: /workspace/models/resnet/tracker-kitti-dump/ - inference_timeout: "$INFERENCE_TIMEOUT|5" diff --git a/tools/inference_builder/builder/samples/ds_app/detection/mask2former/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/detection/mask2former/nvdsinfer_config.yaml deleted file mode 100644 index ec9a1dc3..00000000 --- a/tools/inference_builder/builder/samples/ds_app/detection/mask2former/nvdsinfer_config.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - gpu-id: 0 - net-scale-factor: 0.017507 - offsets: 123.675;116.280;103.53 - model-color-format: 0 - onnx-file: mask2former_swint.onnx - network-type: 3 ## 3 is for instance segmentation network - infer-dims: 3;800;800 - num-detected-classes: 2 - batch-size: 1 - ## 0=FP32, 1=INT8, 2=FP16 mode - network-mode: 2 - interval: 0 - gie-unique-id: 1 - #no cluster - ## 0=Group Rectangles, 1=DBSCAN, 2=NMS, 3= DBSCAN+NMS Hybrid, 4 = None(No clustering) - ## MRCNN supports only cluster-mode=4; Clustering is done by the model itself - cluster-mode: 4 - output-instance-mask: 1 - input-object-min-width: 32 - input-object-min-height: 32 - output-blob-names: pred_masks;pred_scores;pred_classes - parse-bbox-instance-mask-func-name: NvDsInferParseCustomMask2Former - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so - scaling-compute-hw: 1 - layer-device-precision: /post_processor/Div:fp32:gpu;/post_processor/ReduceSum:fp32:gpu;/post_processor/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Cast_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Where:fp32:gpu;sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.0/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.1/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Cast_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.2/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.3/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Cast_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.4/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Cast_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.5/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.6/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.7/norm/LayerNormalization:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Add_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Add_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/Add:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Add_2:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Div:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Mul_6:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Mul_9:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Cast:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Cast_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Div_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul_3:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Mul_7:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Where:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Mul_8:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Add_5:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Softmax:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/MatMul_4:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/multihead_attn/Gemm:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/Add_1:fp32:gpu;/sem_seg_head/predictor/transformer_cross_attention_layers.8/norm/LayerNormalization:fp32:gpu - -class-attrs-all: - pre-cluster-threshold: 0.6 - - - - diff --git a/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/labels.txt b/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/labels.txt deleted file mode 100644 index 4b02dbbc..00000000 --- a/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/labels.txt +++ /dev/null @@ -1,4 +0,0 @@ -BG -Person -Face -Bag diff --git a/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml deleted file mode 100644 index 3f7ffc8c..00000000 --- a/tools/inference_builder/builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Reference configuration for PeopleNetTransformer v2 - -class-attrs-all: - pre-cluster-threshold: 0.3 - topk: 20 - -property: - gpu-id: 0 - offsets: "123.675;116.28;103.53" - net-scale-factor: 0.0173520735728 - labelfile-path: labels.txt - onnx-file: resnet50_peoplenet_transformer_op17.onnx - - # 0=FP32, 1=INT8, 2=FP16 mode - network-mode: 2 - network-type: 0 # detection - num-detected-classes: 4 # BG, Person, Face, Bag - gie-unique-id: 1 - output-blob-names: pred_boxes;pred_logits - infer-dims: 3;544;960 - cluster-mode: 4 - parse-bbox-func-name: NvDsInferParseCustomDDETRTAO - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so diff --git a/tools/inference_builder/builder/samples/ds_app/detection/resnet/labels.txt b/tools/inference_builder/builder/samples/ds_app/detection/resnet/labels.txt deleted file mode 100644 index 0181d7d4..00000000 --- a/tools/inference_builder/builder/samples/ds_app/detection/resnet/labels.txt +++ /dev/null @@ -1,4 +0,0 @@ -car -bicycle -person -road_sign \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/detection/resnet/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/detection/resnet/nvdsinfer_config.yaml deleted file mode 100644 index 9f44632a..00000000 --- a/tools/inference_builder/builder/samples/ds_app/detection/resnet/nvdsinfer_config.yaml +++ /dev/null @@ -1,37 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - gpu-id: 0 - net-scale-factor: 0.00392156862745098 - onnx-file: resnet18_trafficcamnet_pruned.onnx - model-engine-file: resnet18_trafficcamnet_pruned.onnx_b4_gpu0_fp32.engine - labelfile-path: labels.txt - process-mode: 1 - model-color-format: 0 - network-mode: 0 - num-detected-classes: 4 - interval: 0 - gie-unique-id: 1 - cluster-mode: 2 - infer-dims: 3;544;960 -class-attrs-all: - topk: 20 - nms-iou-threshold: 0.5 - pre-cluster-threshold: 0.2 -class-attrs-0: - topk: 20 - nms-iou-threshold: 0.5 - pre-cluster-threshold: 0.4 \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/labels.txt b/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/labels.txt deleted file mode 100644 index 92284f3d..00000000 --- a/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/labels.txt +++ /dev/null @@ -1,5 +0,0 @@ -background -bicycle -car -person -road_sign diff --git a/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/nvdsinfer_config.yaml deleted file mode 100644 index 18da65ac..00000000 --- a/tools/inference_builder/builder/samples/ds_app/detection/rtdetr/nvdsinfer_config.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class-attrs-all: - pre-cluster-threshold: 0.5 -property: - cluster-mode: 4 - gie-unique-id: 1 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so - data-format: channels_first - infer-dims: 3;544;960 - maintain-aspect-ratio: 1 - model-color-format: 0 - symmetric-padding: 1 - # std: 1 - net-scale-factor: 0.00392156863 - network-mode: 2 - network-type: 0 - num-detected-classes: 5 - onnx-file: resnet50_trafficamnet_rtdetr.onnx - model-engine-file: resnet50_trafficamnet_rtdetr.onnx_b4_gpu0_fp16.engine - parse-bbox-func-name: NvDsInferParseCustomDDETRTAO - workspace-size: 1048576 - labelfile-path: labels.txt diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/README.md b/tools/inference_builder/builder/samples/ds_app/gdino/README.md deleted file mode 100644 index 25aa72b4..00000000 --- a/tools/inference_builder/builder/samples/ds_app/gdino/README.md +++ /dev/null @@ -1,184 +0,0 @@ -## Introduction - -This sample demonstrates how to build a deepstream application with Inference Builder using grounding dino models: -1. gdino: grounding_dino_swin_tiny_commercial_deployable_v1.0 from https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/grounding_dino -2. mask_gdino: mask_grounding_dino_swin_tiny_commercial_deployable_v1.0 from https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/mask_grounding_dino - -**Note:** For both gdino and mask_gdino models, the steps are the same as described below. Users just need to replace the model name from "gdino" to "mask_gdino" in the commands and directory names. - -## Prerequisites - -**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. - -Model files are loaded from '/workspace/models/{MODEL_NAME}' within the container, thus the volume must be correctly mapped from the host. -You need to export MODEL_REPO environment variable to the path where you want to store the model files. - -```bash -mkdir ~/.cache/model-repo/ -sudo chmod -R 777 ~/.cache/model-repo/ -export MODEL_REPO=~/.cache/model-repo -``` - -You need first download the model files from the NGC catalog and put them in the $MODEL_REPO/{model-name}/ directory, then copy the other required configurations to the same directory: - -**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided [here](../README.md#models-used-in-the-samples) - -### for gdino sample - -Please use `gdino` as the directory: - -```bash -ngc registry model download-version "nvidia/tao/grounding_dino:grounding_dino_swin_tiny_commercial_deployable_v1.0" -# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default -mv grounding_dino_vgrounding_dino_swin_tiny_commercial_deployable_v1.0 $MODEL_REPO/gdino -chmod 777 $MODEL_REPO/gdino -cp -r builder/samples/ds_app/gdino/gdino/* $MODEL_REPO/gdino/ -``` - -### for mask_gdino sample - -Please use `mask_gdino` as the directory: - -```bash -ngc registry model download-version "nvidia/tao/mask_grounding_dino:mask_grounding_dino_swin_tiny_commercial_deployable_v1.0" -# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default -mv mask_grounding_dino_vmask_grounding_dino_swin_tiny_commercial_deployable_v1.0 $MODEL_REPO/mask_gdino -chmod 777 $MODEL_REPO/mask_gdino -cp -r builder/samples/ds_app/gdino/mask_gdino/* $MODEL_REPO/mask_gdino/ -``` - -## Generate the deepstream application package and build it into a container image: - -Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment and be sure you're in the inference_builder folder, then activate your virtual environment: - -```bash -source .venv/bin/activate -``` - -### For x86 Architecture - -```bash -python builder/main.py builder/samples/ds_app/gdino/ds_gdino.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -c builder/samples/tao/processors.py \ - -t \ -&& docker build -t deepstream-app builder/samples/ds_app -``` - -### For Tegra Architecture - -```bash -python builder/main.py builder/samples/ds_app/gdino/ds_gdino.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -c builder/samples/tao/processors.py \ - -t \ -&& docker build \ - -t deepstream-app \ - -f builder/samples/ds_app/Dockerfile.tegra \ - builder/samples/ds_app -``` - -#### For Dgx Spark - -```bash -python builder/main.py builder/samples/ds_app/gdino/ds_gdino.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -c builder/samples/tao/processors.py \ - -t \ -&& docker build \ - -t deepstream-app \ - -f builder/samples/ds_app/Dockerfile.dgxspark \ - builder/samples/ds_app -``` - -## Run the deepstream app with different inputs: - -**Note:** The TensorRT engine is generated during the first time run and it takes several minutes. - -**Note:** You can optionally set the `$SAMPLE_INPUT` environment variable to point to your input media directory if you want to perform inference on media files stored on your host machine. - -**Note:** To save the inference results, append the `-s result.json` option to your `docker run` command. - -```bash -# Update this with your actual samples directory path -export SAMPLE_INPUT=/path/to/your/samples/directory -``` - -**Note:** When you set `enable_display: true` under the `render_config` section of -[ds_gdino.yaml](ds_gdino.yaml), you need to have a display on your host and run both commands in this order to give the container access to it. For more information about render configuration options, see the [render configuration section](../README.md#render-configuration). - - -First, set the display environment variable: -```bash -export DISPLAY=:0 # or :1 depending on your system -``` - -Then, allow X server connections from any host: -```bash -xhost + -``` - -If the configuration is successful, you will see this message in the log: `access control disabled, clients can connect from any host`. - -### Run with video input - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). -# text: the text prompt for object detection (e.g., "car,person"). -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 \ - --mime video/mp4 \ - --text "car,person" -``` - -### Run with RTSP input - -**Note:** Replace `rtsp://` (which is just a placeholder) with your actual RTSP stream URL. The application supports various RTSP stream formats including H.264, H.265, and MJPEG. - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). -# text: the text prompt for object detection (e.g., "car,person"). - -# Note: Replace rtsp:// with your actual RTSP stream URL - -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url rtsp:// \ - --mime video/mp4 \ - --text "car,person" -``` - -### Run with image input - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). -# text: the text prompt for object detection (e.g., "car,person"). - -# Note: /sample_input/test.jpg is just a placeholder for any image present in $SAMPLE_INPUT directory - -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $SAMPLE_INPUT:/sample_input \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - -e DISPLAY=$DISPLAY \ - deepstream-app \ - --media-url /sample_input/test.jpg \ - --mime image/jpeg \ - --text "car,person" -``` \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/ds_gdino.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/ds_gdino.yaml deleted file mode 100644 index 7862abcf..00000000 --- a/tools/inference_builder/builder/samples/ds_app/gdino/ds_gdino.yaml +++ /dev/null @@ -1,104 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: "deepstream-app" -model_repo: /workspace/models - -input: -- name: media_url - data_type: TYPE_CUSTOM_LIST - dims: [ -1 ] -- name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] -- name: text - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - -models: -- name: gdino - backend: deepstream/nvinfer - max_batch_size: "$MAX_BATCH_SIZE|1" - input: - - name: images - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [ -1 ] - optional: true - - name: media_url - data_type: TYPE_CUSTOM_DS_MEDIA_URL - dims: [ -1 ] - - name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - - name: input_ids - data_type: TYPE_INT64 - dims: [ 256 ] - - name: attention_mask - data_type: TYPE_BOOL - dims: [ 256 ] - - name: position_ids - data_type: TYPE_INT64 - dims: [ 256 ] - - name: token_type_ids - data_type: TYPE_INT64 - dims: [ 256 ] - - name: text_token_mask - data_type: TYPE_BOOL - dims: [ 256, 256 ] - output: - - name: pred_logits - data_type: TYPE_FP32 - dims: [ -1, -1 ] - - name: pred_boxes - data_type: TYPE_FP32 - dims: [ -1, 4 ] - - name: pred_masks - data_type: TYPE_FP32 - dims: [ -1, -1, -1, -1 ] - - name: decoded_frames - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [ -1, -1, 3 ] - parameters: - # timeout in nanoseconds for batching multiple inputs - batch_timeout: -1 - infer_config_path: - - nvdsinfer_config.yaml - preprocess_config_path: - - nvdspreprocess_config.yaml - inference_timeout: "$INFERENCE_TIMEOUT|5" - preprocessors: - - kind: "custom" - name: "gdino-tokenizer" - input: ["text"] - output: ["input_ids", "attention_mask", "position_ids", "token_type_ids", "text_token_mask", "pos_map"] - postprocessors: - - kind: "custom" - name: "gdino-postprocessor" - input: ["pred_logits", "pred_boxes", "pred_masks", "pos_map"] - output: ["output"] - config: - infer_config_path: /workspace/models/gdino/nvdsinfer_config.yaml - - kind: "custom" - name: "bbox-overlay-visualizer" - input: ["output", "decoded_frames"] - output: ["output"] - config: - output_dir: /tmp/bbox_overlay - diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdsinfer_config.yaml deleted file mode 100644 index 0212835b..00000000 --- a/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdsinfer_config.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class-attrs-all: - topk: 20 - pre-cluster-threshold: 0.2 -property: - gie-unique-id: 1 - # std: 0.5 - net-scale-factor: 0.0078431372549 - onnx-file: grounding_dino_swin_tiny_commercial_deployable.onnx - model-engine-file: grounding_dino_swin_tiny_commercial_deployable.onnx_b1_gpu0_fp16.engine - network-mode: 2 - network-type: 100 # detection - offsets: 127.5;127.5;127.5 - output-tensor-meta: 1 - input-tensor-from-meta: 1 - infer-dims: 3;544;960 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so - diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdspreprocess_config.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdspreprocess_config.yaml deleted file mode 100644 index d185608f..00000000 --- a/tools/inference_builder/builder/samples/ds_app/gdino/gdino/nvdspreprocess_config.yaml +++ /dev/null @@ -1,44 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - tensor-name: inputs - processing-width: 960 - processing-height: 544 - network-input-shape: 1;3;544;960 - network-color-format: 0 - network-input-order: 0 - tensor-data-type: 0 - maintain-aspect-ratio: 1 - symmetric-padding: 1 - scaling-pool-memory-type: 0 - scaling-pool-compute-hw: 0 - scaling-filter: 0 - scaling-buf-pool-size: 6 - tensor-buf-pool-size: 6 - target-unique-ids: 1 - process-on-frame: 1 - unique-id: 5 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so - custom-tensor-preparation-function: CustomTensorPreparation - enable: 1 -user-configs: - pixel-normalization-factor: 0.007843137 - offsets: 127.5;127.5;127.5 -group: - - src-ids: -1 - custom-input-transformation-function: CustomAsyncTransformation - process-on-roi: 0 - diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdsinfer_config.yaml deleted file mode 100644 index 4577bf84..00000000 --- a/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdsinfer_config.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class-attrs-all: - topk: 20 - pre-cluster-threshold: 0.2 -property: - gie-unique-id: 1 - # std: 0.5 - net-scale-factor: 0.0078431372549 - onnx-file: model_epoch_049.onnx - model-engine-file: model_epoch_049.onnx_b1_gpu0_fp16.engine - network-mode: 2 - network-type: 100 # detection - offsets: 127.5;127.5;127.5 - output-tensor-meta: 1 - input-tensor-from-meta: 1 - infer-dims: 3;544;960 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so - diff --git a/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdspreprocess_config.yaml b/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdspreprocess_config.yaml deleted file mode 100644 index 1ba6d07c..00000000 --- a/tools/inference_builder/builder/samples/ds_app/gdino/mask_gdino/nvdspreprocess_config.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -property: - tensor-name: inputs - processing-width: 960 - processing-height: 544 - network-input-shape: 1;3;544;960 - network-color-format: 0 - network-input-order: 0 - tensor-data-type: 0 - maintain-aspect-ratio: 1 - symmetric-padding: 1 - scaling-pool-memory-type: 0 - scaling-pool-compute-hw: 0 - scaling-filter: 0 - scaling-buf-pool-size: 6 - tensor-buf-pool-size: 6 - target-unique-ids: 1 - process-on-frame: 1 - unique-id: 5 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so - custom-tensor-preparation-function: CustomTensorPreparation - enable: 1 -user-configs: - pixel-normalization-factor: 0.007843137 - offsets: 127.5;127.5;127.5 -group: - - src-ids: -1 - custom-input-transformation-function: CustomAsyncTransformation - process-on-roi: 0 - diff --git a/tools/inference_builder/builder/samples/ds_app/segmentation/README.md b/tools/inference_builder/builder/samples/ds_app/segmentation/README.md deleted file mode 100644 index 96f4afd4..00000000 --- a/tools/inference_builder/builder/samples/ds_app/segmentation/README.md +++ /dev/null @@ -1,154 +0,0 @@ -## Introduction - -This sample demonstrates how to build a deepstream application with Inference Builder using segmentation models: -1. citysemsegformer: deployable_onnx_v1.0 from https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/citysemsegformer - -## Prerequisites - -**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. - -Model files are loaded from '/workspace/models/{MODEL_NAME}' within the container, thus the volume must be correctly mapped from the host. -You need to export MODEL_REPO environment variable to the path where you want to store the model files. - -```bash -mkdir ~/.cache/model-repo/ -sudo chmod -R 777 ~/.cache/model-repo/ -export MODEL_REPO=~/.cache/model-repo -``` - -You need first download the model files from the NGC catalog and put them in the $MODEL_REPO/{model-name}/ directory, then copy the other required configurations to the same directory: - -**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided [here](../README.md#models-used-in-the-samples) - -```bash -ngc registry model download-version "nvidia/tao/citysemsegformer:deployable_onnx_v1.0" -# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default -mv citysemsegformer_vdeployable_onnx_v1.0 $MODEL_REPO/citysemsegformer -chmod 777 $MODEL_REPO/citysemsegformer -cp -r builder/samples/ds_app/segmentation/citysemsegformer/* $MODEL_REPO/citysemsegformer/ -``` - -## Generate the deepstream application package and build it into a container image: - -Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment and be sure you're in the inference_builder folder, then activate your virtual environment: - -```bash -source .venv/bin/activate -``` - -### For x86 Architecture - -```bash -python builder/main.py builder/samples/ds_app/segmentation/ds_segformer.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build -t deepstream-app builder/samples/ds_app -``` - -### For Tegra Architecture - -```bash -python builder/main.py builder/samples/ds_app/segmentation/ds_segformer.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build \ - -t deepstream-app \ - -f builder/samples/ds_app/Dockerfile.tegra \ - builder/samples/ds_app -``` - -#### For Dgx Spark - -```bash -python builder/main.py builder/samples/ds_app/segmentation/ds_segformer.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build \ - -t deepstream-app \ - -f builder/samples/ds_app/Dockerfile.dgxspark \ - builder/samples/ds_app -``` - -## Run the deepstream app with different inputs: - -**Note:** The TensorRT engine is generated during the first time run and it takes several minutes. - -**Note:** You can optionally set the `$SAMPLE_INPUT` environment variable to point to your input media directory if you want to perform inference on media files stored on your host machine. - -***Note:** To save the inference results, append the `-s result.json` option to your `docker run` command. - -```bash -# Update this with your actual samples directory path -export SAMPLE_INPUT=/path/to/your/samples/directory -``` - -**Note:** When you set `enable_display: true` under the `render_config` section of [ds_segformer.yaml](ds_segformer.yaml), you need to have a display on your host and run both commands in this order to give the container access to it. For more information about render configuration options, see the [render configuration section](../README.md#render-configuration). - -First, set the display environment variable: -```bash -export DISPLAY=:0 # or :1 depending on your system -``` - -Then, allow X server connections from any host: -```bash -xhost + -``` - -If the configuration is successful, you will see this message in the log: `access control disabled, clients can connect from any host`. - -### Run with video input - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url /opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 \ - --mime video/mp4 -``` - -### Run with RTSP input - -**Note:** Replace `rtsp://` (which is just a placeholder) with your actual RTSP stream URL. The application supports various RTSP stream formats including H.264, H.265, and MJPEG. - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). - -# Note: Replace rtsp:// with your actual RTSP stream URL - -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url rtsp:// \ - --mime video/mp4 -``` - -### Run with image input - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). - -# Note /sample_input/test_1.jpg is just a placeholder for any image present in $SAMPLE_INPUT directory - -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $SAMPLE_INPUT:/sample_input \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url /sample_input/test_1.jpg \ - --mime image/jpeg -``` \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/labels.txt b/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/labels.txt deleted file mode 100644 index ff3edb4a..00000000 --- a/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/labels.txt +++ /dev/null @@ -1,20 +0,0 @@ -road -sidewalk -building -wall -fence -pole -traffic light -traffic sign -vegetation -terrain -sky -person -rider -car -truck -bus -train -motorcycle -bicycle - diff --git a/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/nvdsinfer_config.yaml deleted file mode 100644 index 03fc5065..00000000 --- a/tools/inference_builder/builder/samples/ds_app/segmentation/citysemsegformer/nvdsinfer_config.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - gie-unique-id: 6 - infer-dims: 3;1024;1820 - network-input-order: 0 - model-color-format: 1 - maintain-aspect-ratio: 1 - # std 0.226 - net-scale-factor: 0.01735207357279195 - network-mode: 2 - model-color-format: 1 - offsets: 123.675;116.28;103.53 - network-type: 2 # seg - num-detected-classes: 19 - onnx-file: citysemsegformer.onnx - model-engine-file: ./citysemsegformer.onnx_b1_gpu0_fp16.engine - workspace-size: 1048576 - parse-segmentation-func-name: NvDsInferParseCustomSegformerTAO - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so - labelfile-path: labels.txt - diff --git a/tools/inference_builder/builder/samples/ds_app/segmentation/ds_segformer.yaml b/tools/inference_builder/builder/samples/ds_app/segmentation/ds_segformer.yaml deleted file mode 100644 index e5187f52..00000000 --- a/tools/inference_builder/builder/samples/ds_app/segmentation/ds_segformer.yaml +++ /dev/null @@ -1,66 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: "deepstream-app" -model_repo: "/workspace/models" - -input: -- name: media_url - data_type: TYPE_CUSTOM_LIST - dims: [ -1 ] -- name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - -output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - -models: -- name: citysemsegformer - backend: deepstream/nvinfer - max_batch_size: "$MAX_BATCH_SIZE|2" - input: - - name: images - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [ -1 ] - optional: true - - name: media_url - data_type: TYPE_CUSTOM_DS_MEDIA_URL - dims: [ -1 ] - - name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - parameters: - # timeout in microseconds for batching multiple inputs - batch_timeout: 33333 - infer_config_path: - - nvdsinfer_config.yaml - render_config: - enable_display: "$ENABLE_DISPLAY|true" - # enable segmentation mask visualization - seg_mask_visualization: - width: 1820 - height: 1024 - # enable_osd: true - # enable_stream: true - # rtsp_mount_point: /ds_app - # rtsp_port: 8554 - inference_timeout: "$INFERENCE_TIMEOUT|5" \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/test_config.json b/tools/inference_builder/builder/samples/ds_app/test_config.json deleted file mode 100644 index 33ff2d6b..00000000 --- a/tools/inference_builder/builder/samples/ds_app/test_config.json +++ /dev/null @@ -1,241 +0,0 @@ -[ - { - "name": "gdino_video_inference", - "description": "Test gdino inference application with video input", - "build_args": { - "TEST_APP_NAME": "deepstream-app", - "CACHE_BUSTER": "gdino_video_test", - "APP_YAML_PATH": "./gdino/ds_gdino.yaml", - "OUTPUT_DIR": ".", - "PROCESSORS_PATH": "../tao/processors.py", - "SERVER_TYPE": "serverless" - }, - "test_config": { - "default_enable": true, - "timeout": 600, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", - "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics" - }, - "volumes": { - "/tmp/model-repo/gdino": "/workspace/models/gdino" - }, - "cmd": [ - "--media-url", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4", - "--mime", - "video/mp4", - "--text", - "car,person" - ], - "prerequisite_script": null, - "models": { - "gdino": { - "source": "NGC", - "target": "/tmp/model-repo", - "path": "nvidia/tao/grounding_dino", - "version": "grounding_dino_swin_tiny_commercial_deployable_v1.0", - "configs": "./gdino/gdino" - } - } - } - }, - { - "name": "gdino_image_inference", - "description": "Test gdino inference application with image input", - "build_args": { - "TEST_APP_NAME": "deepstream-app", - "CACHE_BUSTER": "gdino_image_test", - "APP_YAML_PATH": "./gdino/ds_gdino.yaml", - "OUTPUT_DIR": ".", - "PROCESSORS_PATH": "../tao/processors.py", - "SERVER_TYPE": "serverless" - }, - "test_config": { - "default_enable": true, - "timeout": 600, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", - "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics" - }, - "volumes": { - "/tmp/model-repo/gdino": "/workspace/models/gdino" - }, - "cmd": [ - "--media-url", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg", - "--mime", - "image/jpeg", - "--text", - "car,person" - ], - "prerequisite_script": null, - "models": { - "gdino": { - "source": "NGC", - "target": "/tmp/model-repo", - "path": "nvidia/tao/grounding_dino", - "version": "grounding_dino_swin_tiny_commercial_deployable_v1.0", - "configs": "./gdino/gdino" - } - } - } - }, - { - "name": "changenet_classification_inference", - "description": "Test Visual ChangeNet classification application with image input", - "build_args": { - "TEST_APP_NAME": "deepstream-app", - "CACHE_BUSTER": "changenet_classify_test", - "APP_YAML_PATH": "./classification/ds_changenet.yaml", - "OUTPUT_DIR": ".", - "PROCESSORS_PATH": "../tao/processors.py", - "SERVER_TYPE": "serverless" - }, - "test_config": { - "default_enable": true, - "timeout": 300, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", - "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics" - }, - "volumes": { - "/tmp/model-repo/changenet-classify": "/workspace/models/changenet-classify" - }, - "cmd": [ - "--media-url", - "/workspace/test_data/pass_0.png", - "/workspace/test_data/pass_1.png", - "--mime", - "image/png", - "image/png" - ], - "prerequisite_script": null, - "models": { - "changenet-classify": { - "source": "NGC", - "target": "/tmp/model-repo", - "path": "nvidia/tao/visual_changenet_classification", - "version": "visual_changenet_nvpcb_deployable_v1.0", - "configs": "./classification/changenet-classify" - } - } - } - }, - { - "name": "rtdetr_detection_inference", - "description": "Test RT-DETR detection application with video input", - "build_args": { - "TEST_APP_NAME": "deepstream-app", - "CACHE_BUSTER": "rtdetr_detection_test", - "APP_YAML_PATH": "./detection/ds_detect.yaml", - "OUTPUT_DIR": ".", - "SERVER_TYPE": "serverless" - }, - "test_config": { - "default_enable": true, - "timeout": 600, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", - "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", - "ENABLE_DISPLAY": "false" - }, - "volumes": { - "/tmp/model-repo/rtdetr": "/workspace/models/rtdetr" - }, - "cmd": [ - "--media-url", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4", - "--mime", - "video/mp4" - ], - "prerequisite_script": null, - "models": { - "rtdetr": { - "source": "NGC", - "target": "/tmp/model-repo", - "path": "nvidia/tao/trafficcamnet_transformer_lite", - "version": "deployable_v1.0", - "configs": "./detection/rtdetr" - } - } - } - }, - { - "name": "rtdetr_detection_inference_source_file", - "description": "Test RT-DETR detection application with video input", - "build_args": { - "TEST_APP_NAME": "deepstream-app", - "CACHE_BUSTER": "rtdetr_detection_test", - "APP_YAML_PATH": "./detection/ds_detect.yaml", - "OUTPUT_DIR": ".", - "SERVER_TYPE": "serverless" - }, - "test_config": { - "default_enable": true, - "timeout": 600, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", - "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", - "ENABLE_DISPLAY": "false" - }, - "volumes": { - "/tmp/model-repo/rtdetr": "/workspace/models/rtdetr" - }, - "cmd": [ - "--source-config", - "/workspace/test_data/source_config.yaml" - ], - "prerequisite_script": null, - "models": { - "rtdetr": { - "source": "NGC", - "target": "/tmp/model-repo", - "path": "nvidia/tao/trafficcamnet_transformer_lite", - "version": "deployable_v1.0", - "configs": "./detection/rtdetr" - } - } - } - }, - { - "name": "citysemsegformer_segmentation_inference", - "description": "Test CitySemsegFormer semantic segmentation application with image input", - "build_args": { - "TEST_APP_NAME": "deepstream-app", - "CACHE_BUSTER": "citysemsegformer_segmentation_test", - "APP_YAML_PATH": "./segmentation/ds_segformer.yaml", - "OUTPUT_DIR": ".", - "SERVER_TYPE": "serverless" - }, - "test_config": { - "default_enable": true, - "timeout": 1000, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", - "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", - "ENABLE_DISPLAY": "false" - }, - "volumes": { - "/tmp/model-repo/citysemsegformer": "/workspace/models/citysemsegformer" - }, - "cmd": [ - "--media-url", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg", - "--mime", - "image/jpeg" - ], - "prerequisite_script": null, - "models": { - "citysemsegformer": { - "source": "NGC", - "target": "/tmp/model-repo", - "path": "nvidia/tao/citysemsegformer", - "version": "deployable_onnx_v1.0", - "configs": "./segmentation/citysemsegformer" - } - } - } - } -] - diff --git a/tools/inference_builder/builder/samples/ds_app/test_data/pass_0.png b/tools/inference_builder/builder/samples/ds_app/test_data/pass_0.png deleted file mode 100644 index fbf0437d19cca1f491438b84eb7d4a2622534084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93529 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 z 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 DMNU^R diff --git a/tools/inference_builder/builder/samples/ds_app/test_data/source_config.yaml b/tools/inference_builder/builder/samples/ds_app/test_data/source_config.yaml deleted file mode 100644 index 5f3dc6fd..00000000 --- a/tools/inference_builder/builder/samples/ds_app/test_data/source_config.yaml +++ /dev/null @@ -1,23 +0,0 @@ -#################################################################################################### -# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: LicenseRef-NvidiaProprietary -# -# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual -# property and proprietary rights in and to this material, related -# documentation and any modifications thereto. Any use, reproduction, -# disclosure or distribution of this material and related documentation -# without an express license agreement from NVIDIA CORPORATION or -# its affiliates is strictly prohibited. -#################################################################################################### - -source-list: -- uri: "file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4" - sensor-id: UniqueSensorId1 - sensor-name: UniqueSensorName1 -- uri: "file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4" - sensor-id: UniqueSensorId2 - sensor-name: UniqueSensorName2 -source-config: - source-bin: "nvurisrcbin" - properties: - file-loop: false diff --git a/tools/inference_builder/builder/samples/dummy/Dockerfile b/tools/inference_builder/builder/samples/dummy/Dockerfile deleted file mode 100644 index 836a725e..00000000 --- a/tools/inference_builder/builder/samples/dummy/Dockerfile +++ /dev/null @@ -1,75 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - - -FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS inference_base - -RUN --mount=type=cache,target=/root/.cache/pip \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ - apt-get update && apt-get install -y --no-install-recommends curl ca-certificates libyaml-cpp-dev pkg-config cmake - - #TODO: remove curl? - #&& apt-get purge -y --auto-remove curl - -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install \ - python-multipart==0.0.9 \ - aiofiles==23.2.1 \ - aiohttp==3.11.0 \ - annotated-types==0.7.0 \ - python-magic==0.4.27 \ - torch==2.4.0 \ - numpy==1.26.4 \ - omegaconf==2.3.0 \ - fastapi==0.115.12 \ - uvicorn==0.29.0 - -# Patch JPEG Decoder -RUN if [ -e "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnvcodec.so" ]; then \ - mv /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnvcodec.so /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnvcodec.so_bkp; \ - else \ - echo "File 'libgstnvcodec.so' does not exist"; \ - fi -RUN rm -rf /root/.cache/gstreamer-1.0/ -RUN mkdir /tmp/assets && chmod -R 777 /tmp/assets - -WORKDIR /workspace -ADD dummy.tgz /workspace - -RUN groupadd --gid 1000 --non-unique nvs && \ - useradd --create-home --shell /usr/sbin/nologin --uid 1000 --non-unique --gid 1000 nvs && \ - chown -R 1000.1000 /workspace && chmod o+w /workspace - -USER nvs:1000 - -## Set Environment variables -ENV LD_LIBRARY_PATH /opt/tritonserver/lib:$LD_LIBRARY_PATH -ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes - -RUN touch /workspace/start_server.sh && \ - chmod a+rx /workspace/start_server.sh && \ - cat > /workspace/start_server.sh <<-EOF - #!/usr/bin/env bash - set -eu - # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. - # SPDX-License-Identifier: LicenseRef-NvidiaProprietary - python3 /workspace/__main__.py -# while true; do sleep 5; done -EOF - -ENTRYPOINT ["/workspace/start_server.sh"] -CMD [] diff --git a/tools/inference_builder/builder/samples/dummy/README.md b/tools/inference_builder/builder/samples/dummy/README.md deleted file mode 100644 index 8bc11a15..00000000 --- a/tools/inference_builder/builder/samples/dummy/README.md +++ /dev/null @@ -1,25 +0,0 @@ -This sample demonstrates how to build a inference pipeline with a dummy backend. The experiment is mainly for testing the basic flow. - -The sample configuration supports multiple input types including image data, image assets and video assets in one endpoint - -**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. - -Build the dummy inference flow: - -```bash -python builder/main.py builder/samples/dummy/dummy.yaml -a builder/samples/dummy/openapi.yaml -c builder/samples/dummy/processors.py -o builder/samples/dummy --server-type fastapi -t -``` -Run the dummy inference flow: - -```bash -cd builder/samples -docker compose up --build dry-run -``` -Test the dummy inference flow: - -Go to http://localhost:8800/docs to see the swagger ui. - - - - - diff --git a/tools/inference_builder/builder/samples/dummy/dummy.yaml b/tools/inference_builder/builder/samples/dummy/dummy.yaml deleted file mode 100644 index 54f6f1b1..00000000 --- a/tools/inference_builder/builder/samples/dummy/dummy.yaml +++ /dev/null @@ -1,233 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# the name will be used to identify the microservice. -name: dummy -# the root path to the directory containing the model files. -model_repo: /workspace/.cache/model-repo/ - -# top level inference input specification -input: - # a text input typically for LLM prompts - - name: "text" - data_type: TYPE_STRING - dims: [ -1 ] - optional: true - # base64 encoded image inputs typically for computer vision tasks - - name: "images" - data_type: TYPE_CUSTOM_IMAGE_BASE64 - dims: [ -1 ] - optional: true - # a list of asset ids for image files - - name: "image_assets" - data_type: TYPE_CUSTOM_IMAGE_ASSETS - dims: [ -1 ] - optional: true - # a list of asset ids for video files - - name: "video_assets" - data_type: TYPE_CUSTOM_LONG_VIDEO_ASSETS - dims: [ -1 ] - optional: true - -# top level inference output specification -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ -1, -1, -1 ] - -server: - responders: - infer: - operation: inference - requests: - InferenceRequest: > - { - {% set input_items = request.input %} - {% if input_items|length > 0 %} - {% if input_items[0] is string %} - "images": [ - {% for item in input_items %} - {{ item|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ] - {% if request.text is not none %} - , - "text": [ - {% for item in request.text %} - {{ item|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ] - {% endif %} - {% elif input_items[0] is mapping %} - {% if input_items[0].contentType.startswith("image/") %} - "image_assets": [ - {% for item in input_items %} - {{ item.id|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ] - {% if request.text is not none %} - , - "text": [ - {% for item in request.text %} - {{ item|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ] - {% endif %} - {% elif input_items[0].contentType.startswith("video/") %} - "video_assets": [ - {% for item in input_items %} - {{ item.id|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ] - {% if request.text is not none %} - , - "text": [ - {% for item in request.text %} - {{ item|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ] - {% endif %} - {% endif %} - {% endif %} - {% endif %} - } - responses: - InferenceResponse: > - { - "data": [ - {% for item in response.output %} { - "index": {{loop.index0}}, - "output": {{item | tojson}} - } {% if not loop.last %}, {% endif %} {% endfor %} ], - "usage": { "num_images": 1}, - "model": "nvidia/nvdinov2" - } - add_file: - operation: add_media_file - responses: - AddFileResponse: > - { - "data": { - "id": {{response.id|tojson}}, - "path": {{response.path|tojson}}, - "size": {{response.size|tojson}}, - "duration": {{response.duration|tojson}}, - "contentType": {{response.mime_type|tojson}} - } - } - add_live_stream: - operation: add_live_stream - requests: - AddLiveStreamRequest: > - { - "url": {{request.url|tojson}}, - "description": {{request.description|tojson}}, - "username": {{request.username|tojson}}, - "password": {{request.password|tojson}} - } - responses: - AddLiveStreamResponse: > - { - "data": { - "id": {{response.id|tojson}}, - "path": {{response.path|tojson}}, - "size": {{response.size|tojson}}, - "contentType": {{response.mime_type|tojson}}, - "description": {{response.description|tojson}} - } - } - del_file: - operation: delete_media_file - responses: - DeleteAssetResponse: > - { - "deleted": {{response.status|tojson}} - } - del_live_stream: - operation: delete_live_stream - responses: - DeleteAssetResponse: > - { - "deleted": {{response.status|tojson}} - } - list_files: - operation: list_media_files - responses: - ListFilesResponse: > - { - "data": [ - {% for item in response.assets %} { - "id": {{item.id|tojson}}, - "path": {{item.path|tojson}}, - "size": {{item.size|tojson}}, - "contentType": {{item.mime_type|tojson}} - } {% if not loop.last %}, {% endif %} {% endfor %} - ] - } - list_live_streams: - operation: list_live_streams - responses: - ListLiveStreamsResponse: > - { - "data": [ - {% for item in response.assets %} { - "id": {{item.id|tojson}}, - "path": {{item.path|tojson}}, - "size": {{item.size|tojson}}, - "contentType": {{item.mime_type|tojson}} - } {% if not loop.last %}, {% endif %} {% endfor %} - ] - } - healthy_ready: - operation: health_ready_v1_health_ready_get - -models: - - name: dummy - backend: "dummy" - max_batch_size: 1 - parameters: {} - input: - - name: images - data_type: TYPE_FP32 - dims: [3, 768, 768] - - name: input_ids - data_type: TYPE_INT32 - dims: [ -1 ] - - name: input_lengths - data_type: TYPE_INT32 - dims: [ 1 ] - output: - - name: output - data_type: TYPE_FP32 - dims: [10, 10] - preprocessors: - - kind: "custom" - name: "dummy-preprocessor" - input: ["images"] - output: ["images"] - config: - network_size: [3, 768, 768] - - kind: "custom" - name: "dummy-tokenizer" - input: ["text"] - output: ["input_ids", "input_lengths"] - -routes: { - ':["images", "text"]': 'dummy', - ':["image_assets", "text"]': 'dummy:["images", "text"]', - ':["video_assets", "text"]': 'dummy:["images", "text"]', - 'dummy:["output"]': ':' -} - diff --git a/tools/inference_builder/builder/samples/dummy/openapi.yaml b/tools/inference_builder/builder/samples/dummy/openapi.yaml deleted file mode 100644 index 342734d6..00000000 --- a/tools/inference_builder/builder/samples/dummy/openapi.yaml +++ /dev/null @@ -1,499 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -openapi: 3.1.0 -info: - title: NVIDIA INFERENCE SERVICE - description: NVIDIA INFERENCE SERVICE - version: "1.0.0" - termsOfService: https://nvidia.com/legal/terms-of-use - contact: - name: NVIDIA Support - url: https://help.nvidia.com/ - license: - name: NVIDIA AI Foundation Models Community License - url: https://docs.nvidia.com/ai-foundation-models-community-license.pdf -paths: - /v1/health/ready: - get: - tags: - - "NVIDIA METROPOLIS INFERENCE API" - summary: Health Ready - description: Provide your implementation of readiness to know when container - ready to accept traffic - operationId: health_ready_v1_health_ready_get - responses: - '200': - description: Successful Response - content: - application/json: - schema: {} - /v1/files: - post: - tags: - - Files - summary: Upload a media file that can be used as inference input. - description: Upload media files to be used as inference input. Currently, only images upto 50 MB are supported. - operationId: add_media_file - requestBody: - required: true - content: - multipart/form-data: - schema: - $ref: '#/components/schemas/AddFileRequest' - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/AddFileResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - get: - tags: - - Files - summary: Returns a list of the uploaded files. - description: Returns a list that includes ID, file name, size, purpose, file size, and media type for the uploaded files. - operationId: list_media_files - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/ListFilesResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - /v1/files/{file_id}: - delete: - tags: - - Files - summary: Delete a uploaded file. - description: Deletes an uploaded file based on ID. - operationId: delete_media_file - parameters: - - name: file_id - in: path - required: true - schema: - type: string - maxLength: 36 - pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' - description: File having 'file_id' to be deleted. - title: File Id - description: File having 'file_id' to be deleted. - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteAssetResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - /v1/live-streams: - post: - tags: - - Live Streams - summary: Add a live stream - description: Add a live stream as an asset - operationId: add_live_stream - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AddLiveStreamRequest' - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/AddLiveStreamResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - get: - tags: - - Live Streams - summary: List live streams - description: List all live streams - operationId: list_live_streams - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/ListLiveStreamsResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - /v1/live-streams/{live_stream_id}: - delete: - tags: - - Live Streams - summary: Delete a live stream - description: Delete a live stream based on ID - operationId: delete_live_stream - parameters: - - name: live_stream_id - in: path - required: true - schema: - type: string - maxLength: 36 - pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' - description: Live stream having 'live_stream_id' to be deleted. - title: Live Stream Id - description: Live stream having 'live_stream_id' to be deleted. - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteAssetResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - /v1/inference: - post: - tags: - - "NVIDIA INFERENCE API" - summary: Inference sample - description: "Invokes inference for the input images or videos. - The input image can be Base64 encoded string in the request or it can be - specified using the file identifier of an uploaded file. " - operationId: inference - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/InferenceRequest' - required: true - responses: - "200": - description: Invocation is fulfilled. - content: - application/json: - schema: - $ref: '#/components/schemas/InferenceResponse' - application/x-ndjson: - schema: - $ref: '#/components/schemas/InferenceResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' -security: - - Token: [] - -components: - securitySchemes: - Token: - type: http - scheme: bearer - schemas: - MediaAsset: - properties: - id: - type: string - maxLength: 36 - pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' - title: Id - description: The file identifier (asset_id), which can be referenced in the API endpoints. - description: - type: string - title: Description - description: Description of the asset. - path: - type: string - maxLength: 256 - pattern: ^(?:[a-zA-Z][a-zA-Z0-9+.-]*:(?://[^/?#]*)?)?(?:[A-Za-z0-9_.\-~:/?#\[\]@!$&'()*+,;=%]*|(?:[A-Za-z]:)?[\\/]?[A-Za-z0-9_.\-~:/?#\[\]@!$&'()*+,;=%\\]*)$ - title: Filename - description: Local path of the file or URI with optional protocol. - examples: - - myfile.jpg - - /tmp/assets/name.jpg - - file:///tmp/myfile.jpg - - rtsp://camera.example.com/stream - - udp://192.168.1.100:5000 - - rtsp:camera.example.com/stream - - udp:192.168.1.100:5000 - - C:\Users\username\Documents\file.jpg - - \\server\share\file.jpg - - https://example.com/image.jpg - - ftp://ftp.example.com/file.mp4 - size: - type: integer - format: int64 - title: Size - description: Size of the file in bytes. - duration: - type: integer - format: int64 - title: Duration - description: Duration of the file in nanoseconds. - contentType: - type: string - title: Content Type - description: MIME type of the file. - examples: - - image/jpeg - additionalProperties: false - type: object - required: - - id - - path - title: MediaAsset - description: Represents a media asset. - AddFileResponse: - properties: - data: - $ref: '#/components/schemas/MediaAsset' - additionalProperties: false - type: object - required: - - data - title: AddFileResponse - description: Response schema for the add file request. - AddFileRequest: - properties: - file: - type: string - maxLength: 52428800 - format: binary - title: File - description: File object (not file name) to be uploaded. - type: object - required: - - file - title: AddFileRequest - description: Schema for uploading media files. - AddLiveStreamResponse: - properties: - data: - $ref: '#/components/schemas/MediaAsset' - additionalProperties: false - type: object - required: - - data - title: AddLiveStreamResponse - description: Response schema for the add live stream request. - additionalProperties: false - AddLiveStreamRequest: - properties: - url: - type: string - title: URL - description: URL of the live stream. - description: - type: string - title: Description - description: Description of the live stream. - username: - type: string - title: Username - description: Username of the live stream. - password: - type: string - title: Password - description: Password of the live stream. - type: object - required: - - url - title: AddLiveStreamRequest - description: Schema for adding live streams. - ListFilesResponse: - properties: - data: - items: - $ref: '#/components/schemas/MediaAsset' - type: array - maxItems: 100000000000000000 - title: Data - additionalProperties: false - type: object - required: - - data - title: ListFilesResponse - description: Response schema for the list files API. - ListLiveStreamsResponse: - properties: - data: - items: - $ref: '#/components/schemas/MediaAsset' - type: array - maxItems: 100000000000000000 - title: Data - additionalProperties: false - type: object - required: - - data - title: ListLiveStreamsResponse - description: Response schema for the list live streams API. - DeleteAssetResponse: - properties: - deleted: - type: boolean - title: Deleted - description: Indicates if the file was deleted - additionalProperties: false - type: object - required: - - deleted - title: DeleteAssetResponse - description: Response schema for the delete asset request. - InferenceRequest: - additionalProperties: false - properties: - input: - type: array - items: - oneOf: - - type: string - pattern: ^.*$ - maxLength: 4294967296 - - $ref: '#/components/schemas/MediaAsset' - maxItems: 64 - title: Input - description: 'The list of images on which you want to perform inference. Images should be in form - of `data:image/{format};base64,{base64encodedimage}`.Accepted formats are `jpg`, `png` and `jpeg`. Or they - can be uploaded media assets.' - text: - type: array - items: - type: string - maxLength: 256 - title: Text - description: 'A list of text to be used for the extra prompt on the inference.' - model: - type: string - enum: [nvidia/nvdino-v2, nvidia/c-radio-p3-v3, nvidia/convnext] - title: Model - description: ID of the CV model. - example: nvidia/nvdino-v2 - type: object - title: InferenceRequest - description: List of input images for the inference request. - InferenceResponse: - type: object - properties: - data: - items: - $ref: '#/components/schemas/InferenceResult' - type: array - title: Data - description: The list of inference data generated by the model. - maxItems: 10 - model: - type: string - description: Model used to generate masks. - example: nvidia/nvdino - title: Model - usage: - $ref: '#/components/schemas/Usage' - description: Usage statistics for the masks request. - examples: - - num_images: 1 - additionalProperties: false - title: InferenceResponse - description: Response schema for the inference request. - InferenceResult: - type: object - description: Represents the inference result - additionalProperties: true - properties: - index: - type: integer - format: int32 - title: Index - description: The index of the mask in the list of masks. - minimum: 0 - maximum: 127 - required: - - index - - timestamp - title: InferenceResult - Usage: - properties: - num_images: - type: integer - format: int32 - title: Num Images - minimum: 0 - maximum: 64 - description: Number of images processed. - additionalProperties: false - required: - - num_images - title: Usage - Errors: - type: object - properties: - type: - type: string - maxLength: 128 - description: Error type - title: - type: string - maxLength: 128 - description: Error title - status: - type: integer - format: int32 - minimum: 100 - maximum: 999 - description: Error status code - detail: - type: string - maxLength: 1024 - description: Detailed information about the error - instance: - type: string - maxLength: 256 - description: Function instance used to invoke the request - required: - - type - - title - - status - - detail - - instance - title: Errors diff --git a/tools/inference_builder/builder/samples/dummy/processors.py b/tools/inference_builder/builder/samples/dummy/processors.py deleted file mode 100644 index 859c5ce8..00000000 --- a/tools/inference_builder/builder/samples/dummy/processors.py +++ /dev/null @@ -1,44 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import numpy as np -import torch - -class DummyPreprocessor: - name = "dummy-preprocessor" - def __init__(self, config): - self.network_size = config['network_size'] - - def __call__(self, *args): - if len(args) != 1: - raise ValueError("DummyPreprocessor expects exactly one argument") - input = args[0] - if len(input.shape) != 3: - raise ValueError("DummyPreprocessor expects a 3D tensor") - if isinstance(input, np.ndarray) and input.dtype != np.uint8: - raise ValueError("DummyPreprocessor expects a uint8 tensor") - if isinstance(input, torch.Tensor) and input.dtype != torch.uint8: - raise ValueError("DummyPreprocessor expects a uint8 tensor") - return np.random.randn(*self.network_size) - - -class DummyTokenizer: - name = "dummy-tokenizer" - def __init__(self, config): - pass - - def __call__(self, *args): - return np.random.randint(0, 100, size=10), np.array([10]) diff --git a/tools/inference_builder/builder/samples/dummy/test_client.py b/tools/inference_builder/builder/samples/dummy/test_client.py deleted file mode 100644 index d7412ab7..00000000 --- a/tools/inference_builder/builder/samples/dummy/test_client.py +++ /dev/null @@ -1,86 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os -import mimetypes -import requests -from requests_toolbelt.multipart.encoder import MultipartEncoder - - -def main(host, port, image_path, video_path, text): - invoke_url = "http://" + host + ":" + port + "/v1/inference" - upload_url = "http://" + host + ":" + port + "/v1/files" - image_data =[] - video_data = [] - if image_path: - for image in image_path: - multipart_data = MultipartEncoder( - fields={ - 'file': (os.path.basename(image), open(image, 'rb'), mimetypes.guess_type(image)[0]) - } - ) - response = requests.post(upload_url, headers={"Content-Type": multipart_data.content_type}, data=multipart_data) - image_data.append(response.json()["data"]) - print(f"image_data uploaded: {image_data}") - payload = { - "input": image_data, - "text": text, - "model": "nvidia/nvdino-v2" - } - headers = { - "Content-Type": "application/json", - "accept": "application/json" - } - response = requests.post(invoke_url, headers=headers, json=payload) - print(f"Inference result from image data: {response.json()}") - - if video_path: - for video in video_path: - multipart_data = MultipartEncoder( - fields={ - 'file': (os.path.basename(video), open(video, 'rb'), mimetypes.guess_type(video)[0]) - } - ) - response = requests.post(upload_url, headers={"Content-Type": multipart_data.content_type}, data=multipart_data) - video_data.append(response.json()["data"]) - print(f"video_data uploaded: {video_data}") - - payload = { - "input": video_data, - "text": text, - "model": "nvidia/nvdino-v2" - } - headers = { - "Content-Type": "application/json", - "accept": "application/x-ndjson" - } - stream_response = requests.post(invoke_url, headers=headers, json=payload, stream=True) - for line in stream_response.iter_lines(): - if line: - print(f"Inference result from video data: {line}") - - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument("--host", type=str, - help= "Server IP Address", default="127.0.0.1") - parser.add_argument("--port", type=str, - help="Server port", default="8000") - parser.add_argument("--image-path", type=str, help="Image path to send for inference", nargs='*', default=None) - parser.add_argument("--video-path", type=str, help="Video path to send for inference", nargs='*', default=None) - parser.add_argument("--text", type=str, help="Extra text to send for inference", nargs='*', default=None) - args = parser.parse_args() - main(args.host, args.port, args.image_path, args.video_path, args.text) \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/nvclip/Dockerfile b/tools/inference_builder/builder/samples/nvclip/Dockerfile deleted file mode 100644 index c1cd4ed7..00000000 --- a/tools/inference_builder/builder/samples/nvclip/Dockerfile +++ /dev/null @@ -1,75 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Sample Dockerfile for an NVCLIP embedding model pipeline that uses -# DeepStream for hardware-accelerated video decoding and a -# TensorRT backend for inference. This is a reference for this specific -# sample, not a universal template for all deployments.em -FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS builder_base - -# Install Python dependencies required by THIS NVCLIP sample (CLIP -# model, TensorRT bindings, FastAPI server, etc.). Versions are pinned -# for reproducibility and can be adjusted for other pipelines. -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install \ - requests==2.32.3 \ - python-multipart==0.0.9 \ - aiofiles==23.2.1 \ - aiohttp==3.11.0 \ - annotated-types==0.7.0 \ - python-magic==0.4.27 \ - Pillow==11.1.0 \ - open_clip_torch==3.2.0 \ - numpy==1.26.4 \ - omegaconf==2.3.0 \ - transformers==4.48.1 \ - fastapi==0.115.12 \ - uvicorn==0.29.0 \ - tensorrt==10.14.1.48.post1 --extra-index-url https://pypi.nvidia.com \ - polygraphy==0.49.24 -ENV TRANSFORMERS_CACHE=/tmp - -WORKDIR /workspace - -# Copy the inference flow package generated by Inference Builder. This -# tarball (here: nvclip.tgz) is typically produced when running the -# builder with tarball output enabled, and its name should match the -# generated pipeline artifact you want to deploy. -ADD nvclip.tgz /workspace - -RUN groupadd --gid 1000 --non-unique nvs && \ - useradd --create-home --shell /usr/sbin/nologin --uid 1000 --non-unique --gid 1000 nvs && \ - chown 1000.1000 /workspace - -USER nvs:1000 - -# Create the entrypoint script that runs the Inference Builder‑generated -# /workspace/__main__.py for this NVCLIP pipeline. Uncomment the -# while‑loop or alternative ENTRYPOINT for debugging if desired. -RUN touch /workspace/start_server.sh && \ - chmod a+rx /workspace/start_server.sh && \ - cat > /workspace/start_server.sh <<-EOF - #!/usr/bin/env bash - set -eu - - # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. - # SPDX-License-Identifier: LicenseRef-NvidiaProprietary - python3 /workspace/__main__.py -# while true; do sleep 5; done -EOF - -ENTRYPOINT ["/workspace/start_server.sh"] -#ENTRYPOINT ["/bin/bash"] -CMD [] \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/nvclip/README.md b/tools/inference_builder/builder/samples/nvclip/README.md deleted file mode 100644 index 586a3156..00000000 --- a/tools/inference_builder/builder/samples/nvclip/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Introduction - -This sample demonstrate how to create the inference microservice for an embedding model with TensorRT backend (polygrapy) and fastapi server. - -We provide a sample Dockerfile for the example, which you can use to build a Docker image and test the microservice on any x86 system with an NVIDIA Ampere, Hopper, and Blackwell GPU. - -# Prerequisites - -**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. - -The model used in this sample can be found from NGC: https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/nvclip_vit. Make sure you have the proper access right to the models, and download the checkpoints. - -Before downloading the model file, you need to set up your model repository: - -```bash -mkdir -p ~/.cache/model-repo && chmod 777 ~/.cache/model-repo -export MODEL_REPO=~/.cache/model-repo -``` - -## Download the model file using NGC CLI: - -```bash -ngc registry model download-version "nvidian/tao-nvaie/multi_modal_foundation_models:NVCLIP_224_700M_ViTH14" --dest /tmp -chmod 666 /tmp/multi_modal_foundation_models_vNVCLIP_224_700M_ViTH14/* -``` - -Run `ls /tmp/multi_modal_foundation_models_vNVCLIP_224_700M_ViTH14 -l` and be sure we have the checkpoint file `nvclip_clipa_vit_h14_700M.ckpt`. - -**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided above within the prerequisites section. - -## Create the optimized TensorRT Engine: - -Prior to using the model for accelerated inference, we need to convert the checkpoints into onnx files and generate TensorRT engines accordingly. - -First build the container image for TensorRT optimizer: - -```bash -docker build -t trt-optimizer builder/samples/nvclip/optimizer -``` - -Then generate the engine files using the trt-optimizer - -```bash -docker login nvcr.io -docker run -it --rm --gpus all \ - -v $MODEL_REPO:/workspace/checkpoints/optimized \ - -v /tmp/multi_modal_foundation_models_vNVCLIP_224_700M_ViTH14:/workspace/checkpoints/baseline \ - -e CHECKPOINT_NAME=nvclip_clipa_vit_h14_700M.ckpt \ - trt-optimizer -``` - -Run `ls $MODEL_REPO/`, If the above process runs correctly, there'll be 2 folders created under model-repo directory: -- nvclip_clipa_vit_h14_700M_vision: for vision encoder -- nvclip_clipa_vit_h14_700M_text: for text encoder - -Go to inference_builder folder, adjust the permissions of each folder and copy the model config from source tree to the model folder: - -```bash -sudo chmod 777 $MODEL_REPO/nvclip_clipa_vit_h14_700M_text $MODEL_REPO/nvclip_clipa_vit_h14_700M_vision -cp builder/samples/nvclip/optimizer/configs/* $MODEL_REPO/nvclip_clipa_vit_h14_700M_text -``` - -# Build the inference flow - -Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment. - -```bash -source .venv/bin/activate -python builder/main.py builder/samples/nvclip/tensorrt_nvclip.yaml -a builder/samples/nvclip/openapi.yaml -c builder/samples/nvclip/processors.py -o builder/samples/nvclip --server-type fastapi -t -``` - -# Build and run the docker image - -```bash -cd builder/samples -docker compose up --build ms-nvclip -``` - -# Test the microservice with a client - -After the server is successfully started, open a new terminal in your inference_builder folder to launch the client with a jpeg or png file. The embeddings generated by the model will be returned in the json payload. - -**important:** ** is a place holder, please replace it with the actual image path** - -```bash -source .venv/bin/activate && cd builder/samples/nvclip -./test_client.sh -``` \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/nvclip/openapi.yaml b/tools/inference_builder/builder/samples/nvclip/openapi.yaml deleted file mode 100644 index b75e748b..00000000 --- a/tools/inference_builder/builder/samples/nvclip/openapi.yaml +++ /dev/null @@ -1,487 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -openapi: 3.1.0 -info: - title: NVIDIA INFERENCE SERVICE API for nvidia/nvclip-vit-h-14 - description: NVIDIA INFERENCE SERVICE API - version: 1.0.0 - termsOfService: https://nvidia.com/legal/terms-of-use - contact: - name: NVIDIA Support - url: https://help.nvidia.com/ - license: - name: NVIDIA AI Foundation Models Community License - url: https://docs.nvidia.com/ai-foundation-models-community-license.pdf -tags: - - name: "NVIDIA NVCLIP API" - description: Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms. -paths: - "/v1/embeddings": - post: - tags: - - Embeddings - summary: Creates an embedding vector representing the input text or image. - description: "Invokes inference using the embedding parameters. If uploading - large images, this POST should be used in conjunction with the NVCF API which - allows for the upload of large assets. \nYou can find details on how to use - NVCF Asset APIs here: https://docs.api.nvidia.com/cloud-functions/reference/createasset." - operationId: create_embedding - requestBody: - content: - application/json: - schema: - "$ref": "#/components/schemas/EmbeddingsRequest" - required: true - x-nvai-meta: - name: "Create Text Embedding" - description: | - Generates an embedding vector from the provided text - using a specified model. The embedding can be returned - in either float array or base64-encoded format. - path: "create" - templates: - - title: "Synchronous requests" - requestEjs: - curl: | - curl -X POST https://integrate.api.nvidia.com/v1/embeddings \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer $NVIDIA_API_KEY" \ - -d '{ - "input": ["Image of a dog", - "data:image/jpeg;base64,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"], - "model": "nvidia/nvclip-vit-h-14", - "encoding_format": "float" - }' - python: | - from openai import OpenAI - - client = OpenAI( - api_key="$NVIDIA_API_KEY", - base_url="https://integrate.api.nvidia.com/v1" - ) - - response = client.embeddings.create( - input=[ "Image of a dog", - "data:image/jpeg;base64,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"], - model="nvidia/nvclip-vit-h-14", - encoding_format="float" - ) - - print(response.data[0].embedding) - node: | - import OpenAI from 'openai'; - - const openai = new OpenAI({ - apiKey: '$NVIDIA_API_KEY', - baseURL: 'https://integrate.api.nvidia.com/v1/', - }) - - async function main() { - const response = await openai.embeddings.create({ - input: ["The quick brown fox jumped over the lazy dog", - "data:image/jpeg;base64,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" - ], - model: "nvidia/nvclip-vit-h-14", - encoding_format: "float" - }) - - const embedding = response.data[0].embedding; - process.stdout.write(`${embedding}\n`); - } - - main(); - - response: > - { - "object":"list", - "data":[{"index":0,"embedding":[-0.004141246434301138,-0.01689707487821579,0.012426131404936314,-0.016726966947317123,-0.008678196929395199,-0.009295804426074028,0.009726164862513542,-0.022503215819597244,-0.017610320821404457,0.0003413025406189263,-0.03806029260158539,-0.0029619780834764242,0.03500921279191971,0.00837829802185297,0.0148561280220747,-0.0212395116686821,0.017078636214137077,-0.00459861196577549,-0.021547796204686165,-0.05555511638522148,-0.025865912437438965,-0.0058914124965667725,0.01959407702088356,0.03975767642259598,-0.007950921542942524,0.0019562202505767345,-0.04658181592822075,0.006377906538546085,0.015079125761985779,-0.031968407332897186,-0.03715363144874573,-0.0035252058878540993,0.012734952382743359,0.00885448046028614,-0.033137913793325424,0.004123990423977375,0.03223686292767525,-0.007955869659781456,-0.05179435387253761,0.02788241021335125,0.03838478401303291,0.004643972031772137,-0.000478812464280054,-0.02204490825533867,-0.01571882702410221,0.029129542410373688,-0.0157241839915514,-0.0316602922976017,0.033637937158346176,-0.029353737831115723,-0.012587918899953365,0.025821227580308914,-0.0188415739685297,0.0030159130692481995,0.009031707420945168,-0.01835968717932701,-0.004277291242033243,-0.015501229092478752,0.008056040853261948,0.02946413680911064,0.012887547723948956,0.03265497088432312,0.009581572376191616,-0.1564253270626068,-0.01405376847833395,0.010441438294947147,-0.02548121102154255,0.017590057104825974,0.028301002457737923,0.0026452515739947557,0.013897688128054142,-0.014540997333824635,-0.004527798388153315,0.03835851326584816,-0.03831495717167854,0.019475141540169716,0.010080724954605103,0.02765466645359993,0.00603770837187767,-0.000400348479161039,-0.036044176667928696,-0.012854951433837414,0.03269652649760246,0.010578403249382973,-0.0032332660630345345,-0.0013423014897853136,0.01841983199119568,0.009791318327188492,0.014436286874115467,0.0052145193330943584,-0.03309307619929314,-0.00016763672465458512,-0.0008141322759911418,0.01871390827000141,0.025392455980181694,0.0025894346181303263,0.04925240948796272,0.03293110802769661,-0.008387845940887928,0.011471213772892952,0.00044845533557236195,-0.03572803735733032,0.008408864960074425,0.005150725599378347,0.0027136774733662605,-0.015526692382991314,0.019093889743089676,0.023867793381214142,0.002074668649584055,0.015213425271213055,-0.03485359251499176,-0.01568167470395565,0.0019035213626921177,-0.01312799472361803,-0.0005730802076868713,0.00797811709344387,-0.004188996739685535,-0.0004184977733530104,-0.017942678183317184,0.034504521638154984,0.02762117236852646,-0.01790756545960903,0.0009181434870697558,-0.03011685609817505,0.014275695197284222,0.015353744849562645,-0.031707435846328735,-0.014739478938281536,0.016829000785946846,0.017712701112031937,0.007461728528141975,0.01610303856432438,0.06119834631681442,0.026246709749102592,-0.018305666744709015,0.01999809592962265,0.020704712718725204,0.0006690274458378553,0.006749357562512159,-0.02893499657511711,0.030817503109574318,0.012018632143735886,-0.00804202351719141,-0.018375836312770844,0.010928541421890259,0.010707253590226173,0.013002028688788414,-0.002033184515312314,-0.005340408068150282,0.03387705981731415,-0.022892260923981667,0.014678869396448135,0.013537639752030373,-0.008713518269360065,-0.02593693695962429,0.07454174757003784,-0.024845819920301437,0.02834264747798443,-0.02971474640071392,-0.011557130143046379,-0.008002926595509052,-0.019368749111890793,0.028180744498968124,0.020025016739964485,0.00347648817114532,-0.024566639214754105,0.010174321942031384,-0.0041660708375275135,-0.032732993364334106,0.020300105214118958,-0.015345271676778793,-0.014129326678812504,-0.018271800130605698,-0.051289476454257965,0.010386044159531593,-0.009736659936606884,0.058951228857040405,-0.019437629729509354,0.010607936419546604,-0.035290662199258804,-0.018360501155257225,0.00655018538236618,0.006995379459112883,-0.0038300538435578346,0.025012381374835968,-0.016321701928973198,0.030617311596870422,0.009497919119894505,0.03148818388581276,-0.0013535958714783192,0.04819456487894058,-0.029439838603138924,-0.01625029742717743,0.02551189251244068,-0.012317327782511711,0.00624461006373167,0.0006637125625275075,0.02077995426952839,-0.020640326663851738,0.019393613561987877,0.010709955357015133,0.0266432985663414,0.007108711171895266,-0.004445891827344894,-0.00882738083600998,0.00688306475058198,0.041268378496170044,-0.007304352708160877,-0.03441083803772926,0.008169202134013176,0.011502728797495365,-0.007084041368216276,-0.020305443555116653,-0.025182053446769714,0.017318835482001305,0.033297374844551086,0.01863124966621399,0.021403657272458076,0.00891103409230709,0.006325514055788517,-0.018800152465701103,-0.010625758208334446,-0.026598088443279266,0.0007023508660495281,-0.01763393171131611,0.016984479501843452,-0.004765206947922707,-0.02932245470583439,-0.029315751045942307,-0.028604162856936455,0.001683940296061337,-0.002616151934489608,-0.0017021234380081296,-0.0058658914640545845,-0.01610795594751835,-0.013643622398376465,-0.015004831366240978,-0.02692246250808239,0.036434344947338104,0.050759829580783844,-0.02177542634308338,-0.02895553968846798,0.004390752874314785,-0.0071328007616102695,-0.0051391092129051685,-0.021695662289857864,-0.02772023156285286,0.0008286261581815779,0.005659732036292553,-0.006769032217562199,-0.013968240469694138,-0.026159070432186127,0.025013821199536324,-0.011028788983821869,0.015586946159601212,0.006575345527380705,-0.007776331622153521,-0.019144093617796898,0.00411997688934207,0.007583860773593187,-0.025160323828458786,0.0077173043973743916,-0.007576176896691322,0.003944530617445707,-0.029183954000473022,-0.01147263590246439,-0.016668498516082764,-0.011516440659761429,0.003953504376113415,0.00978126097470522,0.029793299734592438,-0.015394643880426884,0.010064088739454746,-0.021008552983403206,-0.01573927327990532,-0.030099501833319664,0.0003759782121051103,0.0006849328055977821,0.0389038547873497,-0.02146504633128643,-0.018647141754627228,-0.01572437584400177,-0.007592550944536924,-0.0015588185051456094,0.002662237733602524,0.007236766628921032,0.01272666733711958,0.026706160977482796,0.05235762149095535,-0.012421092949807644,0.00013509750715456903,0.04476403817534447,-0.009771216660737991,-0.02118249610066414,0.04454591125249863,-0.017028428614139557,-0.01195906475186348,0.005678544286638498,0.00836592260748148,0.01189937349408865,0.012730962596833706,-0.005630319472402334,0.01452713180333376,-0.013275792822241783,-0.018467117100954056,0.014105362817645073,-0.027940034866333008,0.016660083085298538,0.004231704398989677,-0.01585736684501171,0.02311568148434162,-0.012323492206633091,0.030989425256848335,-0.0017990367487072945,0.005157525651156902,0.011860912665724754,-0.003062732517719269,-0.0021780328825116158,0.027445411309599876,0.0037140955682843924,-0.027354771271348,0.01905607432126999,-0.021779637783765793,0.004786330740898848,-0.014433914795517921,-0.000988819869235158,-0.025424044579267502,-0.02375912293791771,0.0002571911318227649,-0.01142153050750494,0.00633115042001009,-0.03022611141204834,-0.006386420223861933,0.015073674730956554,0.021177120506763458,0.0010647213784977794,0.02805747091770172,-0.012359117157757282,-0.00851079635322094,0.008847501128911972,0.03417434170842171,-0.0038769945967942476,0.028228238224983215,-0.03615333139896393,-0.010117767378687859,0.03377214074134827,-0.037624865770339966,0.00220870622433722,0.00726681062951684,0.0031843953765928745,-0.00023749811225570738,-0.014478919096291065,-0.019637541845440865,-0.017522139474749565,-0.02418166771531105,-0.02212562784552574,0.05112030357122421,-0.025338690727949142,0.034731388092041016,0.03619275614619255,-0.018059806898236275,-0.012308582663536072,0.02949472703039646,-0.005662223789840937,-0.034676920622587204,-0.019521132111549377,-0.0032274748664349318,0.010125264525413513,0.016992516815662384,0.02023046649992466,0.025654837489128113,-0.0035119461826980114,-0.01830037496984005,0.0412350594997406,-0.025699708610773087,0.3945489227771759,0.0022388233337551355,0.006623091641813517,0.02957732230424881,-0.02066163346171379,0.00981396995484829,-0.008598527871072292,0.013277895748615265,0.020120883360505104,-0.006477731745690107,0.030418142676353455,-0.007340218871831894,-0.012548127211630344,0.023639768362045288,0.010163206607103348,-0.034796204417943954,0.0006370857008732855,-0.01274147629737854,-0.02447603829205036,-0.03882390633225441,-0.031244494020938873,-0.026461591944098473,-0.0022103397641330957,-0.019572583958506584,-0.016439631581306458,0.015622923150658607,-0.015521136112511158,0.03595787286758423,-0.0048918514512479305,-0.002181324642151594,0.016870345920324326,0.019937478005886078,0.041617486625909805,-0.005293984431773424,0.007304266560822725,-0.023329349234700203,-0.0038777447771281004,0.0014489589957520366,-0.009314816445112228,-0.022992243990302086,0.003761240281164646,0.0337349958717823,0.0223101619631052,0.013082288205623627,-0.026393432170152664,0.006819479167461395,-0.021051079034805298,0.010396712459623814,-0.034099213778972626,0.022815337404608727,-0.0009314282215200365,0.02074781432747841,0.0007524539832957089,0.02071470208466053,0.009940960444509983,-0.012605628930032253,-0.007611552253365517,0.034557487815618515,-0.015403050929307938,0.0068310028873384,-0.026989562436938286,-0.004270288627594709,-0.020345613360404968,0.01306311134248972,-0.013799809850752354,-0.029911305755376816,-0.009493411518633366,-0.011653181165456772,-0.009218117222189903,-0.0007806898793205619,0.01938917674124241,0.001906267600134015,-0.019101956859230995,-0.007550311740487814,-0.012143472209572792,-0.04367460682988167,0.025638077408075333,-0.014629567973315716,0.028194574639201164,-0.01728118024766445,0.0221963319927454,0.019204938784241676,0.03432143107056618,-0.02657555416226387,0.002004743553698063,-0.020791711285710335,-0.010341069661080837,-0.04619452357292175,-0.005083365831524134,-0.00990467518568039,0.002460786607116461,0.010507918894290924,0.016275444999337196,-0.06338823586702347,-0.007412796374410391,0.06120302900671959,0.010436675511300564,0.0034267818555235863,0.02876623161137104,-0.0007090673316270113,-0.008585995063185692,-0.011970008723437786,0.005763562396168709,-0.024609150364995003,0.02850452810525894,-0.022673225030303,0.01191666629165411,-0.04924258962273598,-0.04102671891450882,0.02912851609289646,-0.016620686277747154,-0.03335510939359665,-0.01148713193833828,-0.010274672880768776,0.009239780716598034,-0.004761083517223597,0.02867140993475914,0.014553618617355824,-0.021684858947992325,0.018985014408826828,0.014055677689611912,0.026981523260474205,-0.004754500463604927,-0.00038642145227640867,-0.013451570644974709,-0.016589971259236336,0.022141065448522568,-0.004539037588983774,0.03152543306350708,0.01208160538226366,-0.024780472740530968,0.02048008143901825,0.006478175055235624,0.03647821769118309,-0.02186744473874569,0.033406343311071396,0.021772053092718124,-0.0025682891719043255,0.04414818063378334,0.00921628624200821,0.008988365530967712,0.007342945784330368,-0.007830486632883549,0.03257960081100464,-0.012104877270758152,0.009669927880167961,-0.0064807008020579815,-0.009303362108767033,0.007799571845680475,0.01879187859594822,0.013339410535991192,0.01986137218773365,0.0008062629494816065,-0.2452234923839569,0.0016491387505084276,-0.04547182098031044,-0.0028053668793290854,0.009465817362070084,-0.021054264158010483,0.008472413755953312,0.0708577111363411,-0.009206854738295078,0.0014748502289876342,0.007380124647170305,0.02171417511999607,-0.003809248097240925,0.013634135015308857,-0.0012557351728901267,0.01094928290694952,0.009313702583312988,-0.02872377634048462,0.0031375717371702194,-0.01976471208035946,0.0020988467149436474,0.003526208456605673,0.01742757111787796,-0.009931430220603943,-0.011483557522296906,-0.016786184161901474,0.003717949381098151,-0.007670466788113117,-0.0036177970468997955,-0.0075657786801457405,-0.014233733527362347,-0.016591597348451614,0.019823554903268814,-0.012458041310310364,-0.012151968665421009,0.012052053585648537,0.023169804364442825,0.007043288554996252,-0.06283272057771683,0.009973570704460144,0.04159274697303772,-0.0027213972061872482,-0.026247259229421616,-0.0005786009132862091,0.005472692660987377,0.010092354379594326,-0.0004666309105232358,0.0027546195778995752,-0.021309800446033478,0.03282300382852554,0.009572925977408886,-0.020475301891565323,-0.02145480178296566,-0.027329636737704277,-0.027623644098639488,0.00212560105137527,0.021240131929516792,0.004549054894596338,-0.009809929877519608,-0.01735849492251873,-0.00037379004061222076,0.02335747703909874,-0.007545780390501022,0.0291381124407053,0.026592694222927094,-0.004482008051127195,0.030557220801711082,-0.020553363487124443,-0.01994723454117775,-0.0064659821800887585,0.02962430939078331,-0.0008922646520659328,-0.053251899778842926,0.009864742867648602,0.020337197929620743,-0.003998814150691032,-0.004185308702290058,6.866786134196445e-05,0.014037802815437317,0.027247929945588112,0.048447780311107635,-0.01015166100114584,0.02130924165248871,-0.0233079232275486,0.02607346512377262,0.040281493216753006,-0.007543081417679787,-0.035924218595027924,0.00569900730624795,-0.008039957843720913,-0.002823712769895792,-0.002803286537528038,-0.006118007004261017,0.022434748709201813,0.013933056965470314,0.002936281030997634,-0.013914977200329304,0.023689141497015953,0.007962143048644066,-0.011495125479996204,-0.02081713080406189,0.01413489505648613,0.012353007681667805,-0.015297238714993,-0.02939029410481453,-0.015370906330645084,0.015056128613650799,0.014590793289244175,0.026387853547930717,-0.00512867234647274,-0.008124465122818947,-0.015975723043084145,0.02681264467537403,-0.010784736834466457,0.01441181544214487,0.03277438506484032,0.010350184515118599,0.009400716051459312,-0.02116876281797886,0.0018132136901840568,-0.03765971586108208,0.0052503058686852455,0.03420824930071831,0.014777399599552155,-0.016579443588852882,-0.03330729156732559,-0.013327029533684254,0.0005119363777339458,-0.020840656012296677,-0.004507529083639383,-0.011724368669092655,-0.03594064712524414,0.0015368282329291105,0.009197228588163853,6.866830517537892e-05,0.0282279159873724,-0.052910640835762024,-0.040126197040081024,-0.029475118964910507,0.005734991282224655,-0.004573932383209467,-0.014002541080117226,0.002804175252094865,0.015738246962428093,0.026456352323293686,-0.011875574477016926,-0.030365511775016785,-0.008460002951323986,0.0012545310892164707,0.010170886293053627,0.037671059370040894,-0.014676935039460659,0.004320601467043161,-0.001990457298234105,-0.008405500091612339,0.009865849278867245,-0.00018689411808736622,0.00172912678681314,0.024112839251756668,-0.018725017085671425,0.02372124046087265,-0.029248137027025223,0.01865905337035656,0.022101448848843575,-0.026333123445510864,-0.03643358498811722,-0.009696442633867264,0.0064179981127381325,-0.02068602852523327,-0.0005584901664406061,-0.009454110637307167,0.03605068847537041,0.0053380923345685005,0.03280332684516907,-0.03048955276608467,0.0333951935172081,-0.013537755236029625,0.011699914000928402,0.00550722936168313,-0.003158178646117449,-0.0023985630832612514,0.0008453089976683259,-0.015513830818235874,-0.01306804921478033,0.014389708638191223,0.00964529998600483,-0.025586921721696854,0.04138404130935669,0.01857851818203926,0.003144270507618785,-0.014571740292012691,0.0008016453357413411,-0.02522323466837406,-0.021038807928562164,0.0260340366512537,-0.014219886623322964,0.02239949256181717,-0.03005603700876236,-0.0002968251646962017,0.04302574694156647,-0.011221950873732567,0.013686021789908409,0.011945300735533237,-0.021525831893086433,0.016680726781487465,-0.009338047355413437,-0.0013850744580850005,-0.004670086316764355,-0.01883036084473133,-0.021457115188241005,0.016184847801923752,-0.02029011771082878,0.012913129292428493,0.03236585855484009,-0.025957178324460983,-0.019733259454369545,0.0014983630971983075,-0.0009224032983183861,0.018271666020154953,-0.016837170347571373,-0.03021763078868389,0.024666650220751762,-0.005840935278683901,-0.0002922657295130193,0.01992247812449932,0.0025119774509221315,0.00942355114966631,-0.024607347324490547,0.0175350159406662,0.008702065795660019,-0.0030363621190190315,0.029419153928756714,0.02159796841442585,-0.02282441034913063,-0.007350334897637367,-0.04385586455464363,0.025481482967734337,-0.0009410607162863016,-0.02334352768957615,0.03386714309453964,-0.00873310212045908,-0.026216188445687294,-0.006248565390706062,-0.0017794203013181686,-0.007381954696029425,0.012409504503011703,0.009813938289880753,0.02856520004570484,-0.016347434371709824,0.009081486612558365,-0.029968498274683952,-0.03468979150056839,0.021744443103671074,-0.017760567367076874,-0.023141345009207726,0.01621149852871895,-0.022202035412192345,0.013410212472081184,-0.04080522432923317,-0.02034514583647251,0.01637434773147106,-0.01152025070041418,0.046551160514354706,-0.028310056775808334,-0.01566505618393421,0.008510574698448181,-0.004622760694473982,-0.04889841377735138,-0.007965917699038982,0.05206499621272087,0.01185608096420765,0.009846740402281284,0.014891531318426132,-0.058800600469112396,0.008623807691037655,-0.02387350983917713,0.028119025751948357,-0.030440298840403557,-0.0022277296520769596,0.008353536017239094,0.022365428507328033,0.04501890018582344,0.006614751648157835,0.009785963222384453,-0.0009170128032565117,-0.2600760757923126,-0.016080114990472794,-0.045600809156894684,0.37184008955955505,0.00042362671229057014,-0.04083505645394325,-0.0060874950140714645,0.004676590207964182,-0.0015948755899444222,0.006051524542272091,0.009526277892291546,-0.024084242060780525,0.0027569576632231474,0.0031010331586003304,-0.01725873164832592,0.012725659646093845,0.020268095657229424,-0.018510079011321068,-0.02837648242712021,0.03285406157374382,-0.04530850052833557,0.013998305425047874,0.006253780797123909,-0.008995305746793747,-0.03807469829916954,-0.005177452228963375,0.0016503955703228712,0.002722939010709524,0.01649770513176918,-0.012529625557363033,-0.011780786328017712,-0.04194258153438568,0.2932291626930237,-0.005160861648619175,-0.025871288031339645,-0.015019666403532028,0.010148548521101475,-0.031369827687740326,0.010749276727437973,0.012993646785616875,-0.032632481306791306,0.008153950795531273,-0.028490586206316948,0.013572984375059605,0.014727172441780567,0.02997964806854725,0.03599761798977852,-0.011955379508435726,-0.0023449331056326628,0.007874103263020515,0.0031892163679003716,-0.0630422905087471,-0.045875441282987595,0.0045535508543252945,-0.006551229860633612,0.014457279816269875,0.02571825310587883,0.0025780280120670795,0.004330016206949949,-0.034172870218753815,-0.0011205438058823347,-0.039298295974731445,0.013649556785821915,-0.019661420956254005,0.007333013229072094,0.0033112831879407167,-0.00907302089035511,0.05523563548922539,0.06825254112482071,-0.029133841395378113,0.007138827815651894,0.0018581028562039137,-0.0027824908029288054,-0.018279701471328735,0.013761738315224648,0.007517494726926088,-0.05192633718252182,0.019648293033242226,-0.0065101259388029575,0.0036486471071839333,-0.011046899482607841,-0.03020889312028885,-0.008332557044923306,-0.023126818239688873,-0.02244790829718113,-0.01924694888293743,0.03122282400727272,0.005073893815279007,-0.01787622645497322,0.021307969465851784,0.014510958455502987,0.010585499927401543,0.014507881365716457,-0.002168098231777549,0.014450464397668839,0.013872889801859856,-0.005848449654877186,0.006843095179647207,-0.01401022169739008,0.007842911407351494,-0.0068886177614331245,-0.015383785590529442,-0.00011942457786062732,-0.0436474084854126,-0.01509405579417944,-0.02598675526678562,0.00272564310580492,0.0038308147341012955,0.004427497275173664,-0.00624738959595561,0.009107514284551144,-0.020619701594114304,0.010628441348671913,0.005285948980599642,0.014739288948476315,0.005811752285808325,0.0026360531337559223,-0.018963048234581947,-0.009475690312683582,0.05785176157951355,-0.01737930439412594,-0.02488931454718113,-0.0399969145655632,0.003923316486179829,0.018002383410930634,-0.02504521608352661,-0.023813752457499504,-0.017232278361916542,0.00795676652342081,-0.001794273965060711,-0.020255418494343758,-0.000540823966730386,-0.001777304452843964,0.006025017239153385,-0.0427837073802948,0.019155099987983704,-0.023230666294693947,0.02336927130818367,-0.007677625399082899,-0.01661953143775463,0.03562818095088005,0.019376536831259727,-0.03837037459015846,-0.04313799738883972,0.015176735818386078,0.008284813724458218,0.009473254904150963,-0.03282340243458748,-0.00046932106488384306,0.018362799659371376,0.01757805608212948,0.015880797058343887,-0.0002934168151114136,0.017278384417295456,0.01328978594392538,-0.02181888371706009,-0.004277618136256933,0.0011071941116824746,-0.005517182871699333,0.026351038366556168,0.028246188536286354,0.0002695833973120898,0.045881159603595734,0.026812918484210968,-0.04657647758722305,0.02684716135263443,-0.010451615788042545,-0.0068083698861300945,0.019908539950847626,-0.022675009444355965,0.01397355180233717,-0.006318001076579094,-0.03992696851491928,0.013012533076107502,0.029743270948529243,-0.004279462620615959,-0.020512741059064865,-0.006946631707251072,-0.0026941944379359484,0.010775614529848099,0.018565719947218895,-0.003007622202858329,-0.013308489695191383,0.021564042195677757,-0.002796269953250885,-0.010052744299173355,-0.02053438313305378,0.005811529234051704,0.00324440049007535,0.05007342994213104,0.0023459268268197775,0.026071349158883095,0.0456637442111969,-0.02146206982433796,0.02050071582198143,-0.01621152274310589,-0.0037330505438148975,0.0015077710850164294,0.004053729120641947,-0.012518640607595444,0.005028035957366228,0.019160188734531403,0.027091413736343384,-0.007997505366802216,-0.06230811029672623,-0.03779023885726929,-0.0016847921069711447,0.004708516411483288,-0.016163809224963188,-0.006259354762732983,0.03144799917936325],"object":"embedding"},{"index":1,"embedding":[-0.025758948177099228,0.012529470957815647,-0.0036885219160467386,0.013843787834048271,0.037662822753190994,-0.002338479971513152,0.014036386273801327,-0.02571997605264187,-0.02729753963649273,0.023403557017445564,-0.025056499987840652,0.006940447259694338,0.005110990721732378,0.002051352057605982,0.009365430101752281,-0.004972649272531271,-0.008563087321817875,-0.04744229465723038,-0.007888401858508587,-0.0362674854695797,-0.04641663655638695,-0.006453453563153744,-0.0054247332736849785,-0.007706332020461559,-0.0316537506878376,0.030296489596366882,-0.03128792345523834,-0.052762240171432495,0.02158757671713829,-0.021084534004330635,0.04210008308291435,-0.009039834141731262,0.020920418202877045,0.011608952656388283,-0.027386372908949852,0.0006602472276426852,0.020277611911296844,-0.006371058989316225,-0.00742132356390357,-4.1149793105432764e-05,-0.026434097439050674,0.02487286366522312,0.005916973575949669,0.004006581846624613,0.013903914019465446,0.03047511726617813,0.010963551700115204,-0.0004852090496569872,-0.008918477222323418,0.0024200777988880873,-0.005843935534358025,-0.009319420903921127,-0.03840300813317299,-0.00996500626206398,0.0029545770958065987,-0.011163728311657906,0.01174638420343399,-0.01566792093217373,-0.02538173645734787,-0.017242424190044403,-0.02570188045501709,0.008348853327333927,-0.024366218596696854,0.012855932116508484,0.027172120288014412,-0.01550713274627924,-0.008245732635259628,-0.004089049994945526,0.011690033599734306,0.011521993204951286,-0.03591177612543106,-0.012615636922419071,-0.02868751250207424,-0.015085900202393532,-0.038233257830142975,-0.016448313370347023,0.037549398839473724,-1.5810148397576995e-05,-0.020648358389735222,-0.016178883612155914,0.02934243343770504,0.015080793760716915,0.034065019339323044,0.007480921223759651,0.00841328501701355,-0.04200136661529541,-0.024020958691835403,-0.0023532297927886248,-0.02087455242872238,-0.05933527648448944,-0.029153307899832726,-0.020886346697807312,0.0040543656796216965,0.03735136613249779,0.018253160640597343,-0.010190599597990513,-0.006286981515586376,0.01285966020077467,0.018434688448905945,-0.01497467141598463,0.032310742884874344,-0.07860245555639267,0.0018877912079915404,0.028160221874713898,-0.012849449180066586,-0.0030984075274318457,0.007885973900556564,0.013520868495106697,-0.023572495207190514,0.002127881860360503,0.011660636402666569,-0.006299937609583139,0.007196198217570782,-0.03473691642284393,-0.0029503554105758667,-0.027778655290603638,-0.03009990230202675,0.014822233468294144,0.004842456895858049,-0.019102793186903,0.020562220364809036,0.01187469158321619,-0.008432718925178051,0.041573893278837204,0.037788111716508865,0.008579518646001816,0.025191793218255043,-0.05494324117898941,0.02662293054163456,0.008876971900463104,0.004079464357346296,-0.03443434461951256,0.016408467665314674,0.01451954711228609,0.03553950786590576,0.0038041200023144484,0.0015072039095684886,0.04059716686606407,0.0009355077636428177,-0.017191415652632713,-0.004116380121558905,-0.03172164037823677,0.06326121836900711,-0.042410608381032944,-0.01892443373799324,0.000301255815429613,0.014980636537075043,0.008668444119393826,-0.006467134226113558,0.01782114803791046,-0.00831829197704792,0.044133491814136505,-0.0182215366512537,-0.04831685125827789,0.03808142989873886,0.040061261504888535,-0.038982439786195755,0.025533616542816162,-0.01174217090010643,0.019772527739405632,0.015522862784564495,0.0030584626365453005,-0.004236175678670406,0.021114911884069443,0.003085960168391466,0.0017570361960679293,0.001260936027392745,0.01698777638375759,-0.037901267409324646,0.04388272017240524,-0.005779674742370844,-0.006999421864748001,-0.0004813986597582698,-0.007257245946675539,-0.009489151649177074,-0.015425185672938824,0.03870683163404465,-0.001314341789111495,-0.01330617442727089,-0.06468790024518967,-0.03725465387105942,-0.03481857851147652,-0.029993493109941483,0.001782639417797327,0.014728524722158909,-0.023663615807890892,0.003847962012514472,0.016591563820838928,0.009149174205958843,0.013524849899113178,0.014362265355885029,-0.05420935899019241,0.015831908211112022,0.02472783997654915,0.011116784065961838,-0.02629142627120018,-0.006261439062654972,0.007880052551627159,-0.008645856752991676,0.0014268093509599566,0.014113090001046658,0.004895458929240704,0.010227800346910954,-0.03291991353034973,0.014134642668068409,-0.00833825021982193,0.021962054073810577,-0.027159973978996277,0.0009441711590625346,-0.023185022175312042,-0.0014423648826777935,-0.02066347748041153,-0.05037784203886986,0.011989530175924301,0.019780971109867096,0.02544422633945942,0.011617295444011688,0.05003154277801514,-0.06384427100419998,0.03010302409529686,0.010974934324622154,-0.02524236962199211,-0.04694395512342453,0.04317052662372589,-0.014662305824458599,-0.011110682971775532,-0.013760543428361416,0.032241374254226685,-0.021328603848814964,-0.005873484071344137,0.020389661192893982,-0.0020480805542320013,-0.036380380392074585,-0.003262253012508154,0.022140566259622574,0.014284894801676273,0.02966931276023388,-0.014425903558731079,-0.007815143093466759,-0.03838087618350983,-0.01601572334766388,-0.008720634505152702,0.00740523636341095,-0.010962577536702156,-0.01864113286137581,-0.03902296721935272,0.0023240335285663605,-0.03017006255686283,-0.010889565572142601,-0.00671680923551321,0.0002762922376859933,-0.0018828880274668336,-0.0048309871926903725,0.0182066410779953,0.034271206706762314,0.051186565309762955,-0.00884862057864666,-0.01352836936712265,0.0046797567047178745,0.01883058063685894,-0.013339086435735226,-0.0057356832548975945,0.031059427186846733,0.013298808597028255,0.01392305176705122,-0.01582452654838562,-0.007665578275918961,-0.04605823755264282,0.01951473578810692,-0.0003280778764747083,-0.017294079065322876,-0.007146188989281654,0.011400898918509483,0.02734067291021347,0.006338881328701973,-0.006668481510132551,0.05188588425517082,0.002703281817957759,-0.02523582987487316,-0.010897639207541943,0.01924540475010872,-0.0009212141158059239,-0.012981880456209183,0.028238492086529732,0.03482842445373535,0.027267372235655785,0.03475086763501167,-0.021356694400310516,-0.0003882267337758094,-0.02259952947497368,0.031467314809560776,-0.011028904467821121,-0.005698627792298794,0.010554694570600986,0.04053696244955063,-0.001511637819930911,-0.061206888407468796,-0.0029146643355488777,0.01215550396591425,0.006889894139021635,0.044212453067302704,-0.030752873048186302,0.004620553459972143,-0.00023938347294460982,-0.024459535256028175,-0.009339572861790657,-0.04982149228453636,0.033970270305871964,0.021464470773935318,-0.006805697921663523,0.026049407199025154,-0.01640831120312214,0.0077367620542645454,-0.04079772159457207,-0.016999192535877228,0.030637428164482117,0.00034822430461645126,0.020782500505447388,0.025917865335941315,0.045175231993198395,0.004338984377682209,0.004516663961112499,-0.03431222215294838,-0.0018257899209856987,-0.010955095291137695,0.004570914898067713,0.3870064914226532,0.026963500306010246,-0.035104792565107346,0.011724506504833698,-0.013705889694392681,-0.0509878471493721,-0.02112174779176712,0.008177575655281544,0.01993235945701599,-0.014281210489571095,0.017260506749153137,-0.045702073723077774,0.006509148050099611,0.0032414980232715607,0.005621928256005049,0.034762829542160034,-0.0007084138342179358,-0.020915701985359192,0.005990590900182724,0.021028028801083565,-0.045931894332170486,0.010121088474988937,0.0044517978094518185,-0.03989334776997566,-0.008309227414429188,-0.02713819220662117,-0.00228235125541687,-0.01568441092967987,-0.02216830477118492,-0.004598020110279322,-0.010677327401936054,-0.009580195881426334,-0.003543584141880274,0.03834174945950508,0.01644299365580082,-0.03651408851146698,0.0067563727498054504,-0.015657847747206688,0.0012091726530343294,-0.033857397735118866,-0.012780657038092613,0.005480979103595018,-0.03239237889647484,0.013967982493340969,0.03662465885281563,-0.03532421588897705,0.01288940105587244,-0.02662917785346508,-0.04374580830335617,-0.015550529584288597,-0.006989222951233387,0.011201686225831509,0.06042121350765228,0.007955683395266533,-0.003084216732531786,-0.011056994087994099,0.0037636784836649895,0.007206861395388842,0.027355395257472992,-0.00904571358114481,-0.04939938336610794,0.019223814830183983,0.04885827749967575,0.004720363765954971,-0.03998367488384247,-0.04003869742155075,-0.010004842653870583,-0.009810425341129303,-0.011637724004685879,0.01382185984402895,0.0011330196866765618,0.02921152301132679,0.007083197124302387,0.015879228711128235,-0.011928517371416092,-0.011234760284423828,0.0018301004311069846,-0.024675864726305008,-0.008007164113223553,0.05101221799850464,-0.01141275092959404,0.018010249361395836,-0.02040042355656624,-0.017251471057534218,-0.015094183385372162,0.024670656770467758,-0.007679453119635582,-0.0023301681503653526,0.01593824103474617,-0.017610495910048485,0.0392007976770401,0.039871010929346085,0.038008034229278564,-0.034386586397886276,0.03700798749923706,-0.02587129920721054,-0.0024405464064329863,-0.024259598925709724,0.007090513128787279,0.0037076836451888084,0.038092534989118576,0.002115082461386919,-0.0011044091079384089,-0.015718095004558563,0.0022297045215964317,0.025628330186009407,0.03330320864915848,0.011225000023841858,-0.01548957172781229,0.01112839300185442,-0.0005184286274015903,0.012068329378962517,-0.0018296351190656424,-0.0198866818100214,0.021056117489933968,0.042734939604997635,0.011327057145535946,-0.010904025286436081,-0.004531412851065397,0.0400407649576664,0.005563332233577967,-0.012673179619014263,0.0009829836199060082,-0.008927428163588047,-0.047734569758176804,-0.0014640727313235402,0.014513886533677578,0.014106206595897675,-0.02875625342130661,0.027171747758984566,0.05241311714053154,0.02950497902929783,-0.030510742217302322,-0.006987013854086399,-0.006407857406884432,0.03180888295173645,0.004917642567306757,0.010594794526696205,-0.025200797244906425,-0.018448997288942337,-0.0018395927036181092,-0.010068191215395927,-0.06761447340250015,0.03835010156035423,0.02366061508655548,-0.014682404696941376,0.022400829941034317,-0.05012622848153114,-0.02561725489795208,0.027008507400751114,0.0015325259882956743,0.05601796507835388,-0.05630066990852356,0.02009653113782406,-0.02773994207382202,-0.04563506320118904,-0.01889072358608246,-0.05071859434247017,-0.008834474720060825,0.0068897102028131485,-0.015094980597496033,-0.0444563664495945,-0.03613041713833809,-0.02099127508699894,-0.03687067702412605,-0.044355358928442,-0.010367853567004204,0.028472913429141045,0.01250379253178835,0.016446998342871666,-0.031522832810878754,0.0023249490186572075,0.018918611109256744,0.0017459378577768803,-0.019281113520264626,0.019197694957256317,-0.007465716917067766,0.04378819465637207,-0.012430009432137012,-0.007315130904316902,0.005798067897558212,0.026136348024010658,-0.05674370378255844,-0.02571779303252697,-0.011887992732226849,-0.01981491968035698,-0.010861019603908062,0.03535069525241852,-0.028128519654273987,0.004035569727420807,0.05296939238905907,-0.0008354758028872311,0.010797429829835892,0.027159707620739937,0.024418288841843605,0.01101562287658453,0.020692870020866394,0.006610993295907974,0.026814602315425873,0.04471895843744278,0.01140670944005251,0.0178330447524786,0.020213549956679344,-0.0070716277696192265,-0.04305743798613548,0.011643058620393276,-0.005915377289056778,0.03349792957305908,-0.026610828936100006,-0.004258973523974419,-0.02179308421909809,0.042003829032182693,-0.025853054597973824,-0.012385998852550983,0.002028633374720812,-0.022666480392217636,0.01318320445716381,0.01882292702794075,0.031063402071595192,-0.03805585950613022,0.035645823925733566,0.002151072956621647,0.007318989373743534,0.016153370961546898,0.04089585691690445,-0.023799102753400803,0.013497691601514816,-0.026399897411465645,-0.049984849989414215,-0.017662756145000458,0.03448191657662392,-0.008758445270359516,0.008639284409582615,-0.013155733235180378,-0.018071550875902176,0.019655385985970497,-0.013738088309764862,0.04678110033273697,0.027242839336395264,0.0018837314564734697,-0.030672207474708557,0.011950843036174774,0.029605276882648468,0.017911622300744057,-0.015331711620092392,-0.014341580681502819,0.024940475821495056,0.009718193672597408,0.00183775182813406,0.031651679426431656,0.027826672419905663,0.007948522455990314,-0.005205032881349325,0.02395801618695259,-0.03033900447189808,-0.026571951806545258,-0.03070627897977829,-0.011602534912526608,0.019729234278202057,0.018046380952000618,-0.019431443884968758,-0.00806436873972416,-0.007017528638243675,-0.0008441002573817968,0.008560731075704098,-0.01921754702925682,-0.005517745856195688,-0.007153145503252745,0.04134321212768555,0.0026307522784918547,-0.02331283688545227,-0.0027744488324970007,0.009677980095148087,0.021427741274237633,-0.004601431544870138,-0.00012251334555912763,0.028399625793099403,-0.006959706079214811,-0.01915843039751053,0.03018774650990963,-0.03351955860853195,0.06670859456062317,-0.03129318356513977,-0.009517683647572994,0.049102671444416046,-0.010580141097307205,0.01756119914352894,0.02052275277674198,-0.00034793917438946664,-0.05726324021816254,-0.021166298538446426,-0.005764365196228027,0.028409039601683617,-0.004559235647320747,-0.036898449063301086,0.016247611492872238,0.04555016756057739,-0.025495193898677826,0.016971617937088013,-0.0012656591134145856,-0.028013968840241432,0.02536524273455143,-0.016685131937265396,0.003650881117209792,-0.001630979822948575,-0.01653134636580944,-0.006658824160695076,0.03132772073149681,0.011927434243261814,-0.026557045057415962,-0.19315965473651886,0.006070801988244057,-0.018877672031521797,0.015526301227509975,0.04478176310658455,-0.0008945377776399255,0.013174171559512615,0.023236852139234543,0.001876345369964838,-0.009473146870732307,-0.0458466038107872,0.028369978070259094,-0.03175703436136246,-0.030467139557003975,0.05286461114883423,0.006947376299649477,-0.018354244530200958,0.013310008682310581,-0.010109184309840202,-0.014129184186458588,-0.0019312937511131167,-0.014013266190886497,-0.010930518619716167,-0.039712607860565186,-0.0027366008143872023,0.022063201293349266,0.041075583547353745,0.009186118841171265,0.018548376858234406,-0.021595891565084457,-0.00893919263035059,-0.007997609674930573,-0.011303680017590523,-0.00778892682865262,0.003854784881696105,0.0269649475812912,0.003425600938498974,0.0011551182251423597,0.014906526543200016,-0.0268486887216568,0.015963394194841385,-0.037813760340213776,0.059832315891981125,-0.012539348565042019,-0.024167275056242943,0.010521982796490192,-0.01648557558655739,0.004499785602092743,-0.0023810069542378187,0.006643267348408699,-0.001206551562063396,-0.009098317474126816,0.004006785340607166,0.016244588419795036,0.022345518693327904,-0.003811529139056802,0.00012655694445129484,-0.007302777376025915,-0.03910021483898163,-0.011724776588380337,-0.022477485239505768,0.012693922966718674,-0.014236903749406338,0.012715728022158146,0.013103259727358818,0.0066465092822909355,0.020985668525099754,0.013942337594926357,0.0061926888301968575,-0.03711562603712082,-0.04018467292189598,0.004651527386158705,0.028886903077363968,-0.003899460658431053,0.014873364940285683,-0.051289740949869156,0.023774413391947746,0.025767862796783447,-0.008617984130978584,-0.01755518466234207,0.04933374375104904,0.023852013051509857,-0.02684945799410343,0.0013523841043934226,-0.015365022234618664,-0.059762801975011826,0.02864656411111355,0.026391534134745598,0.03813229128718376,-0.012687886133790016,0.028539935126900673,0.08154822140932083,0.010055551305413246,0.011949121952056885,-0.013092302717268467,-0.026565100997686386,-0.012263688258826733,-0.03514808788895607,-0.008544047363102436,0.04167114570736885,0.0164664164185524,-0.021921271458268166,0.030826108530163765,-0.0005666292272508144,0.030772607773542404,0.028927890583872795,-0.026523489505052567,-0.040638573467731476,0.010861112736165524,0.01859780214726925,-0.02758798561990261,0.00662233354523778,-6.221868534339592e-05,-0.2581826150417328,-0.007566799875348806,0.023047540336847305,0.05015581473708153,0.022923756390810013,0.011462699621915817,-0.006452121306210756,0.01042680349200964,-0.045284438878297806,-0.03936319053173065,0.025846514850854874,0.01967019960284233,0.01158192753791809,-0.002621933352202177,-0.004696441814303398,-0.007103266194462776,-0.027700381353497505,-0.01727375201880932,-0.054769087582826614,-0.0009374514338560402,-0.0020084483548998833,-0.029182057827711105,-0.02928612194955349,-0.013479417189955711,0.014092243276536465,-0.02705872803926468,-0.2062506377696991,-0.032158512622117996,-0.001065562479197979,-0.0021600360050797462,0.010404354892671108,-0.004580553621053696,-0.018738871440291405,0.006836488842964172,0.012025109492242336,-0.006518018431961536,-0.015243074856698513,-0.014231253415346146,-0.007296913769096136,-0.029546253383159637,-0.0028502221684902906,-0.002059105783700943,0.007829741574823856,-0.004269144497811794,-0.003506772220134735,0.0058273510076105595,0.038228943943977356,-0.012362856417894363,0.009196849539875984,0.0353967659175396,0.019691014662384987,0.043394770473241806,-0.02336663194000721,-0.02038705162703991,0.010309695266187191,0.010493269190192223,-0.0331498458981514,-0.00010303814633516595,4.527062628767453e-05,0.02266409434378147,0.0237970482558012,0.013503585942089558,0.033019356429576874,0.00894979014992714,0.026262132450938225,-0.0324513241648674,-0.0023145636077970266,-0.023432565852999687,0.025271620601415634,-0.054976947605609894,-0.04756287485361099,-0.0010525790276005864,-0.011116070672869682,-0.013173092156648636,0.013781415298581123,-0.04248414933681488,0.03725264593958855,0.02580961212515831,-0.012125491164624691,0.02321331948041916,-0.02967040054500103,0.006719142198562622,0.03681555762887001,0.012434516102075577,-0.020225614309310913,0.0033314889296889305,0.045238882303237915,0.0066699073649942875,-0.012408467009663582,0.00021850998746231198,0.019060451537370682,-0.0006506550125777721,0.01005454920232296,0.01281825453042984,0.00896813441067934,0.0012294386979192495,-0.019075196236371994,-0.010988892987370491,-0.05445272848010063,0.014546976424753666,-0.017002645879983902,-0.0025320511776953936,0.010421212762594223,0.005355092231184244,0.03140374645590782,-0.026313388720154762,-0.012697379104793072,0.02073219232261181,-0.030334170907735825,-0.002526636002585292,0.0777592658996582,-0.0059554907493293285,0.02468961291015148,-0.00607061805203557,-0.02240404114127159,0.006578207015991211,-0.08804464340209961,0.00022360611183103174,0.015509969554841518,0.0393218956887722,0.04558814689517021,-0.02600737102329731,-0.021574974060058594,0.017614254727959633,0.026419052854180336,-0.04863389581441879,-0.0016794393304735422,-0.016488557681441307,0.010242369025945663,-0.03042541816830635,0.05223585292696953,0.04129870608448982,0.01913716457784176,-0.041871797293424606,0.0030736117623746395,-0.01691257767379284,-0.013012166135013103,0.00914959516376257,-0.0024987095966935158,0.007190996780991554,-0.025641370564699173,-0.010286902077496052,-0.007655346300452948,0.013065553270280361,-0.034356068819761276,0.015048309229314327,-0.02974660135805607,-0.005650005768984556,-0.038438260555267334,-0.02338286116719246,0.011432373896241188,-0.026035446673631668,-0.03573842719197273,0.008249914273619652,-0.0048288218677043915,-0.009025415405631065,0.03204389289021492,-0.052015554159879684,-0.0005947394529357553,0.021108917891979218,-0.022609738633036613,0.007677216082811356,-0.002741162432357669,0.020198849961161613,-0.030973486602306366,0.022916922345757484,0.03197067603468895,0.0075868177227675915,0.021733008325099945,-0.022171737626194954,0.005577221978455782,0.06291462481021881,0.010051161050796509,0.005346635356545448,-0.0051164403557777405,0.0022031276021152735,-0.024477621540427208,0.020949041470885277,0.010851479135453701,0.038324132561683655,-0.006827448029071093,0.03552427887916565,-0.014253451488912106,0.015789812430739403,-0.008592965081334114,0.0009922918397933245,-0.02933741733431816,-0.006749261170625687,0.0038825541269034147,-0.0180740337818861,-0.019547542557120323,0.016794750466942787,0.01443388406187296,-0.01414264552295208,-0.0030532937962561846,-0.03292255103588104,-0.014052394777536392,-0.02198878861963749,-0.047747328877449036,0.0030371444299817085,0.021263878792524338,0.03646152466535568,-0.019917698577046394,0.0015535950660705566,-0.01240338385105133,0.011204435490071774,-0.004732639994472265,-0.005655153654515743,0.012495842762291431,-0.02762053720653057,0.0033291024155914783,-0.043057601898908615,-0.01731264591217041,0.009004561230540276,-0.010167465545237064,-0.017755435779690742,-0.006926957983523607,0.016514629125595093,-0.009980103000998497,-0.013384087942540646,-0.02238798327744007,0.011801606975495815,-0.02240007556974888,0.03967168927192688,0.005245546344667673,0.004888048395514488,-0.019460370764136314,-0.01258539967238903,-0.019087960943579674,-0.0111539326608181,-0.02416262961924076,0.0175357423722744,0.037282995879650116,-0.009718337096273899,0.004204864148050547,-0.05133983865380287,-0.01688362844288349,0.007046089507639408,0.030954411253333092,-0.04153471067547798,-0.045260824263095856,-0.008186589926481247,0.03154851496219635,-0.011969528160989285,0.0371565967798233,0.025364214554429054,0.006151722744107246,-0.00727783003821969,-0.009958743117749691,-0.009278294630348682,0.007596738636493683,0.01336624100804329,-0.021447397768497467,0.02054646424949169,-0.02611776813864708,-0.00033270398853346705,-0.03493153676390648,0.019608505070209503,0.0039603435434401035,-0.06740758568048477,-0.006607137154787779,-0.015215092338621616,0.0280825924128294,-0.01991902105510235,0.03201878070831299,-0.04012446105480194,-0.3158552050590515,0.01535746268928051,-0.036682210862636566,-0.010678562335669994,-0.019429007545113564,0.021722931414842606,0.0052073015831410885,-0.01830298826098442,0.011535142548382282], - "object":"embedding"}], - "usage":{"num_images":1,"prompt_tokens":77,"total_tokens":77}, - "model":"nvidia/nvclip-vit-h-14" - } - responses: - '200': - description: Invocation is fulfilled. - content: - application/json: - schema: - "$ref": "#/components/schemas/EmbeddingsResponse" - '402': - description: Payment Required. - content: - application/json: - schema: - properties: - detail: - type: string - maxLength: 256 - format: ^[a-zA-Z-]{1,64}$ - description: Contains specific information related to the error and why it occurred. - example: You have reached your limit of credits. - type: object - title: PaymentRequiredError - '422': - description: Validation failed, provided entity could not be processed. - content: - application/json: - schema: - "$ref": "#/components/schemas/Errors" - example: - type: urn:nvcf-worker-service:problem-details:unprocessable-entity - title: Unprocessable Entity - status: 422 - detail: string - instance: "/v2/nvcf/pexec/functions/bc205f8e-1740-40df-8d32-c4321763498a" - requestId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - '500': - description: The invocation ended with an error. - content: - application/json: - schema: - "$ref": "#/components/schemas/Errors" - example: - type: urn:nvcf-worker-service:problem-details:internal-server-error - title: Internal Server Error - status: 500 - detail: string - instance: "/v2/nvcf/pexec/functions/bc205f8e-1740-40df-8d32-c4321763498a" - requestId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 -security: -- Token: [] -components: - securitySchemes: - Token: - type: http - scheme: bearer - schemas: - NIMAssetInfoResponse: - properties: - assetName: - type: string - title: Assetname - description: The name of the asset used by NIMs. - url: - type: string - title: Url - description: The url of the asset being used. - checksum: - type: string - title: Checksum - description: The unique identifier for asset. - type: object - required: - - assetName - - url - - checksum - title: NIMAssetInfoResponse - NIMHealthSuccessResponse: - properties: - object: - type: string - title: Object - default: health.response - message: - type: string - title: Message - type: object - required: - - message - title: NIMHealthSuccessResponse - NIMLicenseInfoResponse: - properties: - name: - type: string - title: Name - description: The name of the NIMs license. - path: - type: string - title: Path - description: The path of the NIMs license file inside the container. - sha: - type: string - title: Sha - description: The unique identifier of the license. - size: - type: integer - title: Size - description: The size of the license file in bytes. - url: - type: string - title: Url - description: The url of the NIMs license. - type: - type: string - title: Type - description: The content type of the license. - content: - type: string - title: Content - description: The content inside the NIMs license file. - type: object - required: - - name - - path - - sha - - size - - url - - type - - content - title: NIMLicenseInfoResponse - NIMMetadataResponse: - properties: - version: - type: string - title: version - description: The version of the NIM service. - modelInfo: - items: - $ref: '#/components/schemas/NIMModelInfoResponse' - type: array - title: Modelinfo - description: The list of information of models being served inside NIMs - container - default: [] - assetInfo: - items: - $ref: '#/components/schemas/NIMAssetInfoResponse' - type: array - title: Assetinfo - description: The list of different assets used by the NIMs - default: [] - licenseInfo: - allOf: - - $ref: '#/components/schemas/NIMLicenseInfoResponse' - description: The information of the license of released NIMs - type: object - required: - - version - - licenseInfo - title: NIMMetadataResponse - NIMModelInfoResponse: - properties: - shortName: - type: string - title: Shortname - description: The name of the model served by NIMs - modelUrl: - type: string - title: Modelurl - description: The URL from which the model is downloaded. - type: object - required: - - shortName - - modelUrl - title: NIMModelInfoResponse - EmbeddingsRequest: - additionalProperties: false - properties: - input: - oneOf: - - type: string - title: string - example: "This is a test." - pattern: ^.*$ - - type: array - items: - type: string - pattern: ^.*$ - maxItems: 64 - title: Input - description: 'The list of images or texts that you want to generate embeddings - for. Images should be in form of `data:image/{format};base64,{base64encodedimage}`. - If the size of an image is more than 200KB, it needs to be uploaded to - a presigned S3 bucket using NVCF Asset APIs. Once uploaded you can refer - to it using the following format: ``. Accepted formats are `jpg`, `png` and `jpeg`.' - examples: - - - The quick brown fox jumped over the lazy dog - - data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAEElEQVR4nGK6HcwNCAAA//8DTgE8HuxwEQAAAABJRU5ErkJggg== - - - The quick brown fox jumped over the lazy dog - - data:image/png;asset_id,87b132b0-08f9-43ea-8fab-f107350a5d00 - encoding_format: - type: string - enum: - - float - - base64 - title: Encoding Format - description: "The format to return the embeddings in. Can be either `float` or `base64`." - default: float - model: - type: string - enum: [nvidia/nvclip-vit-h-14] - title: Model - description: ID of the embedding model. - examples: nvidia/nvclip-vit-h-14 - type: object - required: - - input - - model - title: EmbeddingsRequest - EmbeddingsResponse: - type: object - properties: - object: - description: 'The object type, which is always `list`.' - enum: - - list - title: Object - type: string - data: - items: - "$ref": "#/components/schemas/Embedding" - type: array - title: Data - description: The list of embeddings generated by the model. - maxItems: 128 - examples: - - - embedding: - - 0.1 - - 0.1 - - 0.1 - index: 0 - object: embedding - - embedding: - - 0.1 - - 0.1 - - 0.1 - index: 1 - object: embedding - model: - type: string - description: Model used to generate embeddings. - example: nvidia/nvclip-vit-h-14 - title: Model - const: nvidia/nvclip-vit-h-14 - usage: - allOf: - - "$ref": "#/components/schemas/Usage" - description: Usage statistics for the embeddings request. - examples: - - num_images: 1 - prompt_tokens: 80 - total_tokens: 80 - required: - - object - - data - - usage - - model - title: EmbeddingsResponse - Embedding: - type: object - description: Represents an embedding vector returned by embedding endpoint. - properties: - object: - description: 'The object type, which is always `embedding`.' - enum: - - embedding - title: Object - type: string - index: - type: integer - format: int32 - title: Index - description: The index of the embedding in the list of embeddings. - minimum: 0 - maximum: 127 - embedding: - oneOf: - - type: array - description: | - The embedding vector as a list of floats, The length of the vector depends on the model. - items: - - type: number - maxItems: 1024 - - type: string - description: | - The embedding vector as base64 string. The length of the vector depends on the model. - format: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$ - title: Embedding - required: - - index - - object - - embedding - title: Embeddings - Usage: - properties: - num_images: - type: integer - format: int32 - title: Num Images - minimum: 0 - maximum: 64 - description: Number of images passed. - prompt_tokens: - type: integer - format: int32 - title: Prompt Tokens - description: Number of tokens in the prompt. - minimum: 77 - maximum: 4928 - total_tokens: - type: integer - format: int32 - title: Total Tokens - description: Total number of tokens used in the request. - minimum: 77 - maximum: 4928 - type: object - required: - - num_images - - prompt_tokens - - total_tokens - title: Usage - Errors: - properties: - type: - type: string - format: "^.{1, 128}$" - maxLength: 128 - description: Error type - title: - type: string - format: "^.{1, 128}$" - maxLength: 128 - description: Error title - status: - type: integer - format: int32 - minimum: 100 - maximum: 999 - description: Error status code - detail: - type: string - format: "^.{1, 1024}$" - maxLength: 1024 - description: Detailed information about the error - instance: - type: string - format: "^.{1, 256}$" - maxLength: 256 - description: Function instance used to invoke the request - requestId: - type: string - format: uuid - maxLength: 36 - description: UUID of the request - type: object - required: - - type - - title - - status - - detail - - instance - - requestId - title: InvokeError diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/CLIP.png b/tools/inference_builder/builder/samples/nvclip/optimizer/CLIP.png deleted file mode 100644 index a1b5ec9171fd7a51e36e845a02304eb837142ba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252444 zcmeFZc{tSV`#&tQWUY|MnuLV16|yBuNp`X;jGgR^m{4i4rU==yFH?+tPg$}X>)65+ zW{e3lmSJX|x9;xycHf`x^ZS1Od5+_Gj^p{G_c2Gz^**ojdY!Lxy*$^yqs2teMNdIN z!E{smh9Lz7oeu>CC4r6x_#gfIi|;8Y_$hAQP%{p)S)DmHan2-ki)=d}ed!_<6=S;s z9VLAZou`^$;UlgZ?_?93nnuP8<|EG0L+8$S#Eia$W910BeoA36*tNLiPN0duNgxDW-*|GVs9XUrKkAWbJLi9=XX3aj#gU`` z#e+*=(DjCx^HEAV{znx5`{U6GNxKFOjS}XmZxv^f%KF+=*sI65+^9&LyFRUP~dC7URe98 z6G-dr14+$B!l;iO=n0(%8b=mc*wQ>@9UA7;7RFT zck4K)Q{bP7%`yxh_e#iCs-O&8 zm)Y+@gY+L*u}F@nUbofXq`aWST`^)Eccn6NL6B6FQZykQZ8_^-yQelDkds36J1yz+ z7}1!P(j?K$+vl*k$OSF?8lrx$+;_okPf>c$IcB`O=)@t2+XWrHjuP_iTjjCll`=o0 zVzuEVil;*feV?Tb#y|5JFkN-VN>}dTnP%TbsECnk_d(U6riT zs~D-PaL3aRo+fUEvme80TCMA7Lo#ablrX5 zco6iY;Y)GVX0NSS_mfhZM3uLs`&JPbB+o5Q^z`0t5p;$xJ>}JAnvwCXyDoxYLlmRA z>Z@v2Fbw`6l|K~OVZnc{D?9Y{x$%p~EMk$Dq^Dlz=1Zc?KJSSHr?Vr2%2TY_v1d-6 z>_&eG?R5`NQIh|dn-p26&`g8zg{3r!d>jbrTa9RB9l>p5!77DfKQ~%rt8$lJHp_Fr z@}XZ=hjQCOW$Ni!5IB-I)oX=|0M_VyMuu|VvHs0H;q#~HijtQ*b%@VWYKVH*en5Js z62LbzEW98CC0e)unCo`ALf5>?XPKE^-m)zpnlPM#8|UI_nq#GQ~9_IT{1*sZ6+SJ*XV zFmv!Gm1}do;;qMh*^4&yUz%p4cF)XlNxZCkc z+1~f1Z}uVf!imS5Ne=a961+P-z*jX{9H$*Xd!3bjwZh?519R^mD;Fl?W|XEHFF|a49J?GcD+zxC!mkZfd+}+rlRwm$a({t1|?s=!ebj<}6Cu~vCkkWLC*={*%(Cj>k_ayRX zi-_AzDshj&fvtC+Sw4{Ofv_@_cuv|W$qYg-yB_RyR1(e^A$OZP>SBXIU2OggpGj3g z|ALmu_-F6KHbD`dLm7;JWzA{?bL)s1KaXNXXz7f*)|uD1JV$8ELJDjQVFh7i!o6ax z<4BP)tpAvlrfgTjs326TGI*VtJkV=nTe{~Of-khvGJkYbzCtLC_q8*4?`yrDJo6u% zE+`Ic=c>HK1-k4hwtJGY((LEzJp|O4*;Ut`JFV;6Im{^+_`k!7C+93KALAg-HR?(S zIG<;!5q-CzpUi=A0O`e$bFE*?vY#gP#07HOO7go$R4>$>>z9#+gM;-hNn3Aj1kprK^}4I` zrlxdX*TG!797aqB1vI3Hi$CCTDexc9Z|T;Hosl!|zHK=?1&KjxaTd+ggCMR$k9r1X zG_aC=TRz&;Q5LgWOQ^B18Nqr}5Bl3hk_8=|`U0wY7ni%sU>+>eiWh7aw+JUeQU+80 zkY$pe4j=JrTGjRKs78WEC8cpx>g192Dv4MXs{IH@i4QfAV_T#7A=5KU6>wsiYzaq4 zfO&Sg=Mvl-$7c;CH^1eC`j_nK{$Rlk+BI$Co8hbK^}=KLpB4cce|a8Nif{t;21>|6 zVe5>yw5;ji#5s>$`k0t~?|9JePIX|gZh10Jk$2=fJ7@crMGswB$vNzW7%JIQDigh? zpIMFw@p)bV3!^NI?T3Sm?85^00qXYjw$@zK8D&lSyq)N3;v&nOuD2KpImV|1%L}Qr zY|0z=J*PV|4pzNgbz(-kxTP@Qy~W+-Q{a}zV^Y@#&|5}*ZKITqL6C<$#g6A|Y$CWd z+yqg9b-ZljDqb;ei~_PvXQ8?_m3)r|mu6R*C`0zP3C&^~@*`;fT0*?d5=y7xbCnrB z4>jClSZ<9M6rajbcsmPIra*#fXNNHo+(PW*j1bh z@;7mg&mA9dNH_BLBx2L6ojNk18>4%-tK36>pa?J-JxRR9%s64ra+C&o^XLV5xe4(* z@7joyb=SrDHD!JMg?BqynJ@Tm>y9xeE-@a2V`G=C(ywB;MwU?a;{zH9vu|ZRI=_u6 zi$1)OKPs$s6c>oVIc}D})_i>eIe3rgZ$EbrM4nxwR+;L>saH;srhAoHgQ9sBC99(*KJY_%^=<=UgJIf0LelCOEmR!Vk~e?k_8!kSU|mU3Mp%8QE| zJ%=AjYAIrA=4*ixjvd>H{3-J?`E5#m`)XAm;o4A$lDu!6Vif4}P-ua@a1AU(eQ!s4 zecxz03XJW!RJU?00p7cs@R@Ixr=c7 z!oRZVjI3`yYd;a@#+mKU9$2uVWjK0cHr@xllAWp-$XU7NQ$V`+kb4}vRt46-wKyrb zkouBj?OzBLVlL;Sk_{NW2y;n8>2Y-6S3Vohvs}O} zju#8PgNN+|>}~yF4STm1cUof5r(K{1>DRG(5c#Eeeys$=GekBb$5j}L_7Pb6;@=7T zX3zrFE$J?-4ho~mPcj-Bt|Cbpkvn^h(YHK_%~--N_pJ;?oPu#Bd>2+E_r5-UHmzK) znCrdkOHU(l>$W5ZreUJBzeCepBFpRwHY`Z(o($0|(zUx=w^JX24zGf|bhGIWoyCS` zJf7V{NJ@4MVVx>sF>`tYQkATY`j6){sRh`hN62>qrq~?f<6J|!6{?b~%=&CHS6nPr z)R>801X?LXrSC#`Sr}q_VMpLjAlGOGTp61Q0$l-n3^iq`YDr?y-!trNe+Pl5Kd73< z+b5;0MBVft48Ip%g3E<+4)t=7wz#Al_(@Umobs@eBuDe(Et)E-+XTTMX{=O7Lc{Ty zmqf0YoT~)E28~Xer#1Rv%!C7cY@5IDC@AF5Qj3zCK@*Nx-+Nc8tH$so@m1*Cz%qgqQF8qb7i`yPF~3O;!%)jd zW5BOQp5c46qsBZlhtSF{DAnD5wsx})SK%_o(Ztf=0bzq;rghRx3LjL4AgeU6WaKV< zjfqF=$&qnea10Gu;!#pSMgVv3Ppli$L+ckdI*Kk7%W~vKLLj?$h1_JFsK!hfn6Q8b zov-msdvSLS%jN9K-}Cfva?-~N#A7=uJ1*1j^K2VD$ZjC|9=E-q{oH~UFC(;2Q#5VQ z>Gmy4fakTktaND6v>mW0n|)=2XSPSkVRA8nCiY(uY@Z*nu$+tJPE}K9If5K5^m`cN zJHrCzN=Aupd!|9K_z>nmccpA-s$mV^hncYA@S-(8j~oNytYmgobbOeR$NWiYxVol! zTDh7^zH5@DN3dFKPSpwO%f{%NAs@ba6`;=1pW2a@V+;1M(A8{ zb9jJjZ-!Gr#5S7I-+c=$jntv-EOPHhqxSiuKxuw`?iZ~K26_#u0KeY=rgt0l8rA%+k6Qw3WuyWTYG#Y9q0T{qQv?P%SwWmab8 zKkraml*u3U>7=V(jV@Mqo5DO{YnP-jz7EPy&7WeEX&BynXVPbtsX?Fcv>MuJ88P#l z)a?c-&DEG8sru~PxGz`zHd{)c(#XqbZx(Ql!k!2i9jTXF=``D>DoOef0X8qi!${?FTWxXWjxQulMSHAHs{tK87&R53Ue9PiJLz# zyiSn9V(B%Pb>8Pkj3yiDl2=$pWUI2SAI%<5kh^3YuknPVW@V@4&We@NP|jYTN2+xDZJB8lISUyZH#KQ1WsKkG*gthi>Iom#wfNNS0VbotGLJ@7Rd(4!r;bL*VKh7Wr*4b26T_SG`ko%aR|*()!D5bbioq<;=#@#Y7T0 z6=bX7krz`v)a-*}X7>5;vdkl;98K=seCsBagI8_+g~b!Hy~8$W2@dhef{ zz+B7N2tHg>tXCMYC`ZkJ`w)+^OszAlQYF(`_r1;LNqI>4c^EFRGV?uCPQ_Xx0GRC;`T96kJUz+z0j57&@*9_XZL1;To6#4}Co=mX zBJv)yXBOKc=9I-{-%sA2R!U)%c-$=M=T&kkOP895X^#KMWDLyIkEzxTBMjI1m z5m9RXNG8bF(m7teGkJ=oaU8`PAI0E%PDK!W%*Xjd5oxR7{b;Fhn8=c|yO@J?EfL-qA zl~KEC##4kqGA%-CExFM`bGAU!XZHteFgA>TOleVW=`A}_#Ny15y5P$u-~3P;=clYS zjZx(I+X>^S*E6nCgtV6TeJ$sCuMN*t0yv!u%+6E~4(0XX0R&MlVQ14(cF(7HX_k>vBc<)tW!`gy$Wrcc^R<H5G5G`N@#$8IQ6zY-M~dcw~(2tFp{zw|S+Ylx*gmFbfQDcOrC z0+m%xwA^5LtCIG3t559ej_ozC=T29(#m-N!_0eamy?eFZtt-G4YA}{$^`nEFQ!e?~ z#f{PR!$R{lSN(+~?qhYao>c06+BuSVgpB^M-RPWg;b1AhL|&;2r(|52Qb^=AmbG|>kJhU zT=IN(eJpZr;{{)~$5tdW_!}C!+bo9#WxBHMp1+Vn z8yz3_tF&erkh-0i$+LvWCW%KHX{IwDeTX6-Z5JvTMQ@Lnu3iSfiv zm52&OHX;sGqdg^4)odwctb=tub`;VB5UElWuj#~Udg+uuDoRUfs9cxDpl(w2Ypv~u zD`#-#sjxG~9PsGkZoaXamwd|J+Yy$$R{_YtbRw>xBtHnyq{(;f*mL+P#S8B|C=ND){`b9gm=2%|U+aqM6Q~T6dT( zbj9jiWD6pL}V4C$v9r|vCy(de=KD!>;ozi#A=W!!?lJ=K= z!=Ex7z)>yU|hwP3$x|Z^G%$x1T#4?Y*5vGV`xH)L4uPdAXNpoR=M{1HT+{N`$ za&$g1kbW05|y!ShE`g|t$U~8AH`Y220a%TX$^)&1q ziB&Q<@)Wswz~{D2E+10c^3>+sIV))8A!EVL{kz3(MFG31pe--=tB=k)PjWA5xo!jx+m7V zD#WSND_3SC)pfbF-vpMFZSOEDC^P0Oo%BOovQ)TrX7xSz+l?O4$L?T+Rh0z5LOL7x zuo?bc{e-nMqno%#;bDWfJyVYusl2LBF$`hySq{<|m?w9Y2$`7J4__1xYZdG(jZTe< zO*8B1LQ6upGflLHS1*9$wbNYfQ=iEG0^qCCm=$G19(+e5!;9occ&E+f?^Oy9f8)-- zh$1H=f_r9mk93hSl~aQS>_4?Hl!I6H?(uekwD1;gZ@dwuT~~iH16shhp9O2*(Q%0K zGzWtD%XOy}2HPVW!E1NUk|@Gcva$)=O|nq_Wb4_k0<~ovPL_svj5Sg`CV!C@!(jRg z+CI|I5$>5E^P%R$DG-C!I1*otr@tHSRZSr`|V|0?ESFT8fzV7aais?Su<%I?w_RBN*1YQaq7x=;Grh)j!}XS)M^kAanpR!{pK;-419V@=Zu)f)Vu0@< zL8pDEQ-64tWoNmF9l|q--1Ten^c6VE6c3~Es=-i$^3Uc}H!f&trzI{KJiFmBL@e05 z6Pin|b<~?C0XVD3(B6m?r{8m4IaLFYAM8h2lH<*({reeWuoY3oE1~(<&l9jN=y#|f zi=GMH?A!5zi!|T$4wW-TE)IG%-B77^zE;@!v?WhhG_&zDz z+-_EkURDAAsc}HifETlw!^#^&cc*SB8Z#s&Q}Re{sZ)E7SN!tNrjV8AnQ=aPe+dv$+ zh9`!d-&135d73dM(eeZOy$~nAAnEabAPKn?1K}Q}nvt3Zf{5*SfbJZt2CSpV4^kl> z=ApOZ1(6a?e1DW6xFiO}yR!Xx@VU8DxG#n-xWO_2gUv@FLdrL7T;(TEmDQ}|pBsIo zZ)+DaDKqGE_lWMwNKx9KPQ1rll3U^|Jd&n^;6fq6>m`s*fY->eMIxVD~>L zzKsEABsuifMB4S76VIqRjc=2XP(^vZ3;tx4ti!dt9jC|Y*vcFM-r9Fm4yh}t=*a3` zv;u*IKa-aS7TyLZlWA*#==KQ3lWREDh>%-KC4GPhFEZ4R93Oo=-7DmRf!CTXE<=MW z=aT$ekfTx+jkwQb|5;}6Kve(rlH~8y@-N0TVeejqO_;X6pW0GcUxgO0?8ebgdX=(B7TwVX$N;^qayTnDw(FJk?-_M_M-)ZGx(J;`mwkIjl%aK<8#X|rb zu`nUmee__vGgw47?YbyE#cq$*lP&1f0JP5x2qH^DNmZh_mGQJHcNit_4DV0Dt|4@K z8|gPS>1SEStHX24HV`F}gfK28tl?KWpU1tA=4;edz;2I?(vWaB>)tO!!n( zW~t&VN5zx`+t;p9eMV4o!|nEjumK_bE*G`BRrd9zQCx!L%gk%~A&CMR=A6=5$eGUW z6s3x-?MQCEjkPbZ@tw%qD!3C;J0on3GoZ&^4ZK(2nl{HfGb=7bcTNn0s&uw1=>=Rg z&Qo*aYN*%iYb}Pgfs$QpDaBn*wb&&`Hgh;&voa~c^Nf9CixGOkdq4295Usz{X^L>y zqu{b+=ckWfo>ZxK?Iqes!%qSl!)aH~viQhk+vIFL`BhaySvihKRiI9!Ce6lZgw*+h zgX6oPiYqRdm(q7e08^u-kck8#;&zJLobxA2`fm4psE-l>Gx@ysXSU98z3$q1^ZBGL zQOE4GrhhuqdWE`%8?QoujksV*95KatGs#_B@s4SHZZzUqe^FL6Di-|gcJ)j(%mUPM zh*@w-)|&C{P^JR$7)*^&-R&CN0j46MaZaQNA!U_Tegj0g?L^}(a1~O$I7sr}Tgg@l zopmm`&}Cq{XO+hOqwZ@jY@~JyXT9)KqVkLjUj%p4Eaz(6ulQV*in{&@eLmQzu4qy~ z$A2ez+$+94^T?tvD4(xW{R(lXRPuwTQLAbsE?zhL@m?cOoSZb%2V$FQm!TvnSw-A@ zA?ft7-HkH1nUY`>=z@Min}-GE4V@rodA6z<4?>%*O0gS*=y8laD3wO9GRt}87{nzB z$%591;C7A6JZCn65rQJt?5qQuZ|lKtZjdXG)iP>{s=?ydm3SGx6z7Y&;wla*m1Y`+*042@q9#d(nk}F zwu)zo=dzc@i-mVLC~~#?1ffX@qcs*ZrdZ1w(Vh6J_Z}N}foMa@Rj_+=Mf&D=3FnQf z8-6}6JW3zQFC{ppd)!Lsd|t0NGnDB(Y0Ny}ylkq`3zZ-l(+^rbYHm8SSb-{JJ>UWk z_<;EdYkA)?KRI-f_rr!d{oJKWxVpks$IL%mgsizv=Z;Qv1H^2`8oLK`e0R(T7i{!X z>JL|udM;j8@o|!&x88s-M8B`$X;>sTiDjDWZN0g`Mt?zzm~IK*E$cMdhR2kgF18M@ zIya3f2n(f0VKgpbS!&sgPo(QTz=(NfY#eFirGRZSez-W2+hXjK?)PG0UYLXz0L0@t+f_^ZU9IE^dItjq-#y z`d>mLfzXZT>+jI**OUpP4gY(aoR5z_q1UubM#W?pBE#ZQPHq-WH^z@k@m{oNw1g$i zH&z0KFh45pRm_!u;+m18_A{m$uD(?M{V}cxq_tBLq@@&}IQ%@u;;JLaDYE(v)ps>ttyaOF=aq5z>6 ziV1VqYreDnV(-Xq=~ZL6c$a~u$FIPv%(Cwm%VJSj&bMf}E9eJ6vEZu7QTeYyb59;J zJK}4|HBu4WVaHJsL0fsAOWRJpCe}Iv)HP2=UZLp$e5I^HG+my5l=M>@meQlQthJaY ztuwM&jA?AYmm|_-2_*oBi!BN()%DlvTU)LE1t>j?am*x(y=ZL#t;Nik_(Nc-0hd1T z&%jp=yVdSiql3QEwVo36D0>m*!m3m>-19>cnlrxAQ%UpH{9deCCzWO(FVk6=%u~5g zc^vIK(ks^PfZe4#B)T&j-z_^!fZ+-#{B4!{vzAOg)`m@t>Fl<93cHB^M9rD=#y^(RXzaiovPMwWk&)O1Gcq(qu z^Pt)sPe-OTiOFP}uF|YW= zjh&un{kgKDk_<}s8Z$Ej$R77ySVDuxjF?GmiEAIY9zbRlqijm}%EyDrKlDP2By}tz z4Ogroa5os+^E2nfM7}{+I1ix0z~ti`pYtH1<;lZ!+_>caixihuq*py3?z?HEag9*2 z>H0u!9{+xx#kAXgTT!zE+J&NK_emlQ-Nkjf-rkwZf@AjQ)SS3;;%$in>O|w^!7S75 z$JLE8ff41EjPWYs#lu6w=V$~78)e}y@*Cm#;V%%?@+9m5l2pqn6JPL=hE)~bT^CKo ze=18aOyMP+om_rIF2AwozaB;}t91GDOC9aBDqJj|>rj@?J#Gm6(ITYrQ7lRBf*Lcq z(l|0mSEyvK$AiB5q3~r2!LAbzd@C3Z4G78}dpx4Ezk+mS8kzY3HL45wV*s7X$$`X3NYMf@sg{A3P+eVHJe5i|B(;jd_|xG z_-%lKz$|Y0yxYp->MtNk71!eCJkvv}w|~APg=mY{l>_iS$hy_XL$XtvgokbxtDzu! z4!PpHDckDMj^flD)Owh%Ep%uVL5dy*XZdCXX2gTRH6dC$4s}ub_~7!bT}w_39DA9- z7&ry=)PG#%M@r7*E5JY$o8;|t&`<&Fv42+EEv_#X*M@fUZEmK{=m8q=&u-oc2q6fd z_eqSDo+?cBxG#Eod*~=HVr`k^6^oaHbHfo7-ABtZUJR!C0X^N78Ju9fAzb2fc8gfo zH)!So3Nc;uK09vnqTJq|RuuYROUo_}J*L@al=X-F4dX$LHa2|Ct44bHowR;@N6_&N z{YG3Q&8R0l%Ow0r-$*v+MVw$&l9xAClEWi@titsOZu+O^A}L%82*p#YV)U!E@lO%u z0fjR_vRedVUwG{tUmfJPW zBWThXzQitjuN@ywDwnl^gXp?LBunU!l9HRybyjJVa8vU2snxkDl$fqc@z2EBNbp?u zKvR@e8rwudCK`Ru%0gp2XF!hniWOvK4z`6YTi?*Tz;;gMC7lm)CS{-JP*6oUm^dVr z(r_t?Gr5)kJ-$85mJga>*HcMCr@bd1sS@7U{M zifLnDGI3!zUzLqr6$-aw{KTJ7^UE>;;$Y^{cE5{eWc@BR6_NTpRoLfnUPd3C$-)?t zRILW~5BCc6rYDvNwVt`5CL9JlE92{@ZTnFiHM^Deehfa&b2(KB$lf+^?JX7um!c)i zf;p3MJ6!6Hr|*&Qv(V9x#dJQ)wSQLP%UhCx2^jBJndV>?lI64>Dr%9n=d38(d!YyW z;_rcp0)T`EkidbBmp^)v^k&$-yV#z9cMOd!qph)l&*|2;wlVZe&fA!uE*4^+BKMy9OYm0I4bGUAjQy= zqZP4&EKJkHN&Ss-L11*#m!K!O(t_@3qLiJfR$5dmSgUL-%Ph#djy(~$1{1yy=6vXS zo~23eIw5Oy|a ziMdfr`(@ogUZDJ|>KzVl@tJ9sKkGd`_vYKU`-#*OXWii6Ov&plba@!)5u6Yw z)m5T)Nt?RGqqE4Kn*JhDxtYXWFhaeJnGAlt9GbrEH3Q&`qXSvx?4hY^zM@yTvNhy> zmfn52(@)o_z?^mZM+7$k>zYQ|ddhg0C{k8H`KnU2(6*v{k=ADF^}DfBCKq7z_!K+W z>;8TO&M#t3TIu<#>XjZSX-zUD!MCdnvK7eT`N?>`QX~hXfV% zCwuQu0ba|MH}$?a_t1y0%#Qb7M!eD?iCkMqihI@2;ui<8Vb`CjdzDWDSAugsmpw;q z!TrUQpar%2s!_^7@o+$spW?7|`{Q)M&U z6Qnh z+w!tXVqb0je3is8h?cF!byg_E@*%HY3Y*Z7ep25@EsvY)xf;b=FD^KL2;)j!qo%fHyD_=UGnlDi8vbrc=#D8&PD&_abVPh5K0v%U zuBg1g5xidp^qf)t7W7>+P}gMFXQUqk{d-%VOJxAIYYGDri_lsBWnVSS_z%>5^G=;H ziNw8P<=r^Zo^t1wc#8@?Q^TNJ()jaNAe?M{(TkD{>D$U(^|L^2y_hQF)D_jr*UQo- znN8igRbIsYc$3Z1-p}+;{X(*g#xE{?5$y!(KjwIxr)fPOTQiOiro&s1xwW#*2+>^i z?0H_&TnKL7n-dfNm@`>1bLs%vkN$#o3}vtyvo1cL4_}q1yJ>0)e}f!lDJ2Z&^3~%V z2ZhXDW~fv76GcizCo@i}h-VjY;Dof)jzNySZuAwU%Zi8|%Y~Cila=zU{2RkEtGgAQ zHn1U`YV^871+pCMre(h}~0nl%c_onpZWENRoovn>o#m~X$ZtkAgW z%A`8{Nm*cNxjK&iQavwGOOI*=EYp<3K+Ps!9a5$&=J!x3IRCrz$UswL;Iy{`RR8sC zTz#O)$l&X!utJT{97=fqdaw);UFZS6u6N4EZ+uPV<9oZ#mE3?KE0#kPDR@q`={>ps zqSRCI+@uqRaf6AyTmxv@tHiECLR`m0s^(lKq6I=-skAV8M)s7|iE##Fy<;ig)$M($ zj~XuxlgT|hF8+|`_eT*UVWVzr3WLMvNgrk19`U|Nh(ak@jE%HZOZ8{ViLm9=Cy;X2 zNulfQ?4G-e*V@l+>zG$D_T4E-ebzW?20pH%*R_4-hiI-`PM)Ac3GE$Yd;PhRj;uXn z9Y-f|Gizj3Fwq2wjSQM&cd=E0jV!y&CquKX0!H z1Ebo5bI{GS8DrQjLkSe8&M^!8O+#_i$NbDkG8mCW!G=vCJ;5b9seqJ@+ zegf?N05i&!X;A|A0PcZ6u2e=XIKG$hct3V@?4&*dwjZ06x#F~v+Gfq}bp24x^ax7m zf4J_X|6CQA*Fd|tVzkQ8W?QA)7PiJZEY96Wh;xOn#J*?I8H)jzsx0R2Dc6s&XE=c* zkJZwZk$3M)Tk?F6Z1~639wOz44hl##~uSo|Gd|gO35#kKC51!v|EEg zNhw4H<$j~S)ufZL-2%r8)gSR|@u1p$`&U3)=F%Z07SHj8(;0X2@(yY0Gw_yL z_Cup0f83nOG7bl(wvBq-=Yl$-zX(;`50Oq|kGh`p#_u+Bq$&?(NXlgP`g5#orG~#u zgs+^9T}x0$3{~H4y|oz^(D>U)e^7P)dRf6g5DX%)ceL-&ZKJ~o`8^2x*G~ahv;48!0a$oOxa{?Ffk#812Ze>2z|Ia_G{tr zuhdrYi@nkVrTbRz_-(&2*zR0+5{}^BHC_D|a4rP_fQr1b6#b8-55RQ^1ejjx=={Nh z4@UD(f$b^|jF|2}#m%}8tjA8Z9TXJ7trYQ5@t-8wstR~Z#@A_yhXz%C`-!XcfX$df zS%C*+kn5idhj#;_)C&G5e#2h?>lrgnFU|w~5xS1Ge{F(_oxkg{zUQ5Pc;H{ZvnT>M zHuI)Cz=Npf_OFG{1A6@y`#+e?g;V@p2A3biMG1Ee37&5Fotyn>iHydN_&ZhW!qpopnH+xe~PA7=>!E=T22 z`q;2L5!`(!7K_M#0l*ya8-c)8dd8U6mPYKE1dZyi76HKy1|ertod=Z2$TQ3i=l_}o zuo!#s^v79ek;B-G&O3mmzvBNHmQOXaSdrSE31u&OPu>1l$fN60H5a^Abmipg=~Ril z!?#eQV}7kC`@gNn4_wZ44s{s1_0l4l6`B4qqWmpcZf zVnqWKf=&L~gf zMce(rg2^p-;Aze|8_CD~TG0Ey`|N*d{gUfyuwV&fBKn_(`(ButTMn^ z%x;$oT(feuZ{Gw`w10r9b%O5FU7ob^AJ{r?aCEe#Fg+z({WjV)Hvpj)q`){`*H>Cx&DhZKe|B6X&1Eko-1Gp7+LH(;;35|vk zJnHam8MeP2M)*CBu{!%^Vy*KT~I2q2b_3Y%{zxFsH1h@-{;C`S^q{Q%=7pYyH z)oG{YP`2x2`vB3WWJ@P`NMRJ=A6bF@dXMXQeRz^Q=RmLB3;udU&VR3{8cBFky=f!u zUPA?%T#PHPc@rqHa#T209{s(#vu)1-v2_wz8$x0Vn1T=y7Dg7;dukz5{UK|vZb_vT zQCQm{`OZ!9>Zsh}BPHQ8~*VLt@+5Kpyu(TxEp=BY_oHIa)Goq3A z?{ho&lywU@eG`NV+r#*~Jhob~0 zpR14DNQ+XI0q~}D{m;_mfn(L%aOP>(%9W3un0l{^AHLV9*bRg(iMekJug#2>0e_C- zX;s{$eF@)3&dTl8cjF#ud~*)TM50DDoVQ`(BR13nRVP7AgHCn$pK%`$#(E8a(a+^R z5=Z*O(0n#do8*!|}v>}H?ZMP?R zU3RNNuUW|d3bnjUWanmo*y#J?&jOlP6wMF|ZrF z><33UsA2ydHXz9{c&))^$VqR1%~7Ijy`7KrVbD8uVp2sgCzRA|)z8=i? zOmK<0SQ8TN7Oy`4{J_q6t(!Z>pyp1jM#2ixj@K&us>BI>)+uVS!c9nL#pT)pPx!3H z__X5{n~lnw(3t8QTXTH-EFlXF86a9^^0V^somMEsEzky>-n0+*67v%~ffV`N`4YGV z7yk9A717Hlyw6kv#E@UuA(uBAwp3RztNkIjLgHKN@1s1NIqg!$F!-EH)q7s<&u2Cki}j#FcxC!r*K=CHi5MB*7|g@81(A=`QN_#M>auo0T5l#OOv_J&zq>hpipT7%V$eVXn%4Y z#9IMX!s7=jS3?A-jZ8mt#E$Q9KJm}Q>tq6 z5{PNNAiqNBqYUmwWQIcMZdj0#G1 z4y5+hjn-Bp>3|z!u6oaNwvxnI0lE+jQS`m{r-e~a+Mfpmwx879Mi>+{wr)YTvZt0c z(rWJR8O>D}O?f$W62GA9QBV83yxYH+O?+)gns}+alRu*0Mb%Q@?n&r>1892W+m^7z z$8^w|E9AisK9jJ(6(L z0?+-y{0&FPe_SG7F`hxiSbB?*Gf1<#*Wv&h()H1%haAEnR2AsO^ufGwE|Rd&CUY@4 z<@&aAB6!MlKOli;Z+09}zK0pAN&!aoZ9`WKLmVbu6-nyC9=@efYoUXIZWf2#~_d6W}kY_TzXs>O57+Lh3giR*RJj}#w z!l=q*FXzpzU5elig|A;fU}(ee3^YUlFB`%0W{Z>dcPk_9@KMOq(jG1} zpoRyu3d6U!t+4ggdN03>tEP&TFWsz>eQAnVK(AFlVemw)7U*~T&aNA#$=M4}IcCl% zlB@6aDOff*R1pb1Dj$g%-XAdJQgz*)%34Q#-q4@-4t%&GdB`nL#aS}#ZS~C9rtA6R zeOn*rq**=+x8OL_ITdn5D*VO9CWg;oKPpN#G_&%{&$kOtF*jhQ1Luw-m(yZ74p{#U zJzF`MdStxU{fS03|BIZh*Uz7CnJ;BLl-BuZj40#g{tauwaUlJs<&spR2nQdfXF;M| z0?1BGr-L+)DiXH8zxf-b)IJX}gb* zQ1tZG7!UJr7OxAtxAulNX!XR_$hdOgaF~SgJURE%89nfdwBpimDHkGO+MY0$qUcFl zdlP_tleqb#lZ?Mvy|@Nf+_UkX-M(EJQHxoI+m0N2xHFYwJLhsGY;P%l^2)2J(srk* zdFaDxOoi9Bxt5RQSTv{n_4r?t)`ezgRE>__ z;_H(A{^|PEiAz7Ddy}ejoR3HcJkI%N)Aodjbl2s#r^ss;_&W;&1k_>;Fy`e9M~*(Vw)=)}i6>Y%^prU=SQwNv3B5oZReVa6$R+-9 zfQ(T<-Z8%{Z1J3e5+wICeELIC6yvpH0gRT=VVl4FefWukT4!nOIp9Ick_Eo{h_$eZ z#9?SFIMK%RXCILYK+I(dhdTgef2SK!ju%^!q6vKcD7-*p=vCpUtJ_$t_|T2L)lI!! z%r~yCltaP)X})k^m~-1Uv|%RXd)Zc3Bun6je5`ElCS)5jmc8|vL)qgYg-)|!1h-J6 z&(#C-KNsFHdcbc64n2y}3)O%7YQvMXQGZ@ny$l5Dmpjr2@&qrrQ^uU>Vmf2j+L~zB z`N97J<}ZC8KYi-pPXOx(W)EF;Mc8 zk@1WF7kO_TRpr{f3oD`$(k-B*bSM%_x=TvB5u{5%y1QYa0-}V3gh)v@3c^xpP`Vf0 z-SFKHZgs!!cYbG_asEAHu$N1%W&0Ry-_2cX@jL zyXXEI(zq~DaY=9br-QvjgQt`E`7?ZqdAzJP{M*u?7EA%L7A5>%DSOvm>yOAyPti7EMikG`dfS*@`u+eacLoj>kxn9p;Pm@BGUy zB5yGu7M{E3`!ImwbYxQwIw(2+xQpn?KqOcunOG}WDrxnndX8IGs#|uJ{1ex2lOQQ* zh@%YSGU_8#DIY3coBCUv8*0V0R+6hA7lHsN2(;w*LwrP_zyH?H>cbj9@dXQp0)C+! z+%$M$5LEv6RegMSe*J9+35bFdp^RXVGBKmZMC=AVgp4L-i%kX}#P31a`pe2Mp}L9n zt7D8fJd;8?CII~Zmu#GSyN!Mz5G%@vET#0!Rv3@ZX54=L{e4-0LoYl6D*zB>Hx1$- zLsrkwZn{a~lx1k}1Ay+&BUr7TPj(#muk)dTwEVE%$vtYsT|Vp1An-XmG$N-Q=|pOV zrSEhi=p%Gif6jHRx_Zw=jdmQE; zK*bK7qO&z5Q2x>;o6wcdzgLq4ELo%SyGj2NGdVH9UrD8tR9{1FmGJW)4Re0h-L&oc zDJG$OPFlC3Y{GeJ(KYrJO5$G~hw~0};U7JJeG;7NydbW!VJV{yez}@q0l zubGb_xBwuqMXW`B_+h6|vS;>Y`0Ry~lFlH)I$h;o*uVfhM_d120xg5cY0doI4j?)kc}If87*u355x)u8Iv;#K;1b6oI9niItsx`HE5iW#A%4 zC**&>h#Z_l1Wr3)0rvz7dKS+-1ZtnJ=AH-Z#(y-wNRCXs6u(%te=4W|cOJH4f>U7! zr{eq-=d1gbYpLvmkBK|dKAOrMr;wz2biwr~J0yO$QgBHfLA-V>iToAr_%1K`a!+82 z?sETktebZf%mL;J#Y|Kdux8wf20Mm-51|ni@9R^YA$15oBiC%T^C=}&-WW-n3V!nc zOV`??fKlzP{QVr@qYD=fgdmnI$Q{co!CSGgknUxLtl|Hd5M+Uu6F)xnC?C-Lb&&hi|sopjaYww7# z9F0X)spcq_&8Iqj(--$BzfXSQ%KrYqmq;0T8NeehX;9h`DiW~+A!r};cYhVGtOlm} zi9%4}DzIo8Cy6=XJ-&E7lp@mmU)gm7v_-DOo1ud~jBBp7iPKzrINbyL@w)Ve7_%`V zsL8QJ`1VXQ#|M2L$ayF#Ru#ctr;2_ku3v02`}{|R)z>A(;u-zOF2W+?ifAMGEe^bsI)OG)^6f4eYe9SUnf?}r8x%lO}2 zh2%@Sjd+bDC;^njL#IC@h6^m@-WauoP2lL=g5D(p&<@)U7fNUl*7d2=4k-sv&<+*o z5&pR-C$P+wOza1EqA^r=T%fqP#x8PdKZ)E;g&RrNpCw;Rj=t>yZgF!=@ILlsR4>Tn zIL^Q}xvFVSf3$&S5Mi0x-ZKA6ir_l!>%ni0q@Ni+DR8llDCZsN-%CsO?EQRKb7t$p zsimMEN|+04VsH~91}B{SiveY-H4WmffVZUlZ?E^i^Q%?#7mlH%D)Ro)Cv3Zmj;sHF zupLxbNI{!aemwx^eBtUpoh9(x9DsIgsop|=y%6e_qTw%4|3_#mb(ajG|8l?(bnuy4 zq1_ayxC`u{Yg3!42#(8n$;s|_t}r@)^rCzmbnqf-o4Fg?+H(q7m@KnPG6Va9eSvvQ*R+b^b!39F+1qzdM}`f-xNrEdRbf_j4?I#NFp( z-z5L^B(H#cd6#qPEdd@9&DfX$EXimR9L+VwPIN&4LU)0VaPEypYeEMC>eTtmw$UiP+KA#z+2{-?;`&{uuR( zGSDFKT3Qsrr#CeLB*98fCh&kvMtK1puj!N-5mOPk3N=*20U|2?)lT!o9)^U1!bR)s z5RL#}{l8is<4zzqfQ?)gu+W}S15>Jj(FU^6gu8I^P=mRfe}Zxeayj#nt~k(%&1{8Q zs{g=UJ6R2;^7+i#1(aGm7hw{O;p!47l^u}K#a)m$Qj6g8)<1#Qh53)dpY@0Fya3Dz zivQn!dP4>vg5TRKN?gp`elVvwi5etOJc-_KUj0}?4!Kq}aIJ6QFj3%Q!ge^2|M=fQ zC%lPN39@*k*_)7olKH5GX{j4Izy-HTH?^rO>fF2bYP}?f7*QmX|*0u zVt46Eb;+6!`ych35z>@6ALm^sjlT)r^vE6)iXSZ8w`T)>ilj4lK*F2pobLt4=YI`? zGozgDEDuzvcVVir<3^pp12{XA>Gl2mDO~?Pb^1?Wt>*S$0(Tnv+CK#tk*f*FT>aUM zkIRzpjL-F_P&q47dVv_i77EeO_VeP3w^X^{`9KkSg2oA-+526NfXW)0`Uo>PETX(v z=hiw_OxPuqT@2;(`~lz5F2z&((e+D(Pz`R80O1AbU+1YnM&riU@Ugn)7*F670FlMf zTffiq5{e}FaKavz^YV)WRXMBwga?4g0EEu&QS9+h-g)#fWz#N{DLSASg6e2)j3_z0 z9I4OWlsZHT9gP*?)WBs&{to@T4Fexe<1yRlqGojolqik7d;nMaSwJ8eoI42f?>0I# zUa10bA@WxHg0b8#%a-z2VVdrj(K^f{L#QjZqu&FB(82Q`s{?Bif=XURqUdBGMh**r z+Ts2+X$he4fXMo>EWBo(bH=;odT9XSmG|Yr?;-Bo&o~*um#*-N-_YpFII4oIzF<}YSpvjP%^Z+qC z))lTfcC2Tr*im1pR$0?8#Ja$8@RDobcT;Y+wLTdzcn+NvsPw!682rTK2UuSP1OP1m z001zhY`v(i712}4WDsLqrIeYER`Q5yyIyd?mkDAL<7t{i3JImK|M1|b0uh1$iu^Sl zD|x%Rwp$Ip!PWuDUd_>N?CDkL>3%*!2m=vU(yCCieUabgKG)7I?K} zE55O+T@&uZhD|Y!JZ@FYJFVXA!P;x$cGUsAW`4aCJI%IsrL-1Exr4oL*2=HjS9evU zHDn4-y=u0ZuQ%&=REqjGnEFoLs@j{62?b4!5g1cU4?6`Il_N3i7pPqWa~dXogURoQ zAghiETTx!Ap4;zXtc3fIGVZev{F&@f<4`t-n|#miaG9YOE`=Hi{2ilT%-YBMZuvg( zW=O`f4Y&E$AFjACJ)7n;LKjv$KVejPI#5)={m!)Zc3I_W-F#t%+1K|IS4G=b4t@8m z-Z(U+j!X(Zn{YhdZ8RJ{bWNFODiUfnqpWB=-I_RS`zgGW3;Jt2in%7I&C4sVN)7C| zaK;`W2{tl z@C~F?wQDucuM7wr*~9-qAO)}QK6CB*(#T4#s-eZP;LKzJNj`2{VCATN<6+nL2j>Yl z9Bs6YUkO$m#VKxxKgO=K_3?V4zqd~^r0BU~+}5yPp5!KcSZmKwnE7WG;F;Nsmh=9j z5unnpz}DUJRv&npF(4d{V~ZBsQJxcD%d3$FSkBhI38B*&;4i!Lt@+>Zz!qX?r7sjE zMrp7GSPX?JDugqQ1po6E!0pbUL0thF)V`3+Ie;y&7uJtizs)c(M0xJH$|D-X8V{+! zsCNzazE(b&WN^PF-jS zGx+_CD>N!9{~9YsOpeAOpW}&v!P}=ZWM&0B_qw4j-WIQar;3^vxtkZuLt8r3u955QMmxq=3H6-XOGr|&m2V(KNBPMJ;-tLXh6^pjM?&fEt_Y* zQ_Ef}PFdwNF^|kZ@O;oVfAiD6j7gOtAb=t?`RPl+&8teQhbQU{e(%)Z_s7I|i@W>!&Tq!HP7T2pWy?=e=G&797IRq(9yPFCfGcpOA2XfWzMz9j$0g>Q}eR0L=A3 zzHH{VXn7-jYTv^D>SCrM!uB9&Zczxy}^b1#e=HRENP>|53gjN2j7V ze?6z;kc2-pv6)I)6K>Kx+_sW)zM(L(9L6wMI__c2{Db!Ut&hu%?$sSWKhs?%OQfIe z9sWpUFPBazsF)Fc*2`1mzA%2B-*@0S3z+YzKL*0&a@WuWRbTS`Mb(#le^YhkdXe?It zmyiF^p24?COx_DZ&t1%W}D%?3j>@9EINM zKzbfAwGFM93+FwYPL1JaHgN$Xi_ZM~w0=#v5Ud0!-kiGg=$w42bG8>^mDG@W5|kqK zA|E0S(bh@Qrc|2QciNWJ{rvU*V_awwv!4>Ftee3WCs=dxShv(oJ;$=oyrVc}|8-AN zbmqw3;QR8ujg0sT_vSkz&U+8vGz{3KB=LoK(<1J!2+AA-u}lqwX|z=rcAK-xIeCmv z2GnH&Xh(R{oi`orE<5EHXAP*p_L#{q2h>9iK0pG>8BL&w{Hc%7l*KK73WC4+BT9pq z^GsI+H0*bg;t%vD>@{>$XlApck%;tvN<`q-KgjnTuYt#pSd>6&F()Kv1(wb|905de zrtlwX56pRI_nK{QE+dt`Dda2n_*RH3WuPS zr=QXHK#m>U8~3#LaPmXhANMSxbVtTjcpW-|Ki64HvaeaZqg!E^Dub~`TlW_CyFfp!QLCuk{Q zIEL*GTNjmoi6j}xH`rzFdwcX%$;VOJvpEFIrH#^c@NhnD0-fMwE3vVx8AsUbnMcNy zreiY}@1Tk_r74c!4!q;lUD~R0j8U&Or!?|qsp6g&yo3Ykdho+E8&B0=4Mvr$5L5Xp6>_>cY z;wJ`gyQzxa(*&6z2b~A>SC5v9DszNS7hfD%kJUK4OouZJ&%_Gb4d^*xdBdnc^fZPR zTFqf6Xnbu2mut@d}wOw;$+urnG55nq>0{BK;LP?2$Z*?Dr)HkLtw*m zmpc55eCg$%j_DXSxs+d2F)z68zBd_&10KFwdM9tx_xyCPz}`Eb07bjRIM@=FU=jms z9p4Dy9el~8dS~^xFYT;JjBvysyGWV7P@?05v+gq_*BNu=l2%9Z+#K)goa#(OcOgFk_n$}#;$IC z=ct?)n1}5h4K$9sjM!Fwc8#L&-OV>lO3*kQY!fmg(R=EzkS65a>)`BDPHXGL zuOxM>JbQH(7YjnkXX`~lIv(5dRz+of0Rf>(?o{UO)7%t?R) z==`utcNphT)4<(yp8G*)0J&A77~{nG**^aiyvTdiI)zHcv5(tp>qT1G?(%@ELB3Jw zSy9Y8qwg$+hu;)8#Hg`5w4UG4-#H@Y+aGmW{SKZ@Q=nbidJ8Nx=6iphDg&k2{+KIo zuyMtN&#^6b5ml%dJ;sL>;08P(96Ebp7%7P5UU`o4)4dV&;HVkziy$-h& zIcEcJpBN1!33}8&j$|#!s5m=JJFjLUoc2m!*B?d?UeFQV3|D$+rAQ`JZ;-YJ?jndC zHZp7$u`3==w*7eN3hZBZRDc$T`VZxZGRtJ>7#-@Bz>B_E;7vy5+=PjyWm#MN-Nwg@ zc|A4^yNx|7nuVali%Y8EFJ^f5o>>e$XphHkbWodp7R3BB^Mo5$Da*3Lc}^ANpIPK# z2b1;kkYMx8Cp+1!jaI*KQ2{f0*RKj;^G*8M8WfVzVGEyZC~D2D+WQ{=Y^t;Dg)c5bx2`&5h8WX6bXFR~S5rxrgQA973-Bhdf(*%#h`CfD?hC&X?Y}|-3 zW~fF*XSx2X%vSx!sn`+eNz9{;lsZ4f-Br#;U1P2E>UH+v)|$?=2JagK4a*} zJ%O-MTTtj^3TNca#K~OY{4sDR>)S`&p%1wHvuwdL#3((ye4OiG%BCFIN6 zVIVDt34G1sKYATi+kuvTF4i75XpSy-4Bf#5`rNyiL^QQH%9CTa;j-eO& z`?*k;^K~ylnF$4`sG`L=oT8y5vVnI00b+AA7D&`W2a_>#*!(L-N^YMCRuHtYqh^+b z9Xbx*m~v3_SRTeDUls#1Y!>OtqLm6<-WF0ZwQDuj%k1okxcxG}1{;=389eMdWx30a zOqTN+MkYT$XpfwHy$V|cxF9S436*-Mr0*?wlG)*oLpbO{;SBp3io;EsCX?-+12?w& zdt(rAWAFsVh4^zFsHZ_JKqDFx;8*AM3?$tsy9r0r4g#Qv)(NFcUL-+Gu>SOSYN=;C zIrDp69KMJ0{By5NR^I0qF17o_l{4Yq^W0mJtz|@PMrhV$EPrGjKCEB&E&`drb`RjE z#j>?NT%5~!1;lV(&X4D8ueFgNPp*}za0S>@j=7}FDucnx7oN6Ox{k8=^%iP@UtzyS&>l(F_z{YtzQksJ%cy{>e1_&y z{5AlEMp9xC1EtrKLw=n~(qsKt*!3sLi?J2EkJ}&JIS%J2V!nPKWoqQto_N^c%7G5Q zbn)YdeHjDxY$3^Bo;vjKA-8T8T%3Ta<4WSCU<&_b-OhFoRJSv8!L+9mbRsBpxb3JY zVhD%rIfX2lI23|A51Uwu>ZZ$uC0QMi2s{dYmm7d4#u#&0>eD?B&3dpn(bzcSB#xl& z5s-K_RVZ_+k|`zH`ifQip87kvcxL8a1oG>P`dj&radXA6OAlJEvIbK)q!Tyt5IVMS z*ze8B`H{m4(eSA*|M{UrA#_~m=9)+l!`@D^s*s@$y(9AaIy=|`%0Oju(k|M@NtcJv zRG5q(stnaDbkrcYI0fGm1aAD%6M)-{dR4``X$Ey}c(pF8V!KN}^o4kXDDY3kTgW6M z2pzl{e9wJA{9WU<8*Qqv9icG3k!OSkL+&p0WU6~41fdf!kA&jfHg11)m-%^Hmh6k} zLVbSeH}VOrpMcPrxuRQcHS6+We{HO}_no}DV5Y)+#3maO7duw?j1Ty3;J0`d&y$p| z$uO?gX!6i(g*Q?qNie5uIdiAAQCMPE`{c~#r4;5z2s{$2O>1##>60xp`$E*JxS5E5 zodA9}wFq@6w&1oc6OuD6&n%MA(E=sQeG>mIoc5{r_ayDuOI_z5<_TiLP{APtB>Bw- zQSiI2wJi4KsJ|x&FILG_rk=emEB&ZY4;B;@RJEIkcH8Rb2lSG2z~MGNV{%aG*F39o zn#abzEfmG1nw`5$^ArA(ty40Hg68wVYUM<+&CtF37TqGdo(tX7?QeK-OuxPS1af#L znuJ8yU5joi@O6mis;9Cqqi=FsQHchiYLysY#iro%i=&mUk=W!s;-+zyX{`6y6)V)M z-dO0NP3Chzi6mzG9EL|r6(>TIV>?vuS^4@!mJObi@Yw)uFr`Z5!O4yMxXa1T;`pOYxi0kypJ;s>OB|@ z8|qACK+&LLL;pNHD<97VWOXO6Tbe=-oU-BK;G13suSLR5rlt@1+?Rp|lvxsd@s(aO zu9j0`3D7o0Cz~g0MM7u!&rg#e@U{=-_ZX4I3Bs3@5szVsPen8!qo@mfazMRuIraQ% zU?NN!^4VgX%ktet-A$!quF(MJhQv#!+WLj78?3~LE?$_LMsQE=xMXc9RLHN1>j7?e^aVklt7`E$GT z_jtppXix~|X_EO}R&rZe@c6RO%)@1-^?*$RfH7x)2g{@h)qgj)Z#=D#6P?kko1NJW zq9Id8q|0~j?|q^{S`577*7%^k#@+32k1aKz>EUKOAN^^`nI-Rbr?V&++L@TBCY+?9pHn#Zw9n#Exzz^Lm<(iYWv= z2tD`L)K#SE3L+)upVo-RTK5T+5X41fy}~OAr^96)7bqnNjQv@C#V;;99`4)Ov_uV z<4Rvk^WFM`OZdekm&Fl}i&UO0wMdwYOi2Li7G%;*XjVyIB^Xy7 zX6CT&e;6S(^f`$(q>!S%-aRwJqjSE#6FD=;^c%{d)0#jBpX5qXMG5dbVG~m|U#pdf zBJ2km*e`eNQvrYQ`7t7U?DJBPDfVdJ?wSw=Q}jV$D`Q1Od`$2b-h3pK1#jl3ZY$8O zgfptpROY2mFWF+i7?EMi!|9ZNKMa-MUj!zOPAGh@JYrTrmO6A+@AGBtVDP~jo2YGg zH&7XoXxBKLVlFm#8$}dAAznxp`r+yRgi4u(3bHeW937voY4TH`N{R6oi+TV$ignwa z{Blir#Ka*UyGwaB_(LWugC%>LLefiO;NX@y&@f=eB#y}f-uSm;DT8<4{G4hZYK)_C z$53N7ByizQajfhE`3e8G=8^UCrtOt+!Gar^#f)5|M^<&;-K_r){1mDO1H=^nk4 z3$DgAZCNdu!Z0p-4+uU z-<{qw_glf*F7R|7Y5$s6{A&q1p}4=Y|!}h)@*+KqbR4@_UQd_vT%G!`RR4898Sw6 zoL4Z55$jdXz|z+J<3rGRBAZDP4hhsuQ@xL#M$V@ zTy@y&mDH>DAdA-hp(+;Fxmugy99e;Yvj=`e5BVIe$LW^jME92mOyB`Wb+wu4y$3Od zIaTs(jZG#49y@cu4+e)kDQd?cCSZ4K#!VJt0>vOI@CMIjSLz_-At^plix-Po2&M=O z*>8SH_ClSRDEw_4OqDn^@s^-R&@KCCpVocZl>?%&zE@B`{v5QleLF|#GynRoW|6Mo z#I;o&SCPOu=lekbtMLA82O_%-)B!ml4&!2sdPWG)T)%*(*XoO&STHjwlFSnyW z=J0(gLQDfz6rB7i9aR9z9CeW}(TmJM1Wwy#mL2QnxG*)4y-kFn|e#2W8G{jjKh+U^X+OBPkpdg3_gP&*FeFRy2p>d{2$rbGBe!@Ly# zV8;FVktU75`OFV>MGE+`wR_b60LI|xHrVG-p@VGFKrQo$nx+ma@ap)~`YR;yFkqvY zu+9|WNDOW{mg^b?dRXrwq_eaf*fk3cRPgw-qR38(QmwoDH#d_?eKTEVtmK*=zjR1b z5UDp`lC}&L!v=16o)|#;FY{XCPm)EHpNLV1mY;|MU^)48Svw2>3$bHJxVUzen~-Aa zgDK}oqVK}t40005S3bT{0$bQl`Y3sE*#1=j$7t79EXa%?uWk@$LO$g{4%Ru-rur_z zVk!Bo2BqE74esqh zj8xdxDFLr@lfK14S+U$Zj7L522K#ygj8xxnaVk1|z!^AKIACgTFOnxq?7*H24{-9% z@tMI3AKm~Uf#)VP8#OHhFq|(SQkv`HJH95%LocNIF@Uq4h@03{x?b*X|E-vfDs!xmDO0_G_3=@qwiLd0j~QZt3!nNwg- zw(Cql87Jkn)2qXTNyrpGof7NM*970Y(oWGGcpV4M4zkHY_hrCQ?v`2>R4^jDKb!N< z7!!@Aoqw5^a0ARoBQulp7TQ?)+Mf z^YR=z7FG)Bty@CR&Q1=$&kPd;Q}oy)nSU@xa+#k?MIf1qoyLS9HgA;5d8m8i_HJQK z#b%K$BAF@D<8*Vdhm>ngb=L#g-NOhkqS7ggbo-d2w}|oTt^+atoren+k>oHtv`^xuCfx^vI{#-Nlc^cWHg{H43PTx{_gmtlBhtof=Gpjt4&p64~{|j&>GH zOurKYnYXnv#l7c2Foi)AhTr>f44B1sMpR$Z=szwvE)jr=-hbSv!PcB_@A4)34X<*o2j#;9$LBQ- z&TYi^ZTpn#3zaKq%pRVo58a@IkqSQ~D=OSy=RzCfuU~pvLQR^t|L{uGF>8imG2tBI z2CR&oANe&is5Mr&T`wmW9i1aceVP^{s%|CDP#Osl&uo>zP)Zn)27Xeh8^Xa6> z&eD(XWhJb-743MZ;ztNjxkNaY_?&vIj8+r8lTVZ?xB8)6ZlzAAlsanL7y{4Kt9E?F zWBd9e78aH|lM>QKMFOpd=rOEw0EWo=C|&HD(czV zD4C$gj0uFoJ?1gm=P=09;VCGZ{vyE-9l@X{SHS)AVCv=M+W0|+W zNnlVt&&#ymJ6lNSzU3_G$wwl2&ZF(PCGX&m@tj`WXo=yg|IjU(L;go=vRQKR7)~Ue zE)r|;*IOOu5W(z}HJREob7z70v4Yzt9Jd~qvit&WCd7F8YgMD=~hl z?`%|o#oT0T`N!VaFfGfzlB+*$_40A$BVIzxqkkgj>Bh!oX9XTZ`S}8ggm!J}>*QTL z`G9c6=659kZgk>~nLEI1KPFKirIa82_NB0oJ_aqr{D}B?OO&=MCFbK6xQfNdd;L+8 zkZ4xG@8e4O)c&UKVk#&cX2F2~%H%7JJXk61;&epHBnx@#2>uvv^!0^GVIU0M#Zt>r zOewY-dm!^LI6IB11LAW$LxILfRleknqK9ObB{)kG(Wfs+28O8w>dTBmK z=m6j(Go_+8_9uL2z<<&J4mRi0e3?b%kTe-L7JWYjTy@(UGFQJ%W1wB9}>!?4t-m>pbneB*1he8m^;nr+3sEIkv zJ1OXO@a%vr;r7yQxZFA?<0;5v(ubl!0$YIHc=!yG>5z-bi+ZLA63z=1+i zRR2R?uz0qx%(92L`TD66dLo^^a-@qwf3x1B*8gIpKOO8C%>xO1U;BOSLuv~Q-1~=) zj@;Wdn-n_W#|CSKe=HZQvjJkkXXmWM~;9+~c#({9eX;vE`HtO;Hc z{78W@%VwADJ#(&y;p^+w(m|KIQrk^mJaM8w&I zA6;YsU4+U9t-JIQ2S6AhB*kM#aN}K**}>$J2N)c$B@%R%%dB0*9|aFbT_$dsqv0SU z;zo(bu2q)8o1gEjVY~vqX96DkYtgYnM~FBL^`M(H*A|CLbMUkH5`l>Ho{^U35#FZ| zi5$*|o$Xd~d!x@m=u0;D99yt5Q_;}r9!LX)L_qAZRN5_Pq?&9Cc`zo46gVDEAajt2 zeoq$<-2nZNDG=9k$pqS2kMEmgX+XNkR--xwRDemGMA6=%Zac)BS832;;)d(NoM!4> zrQTn!J`-}nc#(Z}DSVJcl4f^raY(aX$m0a<{eZ7reZuv|gbv-{{=B})7aT$@^M<|| zg^j`oR}e!}U*t&~W|vIw+o>z1h`QKK5EbZ_NrpTld#S()f+FD4_heegpo5{npnID{ z(n}@~N|JI?DTyON_EJ}YMLo@HHR~r3l`h7F3G8;yvLxbG2;X2(x+Ohawy2!-^e*yS z+;`P&t>y67=ZKPK=5w>X53md@g`3vmJo!L}>7Zzx`sFo{bm{ly!d9V>!F&%?5hb=G zJoNA3J9p^iUOx51`_v5jeBoWf=c8&`G{^%GMlats!MsCz!X*abxp?^W$aqZyheh2W ziY~!@iiX2Ea=z25q9q9uNr@$w<(~?>3@ZFIB;gxOJuDInc>1XL_Q4cpJBw`3WK%wR zAG?GJzo3^V{-XB^(=+_x)>j5RVFPJ)z#Qercy|L&PdLEQznwbeG;MuC%HKa76Qz1cjV zs&|(C(z^x~5EnmD@6fm3zmIv(SVUHQ+ZK*|5YkKo${~L$dLvotHsBn^phZq(_w@Yi z^c!~ubE01CJ2^>4#gy+rbaa>$kyyI)m6mDAI#Xs`TBS!`_BmZRM$vp>*dsk2n+%up z<)TKl_<*aJ)4?PLe!0V@GYNO1J%8jyX^K%7YL%d540gt|kbFzzhy`dNo?)w2WFRP) zn1P>I9O@Wo`ckLdiW+nuZ?S!eCg+_7u%b*(Xemy(-8-SGB$;d7!T6w>e`cB>DO4c* zDUgo2Pk3yHCy#cQBVHV+@O%UqS$4$WB`zk`{wg~Y3j_A>3z@Bnlo~dkBSO@VHz3An z0`Vm_bWr{oB!v$D@1)QvWBX)0i;CHJ_lX8?b-Cx1{4Q04vTE1EHK_48kq>)5&=?1V zV3D^n;<|5l@cw|klIVWQPJ;wYE?KS(zgk8oLDSHiXudPW=`a_7F-X?@4JTXQEpn(V zCF!=p!eFEC%r-R;ASlN-61XH`3@2b30HAcFg@Pmnm&=M4g^<^vEhPr5E`6=G=9AAE zNeW#2OlXejR@{TdAM8al1qN3#_@=rViPQV?Df@S|g*!#7@8RLOA^CgLMX$>jF!f-z;H_BHvOn-@FiLVJ- ze-YgW6lp4V%oO?9TY@jc#8AocF}k%2*vSheBZ);@h@Wq(h+UIne}1mKB_ClVvL*P< zOs-It{UIK{Ox%E@prdxVRXjei48SC05aH#BAcL1Q>$LW$vo*+?l^^+unJ}_io2u8m zu`;H(`qiHMh2Z;ZTg6*$(2T-6UZN>ybpa(ZzdK^><@`9iP0DDB!)7=dA6@?pP%zaQ zzZ&|UstewwlH78Qu$Qo*ePfLtdH{4Fezh;-ogMn#7_j!Yq@Lt)nT~vtNafbMk_%{i z(RwS-w448_ek=Z^9{MXak(e|3D|NVXfr15y0D~V5gD8NYDh(Luk3&PG1(9O{qj_9v z@_;*+IiBOrVxM$4dj<;)54^My5fBKNV~bR8fke#O)M#ZgZ-kcQEjy=uk=K=C*jz_D zA$iHP7z5tNd({GyB-L23Sns(c^M0}teg{xFjVtf#j~NM{M=By5)=sq5a#eKvi*%}Q z$`QpLH7&>IYpS(iGnq*F2G8F-VK{o=v}fOMr>B6<7jPkllU*&jcblsi4PwpW{{Du$r-IR;^-@a0Q9FtE(Te zEwYQUxT4_zc3~Eg6WrotIBmA2{A;4Gc<%qm_HsX}!mefEsr;<88NzogO$8H4i7xcB z5n%#SQKacXWO0!|k*2!mb+EyhCQFEOXikCMa-UZTw3vowKvz0!Q}&X{m7B1loKDBy zuVZ8+X{2H?pbsWWlUg;R#b!{ag$^@T9ron1_r-uo)X`CM1->J-RDaUYS(GxruGp<| z*Suh9@r9{Wpr#cnCUa+>80rn`w)N|J;v+g1VH6k_E5D#sRrH+p;{pZs!X>Z8fi;}? zUjG2Bz%1^50cE2E63!)fsA8D$xrPPQ`RaL5N+}QC^}cwe5_LU0hLS%7;)0fsj-D@2 zUAc~}rsAF=uNOqIWt1$j2Pga{Mc9u>i7MKq)aD>SR-YuyupJqT$e84f>N(=9~8|l-&Wzw^p!V8xN*vjon+z z7{9q4cfIbT>GzPzaSu!YOWcoND>I4E5rs+65?_{#qmiUo{ibaJhU1>jv|`zeRIo+l z(y)ugbiCosXCwl!TRu`M=3XpwE7=@yL_ZiDz!$lU=$&A8Mt z!6@@Ab-X#6Ne4}!I40CspWab;os}f$xkps5aq0g|a>2*j)GOq*Q^x@cPu@ORuX$5& zBuW1=QDc!ao)>}}>LPTX-s(%eAl*$AC&+CZ82J}yJmW4{5fhz2}MnU&2 zh_E!6qId2`zUJm)P8zfG(cbEay4^#jk3De;4}p4~LC;R^f7|EaGEk;mqV9q=+QL{Z z?=`HOK`r3~ZA)yxj79Z(HyaM7Beh1JV>~zK%Epbp#l2-u53KkA$iF-Wt%LN08E9rt zXsx6+bKv5w6Xn*L1?!n)H>UHW2Os525I+qH4aG?j_C4EzNJygZV5}#~!-CK8q9}Xx z-9Y!-ZNB7-hNqYqVA)5@3RTV^fTUT)*xRZDvEX#Ly zW2$)wlZ4&oeUBCRN*5$`9+)S}L#y>YJIwKL`|vR79(!Ig4&{TOQuD6qKpdf_@p{iq zFviF1@8`t4P}M%bXHIZAJXxFvG++e@@0`j$F(hjPMZk|{V<`}UQ4#N{nY1O89|3}v zNJsdzcz@7w@38H*Z`G@%y+t-%**G>Yy3_LHSveiE@H(%v6ZeO& zI7KD-;;y5Py|YZH2F!~bYB=VV&n6GRZa%ZHU}RRyo%|v0IUXaNeWW=5BteM(gKni= zYIk>ccq`06j|}zr(C}HFdXV`$9aD$7l?j&7H%(f--y6hIJh*vvi%25U1<&{6_xM6TG6M5zi7(k8!^Twk_*zO|=!iz_ zmkZtqm*P-M2vFyVgA5zkC3Jj4Jzv8)X%(mgY6ww7G#HHu(bWpH2S_PH9;N4)syrGc z@z-%~_ik_@gnF>vum6)nh4kmzob#@=$H`oPFfZ7W5V1qk130%=ic$fF)Iv9eBoeU^!E*99{|lgfpk)2{yv7mR}0K%eL4NkQIP-*E!!jjFZG>Z&KfhHke38pSp;)0?X@jGuffRQ^= zZmXB_-gq%(_7mfq8?QIhC2l6vY$@wJlWf7gXW(l7oK2^!$?x)&QK?Vei(Kqc^a?S_ zDGi{Nr_w$<#g}9a)Hpq%7oo>U)&~_daquzpAG8 zA+By$W&7YV&3)eP+O{__+@}NYP2F}o3YppDSC^bQr@qU+AOA_I+g+w0zFQ+U6!Gfr zrlu*^Go;Z8r)gcycw-mUv-O?#&FUdWS>s$-oNJ|F4?aC|J0oFDofEj|VcbGxrAOkL zx`HFz1O*}$q@$rlU>MlFGQoGO+iWG5lf6|fGm>#D@ji20B;&GV9HoAtylf>6c>)l? zYhK9(;o?~$=GVUUWJ<@Q7<@+mCdHaP9S(0sd}mU^;>+LiuJ3>5==!a7P&bVZ^dG?pT4S|Bn0WV!e)m^nzDuZYWZ;ERNv+0sY&HCqS{@;aufnkg9KPD*u>s14mg z2U+3_p4XOif>4URRB$TmH(}`88#`P{6ine-INnm;N8(_#$wQ}@iaN_LY|UmNM1d7d zG53i(!;zG&RizuR2=qhD*1hFJ;Nqy{oBGJh_hFjxrIPNK9(JzMSq0}vc8bxnMM+G; z8Na!2A;W1NgpVfJrKQGnRF8w)5wARdusI_~MVn{xj5e>ul)`LiP!=(Daw)N0SU_OZ z8WizB%%(%a5nQ$pDw=Ad@yH73B;~?0=pB~URr%Zw{A%v>JV@x&4QEX%od#;9TZOhl zGM~GicZJOvGqOupq`tv@`HmI0hmPa{e5MXneC6x z5A?Q+E?@%5a{uX5h*07_gRBR~4PG5CSC!jByg|crg``jDDGC}0>hx1O!l{GJLgpTj zwsMQzdPDfBLq~5!zJfTf9f=6Y*75gzKwz+^MLyRR!~ZrX(%UG(o}-i|1@v0Au-3u; zqf|5)9fvs(n$>)P*6lcw6D8W)7lu;rwmF^6YVn%_z(2_wC{L}_-J(-7`JTYGd9vM= zuN-Pd1fr9M%$q-s*D20Qie-{>3B-Ko{w-siyLgjQG0TCdEAoEAPnHg2{uhRAWvo0s zAh|VKEe#r92~pCSCExZ(!@f-kSa4jW1nL6PK?6ey#RcCn%r`2uisn>sL#rDPuv{P; zJDlDjJ$~H(a@uu$?2EafPgGHBZ1k41+hXvZTY+YlYu&}`|kqIpUNs;}_w)~aTyOo}Ns8m-bD546BcF-bXc1O+5JpTs(QM4J9a8K zh)yDBPhX(W{zn8LJC8q2yUWC}UafInvHbD)^#gW0h9Y&L*9<#Ggr6C$h1V+26 zlGzQbgNjcd^SN*F^=2!C(ga6RYsTnhW2t8>QovkD!}00GfO0k})xlH1g~{ErEey>m zP+t&d$a>SUKzPnYkb_#v)gd;F#$#t;ipHku=@d$Dj?#KALmV@m_qRItZ9NM@nJyW@tLXs!FwXXK`A?WDn z;pI3=%q{e;IX!lIUdCuJ#bmzp&$l8tr5}Aj?BdhQF>cD);3*0uX(AthZcy;+c^Cu2j~=INS^n(An6Y%H$Yj!|Yf5#+Ga@Q;G{ zVZtaU)T*)Ehrl40b&g+LYHU2qx?OJXiwRqssEge8RGJ=5C4j$VUc`JNnVnG$=TW-T zLL4{K3t9rD+oXl52iIeR=|o;9lf~6P^vU|RIgu2_KYYHzAI!xc^L~fz>%ALW13n8F82AzqM)a$H zIUNU$`rX@S(JT~kWS5h;5#FtmC4&cOT#E^-F@p;Ejgjtd#aG*Bw>{?|z-g z$*`1>xZ!H4O2f-&sYWM_1g4^nyAS47^0y?8KB6&vwRB(VXZn#A#SM}~wyUMonxehe zG%FJKc8g{@yty(f1z3P>l2gj;OLTH6oEEgwOT=C_O6Q+x-L@9YhuSzxx26xk3X{<{ zLLb)eiufRNr2T%L(KW3X2`@^oj--jjkk1zx?=qC)oh{(?k|07_m|je7m26izZ$7~2 zXAgdJuIKbdXSOFWbWqTmP0{v27+u~AYTMLyx19|DhNCnv-AyLoD8%FA3zuP z2blnnHPCJuI%Pwd$>=&t0vJBItj8JMbAvjRw+<9hAqj#@XSMEcez$HvibkpeU+u(o z>@U#AneaOEPM$NBrp17*EO5spp#~&^a-x4*@c-wS=rB9Onwa?8ry(!3`_f0hm&dz( zX3XKa-O{<3-#-!+T$<@MZ?1ohohF80c`se7k0I_jk0z!|BGgW|}EKZ4g6qneq>#p~JemV(X68qTPIFA;S({`Am!b#`&IQmhJMihLN7#R?fSQx+aHUo*$vhm%ewTe7xJmMgLe!6nhpJX?O>UlhVNM!V(AI#`xlU-Us^2;^6GL224jHHSVL%Sq zZRFc&-2 zY)f2EcBopF&ZGu~?Kg_&*;msIl6_oqRn)6kE?!KrzAKyI24oLq&nKW%ETCIUE{01d zv3*rU1xR2crS@^bo1nzMGdi4X*s@0X;3DUDE;8O!^V!VI?2VO?LUz9c5^@T;&U7K5YN)u(k>0d$BO_Q9L2fkSsW%dd$yQuWOL&4$lIZbe zPdvBMWt

>O`XyQiw>(9bOQdX(<;yUVlC(2B_&)RO6<=WsNi|lhVPXsCRG`i54k+ ze?pHnUCqDfzX~rDJ8w@pzPE~^k@=nu#iWs28m9-0!+>kfr5E8obPHOaH!xqqHqG9o zKCKwjsx%JNrTGOkb2xf9ZJu$y+!)0msj>2|_h^;So#k^) z^4AAl+1#}+r}sCf2t7qG@ZfKKK>?Wo(To@#Ra@UY^hbh3z-(dryLz(y*FogQZwWR( zWLI-oPLMYAT(;OH0wAw}DqjhN;AHU3q>8KkFFEVEc)Q*5+JpP^8;||*bNZnu`9TDJMr?Vaq%=JhY zs8k!{hmi8|X#|XxEs0oIWalp5Ux+xyA)BAPYKr7_(6E~LOzwH>^T)Ntj`t+Mt8H7H zH}yjKkO?-&KfeOlq%Y~HgYl#v=gMGF7LGMumjSBWQsHB+WY{UT(D|ClVU2EElErY% z4YrKlfMQSgovRh2kyKU&ZlH!RL{G#Qba>iWY}089X6)#u6o_D{A9%#KRHtt)vr2YrC7Gh27Hr3> z5ZcMk>dB#ic0ki}Wv)|9=phxt71c1XXhnu>$AHsddj{;q8B@2rc zWy~w`{D;V-e&fKA5*o?{4Fvj#6enKWHKZInQVQ=4P>Wc4;S_fs1EumR#5sDw2mlkU z4l-*L6A))mE$qCVdSyV6?h=WUTT>Px?n@~Q<3~rsy@~^aZj_{E*3k^IYxsw^B-egC zQzMR%t$<)iTWS`)-fq3}Mn=QosiENCV)x*1dh6EktOdhY*v%JE7xRt_;;ULvnuK27 zTLYlu_hNN@kg$^eo*Mb+HpM!Y@LOf!MBYDhd@mM@uqBdOm}kd zFmN6w28y@(XCF8Y-S6JR#y&LpHW9<{t|7&3^ZtU%@@DGFM15Ws&wRy`;ui~Z_$>U? zh!nWRouSp?kD9Ap_k!8^%%ov%7ZwFj?{%f{F#e1KX+6f_U%1n$~TO9}mNb zg>R@Qd5pD4LCiuF`p_HBE<(&*NK zYLj}R9JT`J2ox%!R3w`jakNdhLZ;J4^lCh?GxP8?hks*)6h0vl3-fT@%VU60QBlR} zg?y=uEX%;z|DHNK9Z%gD@09552b8wkGlyao!I^UkcXm}9FN)lM_Zx#-~21&`!$V7gUUfDr> z#qLY0&aBzgMlBSKpO(S#$oF;+HZRxx@gRW8)Qs4SR-$!}acK<4vg*D5T)qE=cdoUy zp_0nsj&_C$R=5LapqM1SS!pk=SJ zrLN{T!PhRI8^y$M(p1j_{L41nY}d9)CsjDCPR}#P&Kx`Rd^a(h;EeTc=X`YW4?muzAMBsc z-CP;UiWYB&cM~kI#;_0V62Y0-cR?VLGes;G7B}wn^*iFW>x7ht=G{sVNAH_?(agvp zIaNP8roE9^`Ax~6Ts04L!&R^#!n_>OK3HyZQ=xe8KxaoDdD8Y+38y_Fp|$JC$o^iz zLi5VcgN}AMIz0VkKZeY)FyRD6m;Qlz8v1gSfH>1z&+1AXR|!oPa=zDP{NZzJIl)Fb@PH{Oua-G9XF(K{(Qza!RY^cXm9-@`^aq-gI%U((-l|Ig-& z`@%LFBfEm;pL49g)s!vwiWR|%T2H*+(V`SS$~NS`F8k`~>sNbWEemsFq5LOh`5ZZb zZ@)3_K?H~&4tB3V|BH93jnP^cWA2pCi?#?JU6Cq840f|6RXm0fScrPLdiIcNfT1d zt%Pdj%9pO{fcn1fb<87%Q_K%HKDsgNr>m}h7Y8SOI^hVz$>hRi1(%@7ZwUgy2>eLZ z_o#ol_f>O_-Z5og4=*W5kBJMDYP{QUXdXxMMtzjSHka^^+iadSpML4Dtk0(w=$+X>%K)AN{xYp(YE)Nu(Zl_m({0s*n0M4tgihr13$>TcyDKWL5T(G z#sSic7usZr=s&B>oP7O_XfiQc@=0iFYATaL=_FutI~^Nt%vXK&l-Niww?^L^*hfEI z-A%6`N36{kF6hq1$Dlfxkg&u#35R=IM-y(^vc&No1p3+X*gtvqEW6>(O{tEBG7{=V@2?VHQ%Bh^fkMkT{SgUGG zu2jjr({JZQ+_Q3olCakVy~fTXiWRB)Ri^9-7{sJU=a^efmng@P59GKqeAHDyT}Cr~X5j+mdeAjNHJYVz+%7WQ)0o4qx5YM{rf^(71>&@Nx9OlDxB;jF*s zuipCg4WMe|5L0X;2M=LYwru&|ftkI$SsJ?>5Pt{aw=mCJY0#`;J*_(KHT{s}i-MX; zKnu5;EV)TmQxs`k9r$^MW5-eZ`$!!^`eK6)iay3f zQ#Fov7W3j%xZvg6*qGWMP#a8FT=u65>P3W?m3PAlndbV33kCVV7n|ujZmugeh+p!d z4_bnx=z4MYx&-vBF>KyH(U;8sE&H3edqI<9`C)$ZC5T#8GR>c z4a{G-a*I}p=<8cCgn*7RoNJ`?hWSe-;uo#YCGx3Yz;)a)}5bMeM(2#pIUI+T20pO2T@cl)bHWc46Hk|5JhCVj%5DC^B!ong(rw?6 zxvcfu?wz!~K-co=`yoVl-nY&_&_Pl?2RO^2NuGkQw5sP+pTEWd%p4g_SHl6>nt?k`9PdZb+XZf zL$4~1L|BMbKuvFbq% z! zrnAqWVPsAobe`=ujJDFYWHYCiE?>bT)Q<%uF$$S`F}qfqZm0_HuSx*#NODHy}?IG&7 z`J~+mtp!BEa_n2`HzsUWtK)x}eQ*6CiZ_2sQ}?8LNZdLJ3q_|UPUk?u4OY215kyx& z!c)@~M=y*+uedS75%}2n3u|yBy=Jpdt6%qeU#X`m)Dt@~Lm`@A+{sE=nKMHo>@!u+ zC7(iW-U_LT1ZVCL#ild=0y`u!Ok*LKA)XvdH#~MXiK^)A$pI_92h(1rCA}>?W#5vOnaZyg zVshrxg~{X=pbTKQr=jul!_^Hug{tk?Rh-Xa@sIDg(fq48zp;0j8PSxS=j*8(1YBFJ zz5n|qony`6iMrd5j zxc6Wk6(a*p4&2$(zuuYu=-qBBV1L=4edv!>dPC}uLG~4JhD(f^ZjlPZ zNEuZ!L_k65J4oD3dlE+9qBZ{rs7mu0k1G`SeXObYq_IxdIfBpqmMK%zjrYOJPUE4V z3c#UloG|J7BhsE${pg@w?>;vhVK08m5kMPws&~C*-4_Zox)af!?YDM8&tka>JG5*j zq&o6fBUlUw7V;lsF_9|WUF@F)#g_GVrIIe6O1o7c-2Dq(0eAeboB}@qkVzq76sC5$ z^V#N#&Xn;z$}{`RW9pKZ`&zG%fk#2`6}4*7O>Q1aVinGcXo`C&XgQ8$FRe2dDGqIW z{#MWu!`II**R4kk!PV67D)zzGx9laIiW)q2j^&TCq`&vqk91Mqc=!CGWE3pFy6m{km1*u2&KV0Rmjl zmh&}mZIn;DDThs7kt>+qTK4iZnP^v8;w5@u&m+qY z(l!rJM6gR$?5=rEs`U2$JXU)1Z7y;qkaJT2nG6p4y?orrGHn35bgE@Xsxsl(1EcdN zvJgNLxcW$E91N<2(r+2C?H54{@Th|nKMh(NL(r)w%F*1_}W-wuD`=*Ib@=E0*Q6M&1I$qNM3aJ#$UaDLA{JlGDM4* z_Y=5K=Z#8EGXGQN_5n=u2wbZG0Tj6~cos>%eRtA%Iu(!&;Z2bMT=55Uii|)h{v9_f z#B8M}kv}H8DXxX2uW@(K2sOSI5kM0RqP_t*@c1@3EzJ@A8x;tNrS6vUnFHj&-e!DtdYll+JEF5Os z4T0@AYK9e#go4lj0#fe`)(CWvKWZquNW6=LCneizDBsv5GV~l-Af%(54xEZMydkEm zsu0JpyAfBwx#jgg{5H`19YLqw5a65xAg*L`gQVh?kmvBjvL9)2f3>+efg^m0{Bg;TEMDI-8HCB9tT9JB^Ky-7?5CJ6u5TwWv?J|MKuTZcz0xluF zCa^TAn6~FteA?}+#}5#sUfGN`Xdv4nH@b%FV$22Uc@5bEp6JjXD1Hy^`AeL{VSmF6 zei|1{$T|l&+zcA|L}FrMq}?Epf$B5seR@d1qG#b$#j@$jM9fol&QmF`7eu;vCk>Rp zVnn_&EITDPRx)}~IriLjDP8tj)mU@@1^*)2T**_#UN}^MF|HbqVZ0oo&Q#Hf`y$ts zW4OX(iOMnTpzk*C)s!32cvhjv7L%lMhLJ06{=<$6Rl*Xx3y5PuYh$d-eV=vggCv9D z+2%7(hQS)*(wLs*VqEOD)8gn6KG&R@rTYuEavyjK^u#=U7DMcV?dRH{xYDx z8wUvND!1Bw&2MI6cL=)0!?|m+EpZ~nCGZ^xF8lyim0Ebo0lSqea9SQ5n!$e$SOv9l z^28_5k^0H7vz|FL^Ym0|lzD%~`N7QBezS}GHuiZ?RHtw;A zVaVh_=I{dVvpKhJD_gPX*9Y{g2ju~@jodpa(Ll2ZoytEWAeI5r;}w3nJ$o&MWwq=z z!Mai)vtaMlwY5UPtIhbeU0J7u5?~@73u6 z##!eIWHO-V7<5v8e6RTKAtGS!HUpNG$1RC8)%;Tr7N(au!FS)3N{)w1wl)SQ*r+?(YrXU(I&7>@v$gJK@H&RFMf3nTQdW ztAy8vgz)X}lX0Q1?wPAA%jQ1;ci7+$@T|d(!JXZJUSqO||1(%^@}mgXUCI9mtR}eZ zqz8&NQu;PvEQAzBXaEMFNPzy!H{k+?M9iiX>Zq0b!drv~1UUaLV-X(M+?x3)Yho3 z-NP9``RI#}aOKP>HmeK^UR7lj@zUHZyDY<8;XCZe`S1N?JUizE_+K(W9X*0WzeDT& zNgfg~WsqwFcmuBWrrXKV{&pR4L|KH%_QxicRk;i*XE6+FoS%)>=JQ{)&fOghSufa@ zmo3swrEla77c>Va>f}_y64^8}pTpqoT$f=LM$*wb*5C9yw}S~&bdwb^fUdphFV62yE$J=k_z?PUpo+(6SD1P)M z?OBCF+-FYK9&RKypg9U#P^3FJ_38u%qg+c>Ty>Kj0{zI`I*erTI#AjQ<`GvZeEaM= z8I`7{#~8;xL9cnp13lWVoXHj?W<|*V%CV5sl(o zp4L80;wenkr}7%goHR9lwR@8pHlXg7x|YuAW&O1#)RGjNZ-{mBRlatb)ZGtPok}am z)&~ASJ`ENb$(4(wXVX^tQ{6-6I}+KsJ7QUi*1*i85(H0+j>}i%djB2E2rv1L)+Xqt z{ECk*MSiN*Pmumsz6`LEF1p-da**j=co=R*2atm45aRFI%;594WpxbRsB37Op zPqh&7gXx*Qx$na=H$dOGCJ(ZqYOBI+Givs4`q515=11lCP&$G4oZByiC}XOAFi#jh z0t)Nd#xe;hNZC)&a_IiSN?%i!7{=Q0T!*Uxvw-sU9{heVX*p~rnq_B;Y}DwIap`M66C8}V#_<0 zstewYZcrbF6X*;0D^tX)2nWx5g@}SbhF%4aP!H44%I0)P+JbpfYK2-i2kMgp!ECFP zjRD%Xp$@n4(y6uA{|oGotr8>(DMp<&Yh%O7F#j`0;@n|?OBxz|_)Y^d6RdxmEyK$j z6gT%!85dAZx9zQc6ydq4#^H^>0p9@kj?aGL4sf&GeV+3~~qIkg0)u_tT2Fn9!^o zb(%Nd99Vy}g-wpbXIjZ8KE%zG6-XV!>XRDa!k!Drjmb0Wa30v*nHA@-P)33G*qjL~ zoZJJ`>I&ARnR2eSk6JaTCIaWUcyn)LtJ9$cS&EtTRKulZvgJQ*_|>Qh&2 z*e7r}rQL3KvO@L4iinCRPrHCih~kh|B~w0gs?%KG-Ld&g6Uq-BuA-4yXyK`zQRnyz?#y+>ezh!z09g&KM(D`4#>P{|x{CSlatbf+*4c$n)%Fx%DJ57=w_5 z^8$DrG%&}l1#~1oG;BoR3-b}%~eHo*Z4-|H+=0etj{YPUO`&>l5#Zm*!N zUq`8OWULb!f&?21np(uoA7|LzT=1;xMw@xEc?RvTH^PFK4 zsy7}4IaViU&U$=q1exPQwhwDOPw9HzBtE{RLq!uEMnP2})NuynC&nn_oFg#t}bJJP4KR zHoglO5ox2z)el_=AXVAkFB1MjZ{V>)1pPLr#IWlhARn?fUp26EpgKsl4bp+9hs_51 zAkx%|{+(wvvUm>0hYD+=omb)kD&YM^jH=hbeVhs1Ucd(PEZe6RCy)}o^{u-K)=)sX z=4G-f@-_iSFw`?uyq9zwv>t0*)N2IZkG-fMA~SeVbgR^> z6Hd|nVfMHOo9iw~`d6TLeRWFo__JTD)fjZK#m~^i1C2BF3b!%F1Gm6nvcTxJbotM} z&_eozq3B!((1?8ClFrO!GrnRx0H$P=KikE5;&SR57eFeN30TlZ-*>JsA_MH|{uwXi z4cirE{^E4icKK=w0{M6R8(<3#J@MM9;pJh<^C*WqLh$NvRW1O4dfETPnoywfAC)*9 zOOFr_PsYsmq+5t6N#b*q&D5%PTqgiMynX-#qN1T`Mj5c3&d5Mwd|Zon`$w2`=#0#x z{-}utS3*Fv(9BVjSeTJP^EyG*RJ?c{Pgq1%QL3MbT1@F z@Wb-!@#A8b9lW>hnU%p0=_-Y2JzD@mg-uKxM4#-z)`2-!GTL_N02(%BS!_2Xtgykz z3OK>OkhD6I-MzMW{e~OJn3*b7E?S0k8eWL#NGApC38> z3_jAWckh|pbO9xU4dHSFGzC!UOl#FBb;)r#w{GTZScTn8}c!;LLr z;;2?CUt!TQ8=QynBB0OK*s5RiRXAv}eeOxoy=2$|)TcO2^OdKswt1qlfb#j0cF<0vj zCWgO?F6Je%UER4Sz+YOo=t=buB*m*yhVwKtVsK{4Cxh?jNdKZ>0@ILp*z^bv6&Y`g zYXYcf2VeWriE-h(c{{e<4aYbigxFd*~YpCASGN z6GdAJ9V6=vxhN<(vc5qv$&EWR%udX=WquIvy@Ez^cCGTlbhP=bh{^BBc&GKMOT^;1 z&Sj}~gGBy2va|!v&Z}R%vzeATTh*99I=2T@{#o9xTCh=e zk4uFK(ff!%e&QZ%^umGw;35~+S;w9^8<;n*8%RNcC>e7@GgoNhXtjZ)(?5uttYLWc$73f1CH< zLVlf+1^`6Y3GhH2_$|N(za`z+^D6*o{ZC54|Ir_!~gQ0r5e;@gO^(EjmpH_7q9iYD49OHb_(|RCvug(#{vlsZWL5NXpB|TX6rhYrx z2%N6QWgmOfk67f`2$m`XgMH~yyru=jQ9{;ubs@*E+me*FL2V$!VX77pWz)0Po~?Lzv zI{g3#4}7Ama09@xg^xBs+EEC`8ngLGg%UqNu{{7~geE|7H?Da^hzJG5&RT>$K!z@= ziCJFFD*@}!{>wUmQ9_9zF9wCb8`AkW3GlBgHaHAj!6(0YeHyPAMySEu55Cjh%Q`Z; z+VG1^I1@#S$O>Ns?L*u=5G+9CxfVHn0Q%^P9&n3h28slR{^wtTr)w?`x3TD?2wr}w zedLT|`x2{mXJ?0af4P@XRQfyq-hcz|AHt4uIv){A!?+vLm|9?Gh%_2#ig4-6n&!2< zhU;4cLQVKi=PN22^emJ`P0QbVSIy1kQ%xq`tl#(-$uof!u#gC_kOzNR2s>ge zd?D}t+Y9-{cvL{@gImFi7C=Hil^;!8Mt%iqRJ`|wXb{)20xs0tOhx_qeNfWvE|x)T zqucq1IHm6c@`n6Rp?vsvp@ie%Krd$FZUS_4meDt>GsomBdrL1#XbJ;1pIhJ z)Gsk9?mR2|(LD`D1g3Mn0D|9_t^|Yz0lo-lByRg9cC+9lz`GAkST@y)M$U&ePO7f9 zGSKpY18?472M0dzmjjpnWd%Sj9c~2n7UY|K+gh5S`&)@?Wlp2={7N z=gIu}Th>3n#a&1Wo?7s}hJWjKr!j>+NWj1YhFtDex*^T~Xi*DLMK0vLm%XkQDK_d*K*@TW z`anbAkI_r)+3X2;LkI0RYhZ*M?c^0Oc}vQRQavEl_~woTX9y=@J&9HV9 zIuE=MFkdXB`?Cu1gW?5ZM&djBe9(b+MccS9e7%QxH1!%3E03|^X7;z{d3cc=4B{7X zd`EQ>u!&-?G;Sh@vqKM$>Jo%N=Y5&6!af=Z>v}w1Sw$jWh&Q@0T~1Hk3vH6)j!2Gc zgsA^!`rzC^g$B`LO+WDuOgWCc3tL7 zv7@0jOx{L_irpMkXTJp2t} zT?;OeOf7^+r)l$0^Y)1*Ms~ne?h;z&PVPMysCFKDyFImR`t;~}>)R7>X`@x5)D)uW zg4gqWUx&tbn|kR)9Al9RJz!||rlWEr+~6%0$RVQj0>rMw{wq?b6Ls7}ig3&g^GYFOwflodD)#y?Lf!B} zk1oR3QFWEtFook02DNX0+B>Cfk2GU7nnuN12>5~WDKfaZr338_$5^P|R}ZVgo|_lj z%Y4ELikLqiB9lUDGjI)v?xlO){N*Wj01fy?yEJ`E2P)iAQ2GW?P{*~RHns6$JGn&w%oTPf; z=BTkCcquh|d1!G0{`}$?{4aHOU)?PjAr81xPpMz9C<|+ni*Tvja41BjG{l`bP3{hV z9xw9S@fqy={rI}tv2!qOsR;vvV{i%JU-3O1(M!Cub7^I1cztdbzQsSn^&@5QWR#d( z_`(XQ@_AvA73`k+G%aLOVnGDkl`q}I*0n0|ym}9ze^F|F1Y3ksA90Iy;P9zU_f6u> zv$vpYf*t|>qiW`iGabuul+f5ZUr%b02x=9I87USVLT38=-z~W9(e_KK`3PsuM~52k zX3U%87OM|j@06j9yCCV1>WGw5NZt7qhZld)Jo~IUcgy0 zad2d5JT5EnxhLJ$OJ|t(@p=~iX$McU{myJRckEF`32U548#caManA9dl9@3n^{qL= z$PkhH@n^2s^lgrY^iui?m8!#vJ(2!!x``M-IvY1gd@^pj9c`>GEI)eYFFQUj#iH=y zNd4z_4-k;kPfpAs66ed<&mw zOT-dHR^7lS321+beNX-5eHiQ26A7u{_NvsXiALs{y;Dc~85b}NMFD-Hisz6IAH338 zXH*@TXWdL(feXLwF`3duH$3>M=l=cFl|#LO1|UQY!Cxf%dfV3Po<`8&bE@wa!&!RJ z5jSl335%(-QbD5cSZ>ildIQ>HA$vNr=FEZZ!;pS`32WTQWQmNrfG&)R!&^_j#q<_M zi-z6W(oEn(LVp16L7dxbiGCW~{rlGr2#RQMnPa)tzYD+gRWI`!~)Yoj^@o-+@*`6;sV6C$z4F|ZcHGu_>*P;dae5UswozaN2_S^*}` zFzdxlBCkdKI&7R{AakZKnV7&Uy~WKVuH_x_#OuH{5BDi0 znQ**!!G|mVWQ9hJ?!%aF*4NKH{Ww%44n*e|A@&Nl+Gh4xEa#Si4T~cQGl3%byacO} zAC9l%1g7HW!6YNVh2(K!rZ;o4!7EbjBb=j91f)nXw(_qg>;zWH`S8Z-&jUaBgOaPE zyhg2)SQxt-_GM9jsJS-=C4z;Uv@Hw)X%)!A`$BGaOP1ecK?v~#=uHZr9HORB12S*v z2JHrTUK4`$4~FIMm&}$sr1?6Z9?~RXYAppeXN?O#>5R_M*8jG4Blt)oO|(nS887+* z!z0CFB*dk;jN~CaPW;a2)|ulCqy}pP+qWebZegEt{U2KQ|Iznu4Hih6J~e9alvtSi|3}v9)g>^n zB7wb#2?4S_Nw@V&kwX99D3Tg=3R0nfcSZ%=XBPuU$9M}E@cHS&?Fjg)&A-aS~2Fx^{u>+hB!{5i5(BT&t90`Q||3jTvv`aNVqmB9JU^HT22FXXU2`+CgwYy$6eDL8P7AiQA@>#B+!QI|{E z0Ioe_(SOn&$8Y&8HrETh_nZ!j zWd$5E1IzS!t}D5ZxD?Qk93Q~lvg@B+Blp;A`*?yu)VBn1=eP-fvHl;N<3HKGLF5k- zun%nAcV1YynCzWwn+k`ui2QrA~_uXn4k>a<^ijh z{lB~V>ISwi=*Qy`>=s0DE344`Co5aiNB(xaJX$YEv;Ny= za|?ly7vq)Bn3?Z47-xJa*HCl^vZUKNXTG0TwN@_FfLni$b>O2?aPu%M@TjzTZj*X2 zqs|_vv(k9nC8r;JDJ1EfJaWib(qfdG=bbcR?_c}~|J`TR{Z$3^**IYitgJ5r&k$8|r5 zYDn_X087`jE=O5>c3#@hiUsuC)TI2Dc_0Fk3~Gj_*Zby2W$0BmVF?22bP6X==tAQm z(;mC)6rrSEi&W^3oLa%jZO{G3$#FGb6Pb--gFF$Hh8~=qee8Ryz!@pJjSV~>4*1y( zVfk~vgUza!u5NQhOA_kK3tbzBTxPpv+&pIR*K3`<;GUL9DR?-h#LKTo3OqizdU zs*kz_UGU7{#M+=BfYa_zA8r<>}*Y|6OeQLi|;Wor{vVKz0&~{aSR{LFy?Ih5D zagO;Sd{%oinyTsE2_u{3Qo>W{cN&G{WZT8mypJAQ?>EBM zQAzm!p8EVA9Cg5e+>cfvLcK*~k)C-8C%fC(Xje4l_FwLpEG5pq>jfqHTIanh&-uZs z_O042-fidf){wV1!X}_oZl|x`N~CSl75ErlXYT|L3AI?x|1Mno8@njgM?oZ}mtiD5 z)E+aDqI<(aS#H5DZ9T8M1SLIu8^;a1&qpo8txKQ#4=$mp-L_wm z%}R2N(wjUUO9auRmeErtR=*3zAUqP=;(STBfB}=WMPWj371CLBf|DLJc z@LHSb0j1eNro*9S9tz~3pO&%nmu2j)Z@BBOm%ki<&`VFvi8qWL`Dsb_-rw`u-y@$v zn3;9RbDJ)5EL#am%<102SEQ~VNN{Xff2X;D{bGC7+0d$QR-rcx*fX+6TmOaOPbjKyajal7jFF6i(laT+8X-L zF;yzuS4&^{^s!?_gg^7Er;={9ic7 zPCAX&t+@_8e5R$rqXTxndUvu?Sp3(7)p)K!81?iSR$~^i_P* z?TbBgYD$#(p`gjpHTJ?BQ(*5ze2P)f z+?tNoIzS7g<+doZPcfbSvy@!ZtjXuDFzaEVv! zA*{Ck^Uj>Z-g23{tNwCn!=*mP*?g*9t@1|AeU$#o*BI;0!j+{BvG1 znk6MbK^krY#f_?zehf?lnlW7iBhaglf6yz%>HMc~_zA#NgfmiwLA=~jtIo1V0SHLd zuHOlqCuwJb9(0?Us|dtbD|GiR^mt&EIUg?utS4 zxQ^>kNiz1v>eV;DO|PQQN2M>v?BiX1LZ1y}$+UG3A8@g+)v=N|Nk#wQS9rzWReJpf z-F{`2{J`t{n`M)~t9d=F4Sg}$SrGDKoaKl7obP~JhvN9=oM-HS4yt_yZ8wYw4QnCA z3%;{caIpsUW7KcaJ@yhUi?R>Pl68Z)WwO<)s!Q zV4_8U$-)FXi}Ynv)S^g@SE=1u@(_5yN|$TwtZJ{#8l_{pr=G!)f6|Ejf{l0A*Xcv1 z!4Jwdr$na+xuW_J{{6b+5zWHtjhd%rjaUoP*{W(IA;Q#9KvjR*6s!fTNFErB!u9Ml zYhgq+EQ+MCM*C=Gf>U-_#&i-cv$z54&b>EoEGEC+j;pn)GZ=gDg9ST0o8;STgC8b6 z183T2=%g>R4yt$L!%bGoY^42T_}*sr-Q#t05*Gci)Dv^fe>JR`mEii^hIeZPcX<%t z&Yr!Hc4hZ@26tflC4(KY!4?mY;ai*<<@-brwm4$3h&dYL)Ac!R-rVxug%wO~99eJG z3z^qyQ=StEHG|>1Ew}vyQRYbP2tE?37IG;F#x!9o%qlR5>vQ1X8L9^rMdXW)J0 zmH|lnF0+!JFh$kzP4jkkRsq@~f%8_6qUXg2dBqjl7#VGc=O+W<3tzsxUZ||Kj;t8c z(!B*HHRhL$6%}d8xPKdC-P~7j^U^-;ez#k8ahM?7X`+OFq_|qsFioTHJYKu8dMX-5 zRynF{U9;)7>ONS+-Z){`BrE*B<$D`<<6NFiAF~W|+vlX%;0cAQy{B5*a#< zTTRTNcAq=Vphm~veyD%1J;d3mqUdYy(~zIoyEpS?IHi9{<%_WnCNhmf*vHg#=P55;zWnl_`xOf+er1Y<9CsS{x9h}N zww=FyuAfg19Xk}?Vi+M#rX;vdh_zfOwc)HDdDgxXK0ZNvga z_9itV1l1VB5+?ZBq>02H$1x^7g*mtEf4ituKo9Ez!a$th28nO(Z4LO(4rlAv;b6iK zN9XpZvrGAirXgnV%Hjk6V;(IoEgNy(^Ku6(5_UE7M-kRM6HhazJ@`dyl5I0QPWsO6 zcdO&R8KICz{`e?vLyrj)zSya=`gCYhXHxIbSXX*U;S>Q3zT6S7snWK&&Bgf(ZR^p+ z#Vh~q=z-qTGD0C2n~}EuT=l%~%i4MP`!j?~6R$)u^skqbvpRje#+0Vccl1|__n7vY zFMHcZ2@|OJUsMHe)M_4Ts=gUDf9L4YFkd8)L6xL{wSYRn+^_3T33VIVKm!0^0AyzE z((J86*IwP<}-!gb9QA&C%C^b?bpa_<2WsD0L^Iqvoyt&S#kJ^Xj~x&ME4??B|_7v9x?k zH0Zi>=N9jk-GE?P(KTrG$1dGAa(6X9IBS@~Ni;M6E`Ho`Z#hXSf?A575QX<8?mT@+ zv>@ineO!8lgDyfnThZ0e16#Zq2*K4 zrw6VRCCoS8yOs}_eC-`#1L1XcCEBO{YgGG@vG>nGDyiI94c>DMQQ08dxQ&Qhif6lZ zUhORzK@BUa-Ykq?JS9wy;kPDY0Gd0f-1O8Y+U_lTP_feF3^$77iKOFfCqHuda!@Kj6N>HVT{qD{Y~>u#RYlgwA7 zI=Bg^64wPrkf#gTAMafsBlFIU52i&?LLY#c=0HXb32hIr`e93)V@SR9mdLsk@s4Jc z>_ub$;A<9sQ{EeJ`4m7~xH_-CJM^2MDHGt>Q69C5e!xZze#Zz(&0$acVo4TxB;48( z=$rPrT3^FfZ@%ZX{P_Q|_ntvfZcErGAQBXiARsWnFo=>-P;|&h6hssWl2xKa9g@Tm zkRZsA1Vl23WJW=94$1%$C1-U=k~0kHTZ7wu_CCjbzN&kF+`3h#in2s3=6!pu?tc2| zr`N*!u%>|F8sDcs<8{E2*A3CpCu^Duju!d5=~UVuWRb~3(nV_WhbC25_koa9GQXt7W)kwo$%D6~rN+Od_npuZ@bo6oB`(Fvj7S}_jNOEe!2OxXQkHr$*qh>1t`DXjV2t!@P4 zi0Qj40jedETi<(mo1H>;isi%7{7V7r8OBM%%!MaZPY~sg8o!n4_Fx2MSwdx^%S?-m zxzRAeKcIykdu-`NmG@4AAdi;vhvBvgTkmqAB$tlWxlTJbtCP0YFmI*bNRl!X%dHGz zoWi(0ZWgl6(bz?wuK^IQd0w~B^!-N$^^l=0@q-pQ=5K?jGyvb9CXl7V_vFFHtq!8+Na=nN?dJ|A(9ymLJQl_`kRw)16sh7kdsm3b5RDFL zU>8tl7RfY>8n1d3^ce;%=ujW+pOC=6zRJJ$&(ocwjHDlo2bY}WuWFK5$a5OYgsE-j z2>$gE0Jk~35lbYHMLn_8#IprO44J#Ts)_1-Wvxi2zjCPZG?%e*oh3^!oxR1o43J3!8KUbK?_^rN;Wz(Ww-RA;v zYt(F@TDCUI`$hv#--pxEEJDB1iL?)-*!e9pA+g5kOgGLZfRgj-0G=f9J|x%N_aezj zB{)`BOy%>lDYh@f1pdFMQucR%#RI1m!B&FavL>8f5^|N&ofE9zq&tl_Ro$JNj(4^P zude*3v(;(EAX%vMp!=W5qII<5$Kxw% zusf!C6~x2n6#R-`K6}BIS(+~CH@KMaP%-~|wDnQ%;BWj_Nf?9N>({USKg16sFpu}C z*y6r%6aah5By${(ckhfY)P4XR=!5>(HN))hbJd0Dxeyj7rQ)B1CqjOR-s>mL^Ph#s z_7y~%^Wa&NxHk`#L8$Zp@aoGqE*};iQ8JJn2#HS+l_5K$*P`(sEA!t!7OW!p*emei zj$2?AKT|yCU1a{fqZ2MEq9zoBzTu-8HQD*F3R2szRN_~xFH!^g{l9J%Q!nK8M`?X( zpEn(VC`HB`g?Y_-!mBvCu4786NUb*NKnWnNc1<9p2qLn}ghQi@33UFE_We`E|El?8k@^$Hiih;9b<}3GvR5DDz`0 zhWN^iD~WcZ!wgFtDo>(1iaC$zrIo6()L1=aZ6l@s&U*0D(_u52 z1XvWo6WkzrK5k4qa-oRyMYK((w>>yHc#40DVT@@z^>gCINT?DSUK`|pm0nvGJb?t^8ZZH+8!b`F z@lq6-nifI<|BL^5i;E>zTVZy}j=RCz9bg!hiX5kysWqU|%_6kVqD_ zi~^lb3Z!B#AnZc~sdo+{CKS_LnA*powNB3n)#ZQ3VE(l7EmERz_7A;v@bj)GfT1tp zrCxYF4%c_EH>Wat>i|WYeevu5#nsUa1MAS`zP)&fN%KlG?Ev6JzzNL4B~=Wr@AKz{q4gfZXkkj*1f1SJf-g ze^hNd>o)GSm+rBaBqVQ~m0I|e|I2${{`WtGuZ3}X0D7I!bX(+s8i>%2-r4y5%v=@x z=z#phBi8#3_+0jHVzHmE^i+nGOw+Sdn{@ha>z#Yhfw#eba~`F+V`X zt-W4zgmpd?++GxRJ?&F#?raT4uflGA-*{!UEg-3t^w7g;EY#v=0tX9ZnN-&`xQLH! zU_eJIB3!7F&%vT2d{D%^xfnU9^ww+3x6-{sb*zKI@Zt4Xv9In+cb%{95f zs!dYY$?UrBOD_2?@h1hlKe?v|``_vtapjEN91X41<1#J5zb)p={mZ~5?;YsmP>&?* zKyQf<0+Q(iK9v2t%mX+sKCd1l1o=kM6nf?_(v^j+qok782W<*CMY$&WrqDjOX1uSv zpqFT@X1YC=k6jw)?;$mBGB}fLYxc3NFSoS8qP_A?->^$gwk#Ervu5wA;ek^fRM&Z5 zOJ0sctk9oC#jEfUOV_yP=Dc{pVq%=?Tyf2cidW)ZWaZwLl4K)4=R$O_Z`LHxAAxVM zU_o=b?=!ruz3}>LDSHk9f54GZK7^M{hJDAeN)#_buW}G;P)~@}`@g_1=^rY-^){<$ z%Fm#EkGBW@4=*6Nx<5z$cUciRVqnjw*DK8AIoN-BHwV(N{z@ab_#4b{Bj>7_cdi_v z8hoDsfmZA&8d6kYqqovHR<*^o6vZ#T3Ga-{10%b!Qc}!&ZdS6W^NCMjW&W5)s$j(L zYR9(lxl!8?=2 zWebZCzMpaMzo!ShJ&FFoo+Yh^>Utme4>PB;YDNTE_TES48VJgBz#jWTh7Zixb)S@R z@h0}XV1L_MBLq2{aC1zRLEkm2V6NJ&&15yskKqOv<|{5oD`HN;24A*g0%}7tMoM@^ z?67G9SA%ejM^I6~8xIx7U3Sj>(gOTD5<1EmPh}c_IP;wo;otkpfc)~Rvy#TVpZge~ znsZz~W@LF}(4jKy(_7@w^=Lz6RDn3!EX<_+^Wf_IpiA?TyK^{Kzh27x#Y&Hl4c*Qw z&cyJDIoQ$T9c{8#>POj2l=XMH9G|S8i*?aI_c6c|5qR)DRkX8QSVZw3u=xM7+tqV6w7ABR2YD}$_AfkEa2eg^ zE6&31pKk1oatt?XSfjbSQ~hq>mae*Pjm1trTR3oN{{7WjD}U_jjtfjpZH>yj z(Y6Ec15sxEa~GB@YINV^@t0rQH7DI`h@mrU&xNnHs(+bG@D^%u+qL0Zh}Lr)6BE!E zf-dOj_lf(PtKNyMbZx4^R;X9MM7i7Z@Y$8W-4c6+PikB2XLzN(B(HmY$q(5=)-06! z@mG#~YeNm@Z_Y8;RqvQD9d6AJMp~F$Pbpyi8IPzRsT}Q>)W4yfk=&spuIB%;LehEo z9fEBeHeMF($yT!-eBU9PD*J-Rr21j;W6JwBeV&X$Gc*R(UJh?6ugpwllXe&H*B3Ml zl780jK<-~Js%LE$)XbDZ%ZpZ@whjMMl@$8LfkYq6eA z-?;spRYlOAyALG1nfvE+5qOLJEcWOB7P@}50)7IOOO>FO)Mvc+Hx-QHt8srF$9Ew_XVw>;O!$1qVVyq^ZA3fg2e|fxLSq)TG*#sg8O)eFu<35lqM4`wZpMyE7-{5c7sL1~r%>I!Y!IODs zgNMqdO)m$yQL}82>5nJD9+g3mZr6ZkzpKiB1)HA>4mblX@IG44H4MF>O4%dx6o34F z1UEjNP|a4#{g#*f!!Cb540t11RJMFpJ}|D9o%1i_!jFpH0LL+o-|}dGz`Q?J0)PlD zP@ik1YU)5S;k;MG<$hYs8*&047v;p3!v4!f`qvX>^2&sz@!rnn18t?KxP(8#s|?i< zqsNipqWoVR;9pOqi5GiEare>#>b9k={nwTbINH)-?c!(ux?z5`DE_p^ueHtwyChTP z<&P7@aE(cGi$9DWCWl864$9N4wErdX{8}LbA}tW~|F>QKWsg7p_P_0N#5w%wKEGW1 z|Lg4%=3RR{bjz~kUWrplt3$*kxlWa```J!$QOhk|BK`YxUJEl;-=)Zpp&=^30qD=LkL6wA2 z*KL75N+ZIC6fo9wmM^^>eIPsYu_4`ut63elf5ieY0rlVd;z#?7iELXIwJ*99RW~*| zJ}JkEb3Y&M7?#%0F>Hma9?La5KWQxc?hq+Jpr#?331yBJ1X7^u@ zN7hJ#N9gTk>9>88)R_K5Ebxa>04h(xqhBsVfD6vG{3>#O(Vzb+-lzjP@hK$UK{X91 z4}^aYABCwwMIv_|2%l8TL5ZXW*6Zh}!4W@Xg94P=pWB;S2@k%mPDd+JdWo9-M??I` z&ZbZR*8Oh+#1i8OL|bv(zku>D?i9}+{fgx%e9C^@E)c@JXVdZ@t+%6uf{}R&4WLZG z7jLt8n0@=tdgKpE84&irOeh1vNA>UV`plQN2VedN!+Z21Vcq~>v50{uGw$vM%bfaW zEf%qI#DfF6`A^Vs6~9YA!AmY#Ef?|tso>vb4o5En#j^&YV2_K|yvYH}EdQtA`zP=7 zzYX}m4fv}c^S=%FzX%ArNB@g}|9?-xrcBuF`z@!0UAwUn7NcIxn*{^3!Ddie+Zfjq z2oI41>sV1+t7f{p_dil~zqK8dSua_Dl%n4FjWMI9UtbMUb9k^-BMgqM z+2PhJw&AhPE7E=-ABA%%OW-f+(I~)1sGf7C=oQ88(qJ>seO&qr98fmGr*CYBM6AF! z3x~#k!auqs@UbUOr4(%7u>H-6?``cK6$vF#oS~8$UWWnW7Js~@#G?+|)xA5R7}Z0! zw}aQ`k;*RcO{|F7q?UH5Gs3K|I_oeU(aYrtv$ggew-r1kxu*BW`<9Hk|FI zQNJ?0aa)O%%Oc6MIJeqO*voTwbEBBiY|vw^&1`%5>ur?>c`O#t(Qz8kt9sy6E_1u* z;EMaE&Fq(q(5+a{!~Lyk+lR4c(culJqzweC)-@jXW=CzjtHc?)jA|t!4|bG?yE}G1 zG8#j&J{1VdQU$XW{lW?WH4Nb4;D-dWh3u8WK`>?VyX@{GQ(`yDz%KD*d5cCxCI7Wq zSc7yja%?Ru-et&jOuD0L9s*y+9Lvjy((_F8fgD^0Q&F&4K6n1d z<4G=0Q<+26$%q{L@Q^FRDh!4;k9RyiE5l8f7OM6Q9_>&T+=;2ef-w#3mr$v&le_US zFs4z6_If$<_~p99_khl!lX8=&7Oh@=FCMmw%qtnwV=(r3 z%mhcgu_**17b*Ml*>i*7zng)ZYsV%W(MDDB7T9fIaqC4!Cumg<;n(wcI_7nWmgFMT z?l2DS@b-#HNV{Vi2MS${Q_(B2OW^Ke(6{0E-W0keRbrj{-v5Jj|4ndtIonRF@xix+ z>4lQ<=*bvkqjNXoxzUxYK@gXb$72>-udVa1uV3Z0eF0Un>X|3|3z*u$oBOl%mwzTA zvY~i;wM4;{qGkoZ!`6Q(d#7%UFzwTifpbK-XcEVaY+>*3v=Ah>&6V z;uSCxqU6OJ;5;mAwEM^)wduB%$#r75VCe)Ae5umdS3&x4ukge5fu%Q*HzO|h8{D}m zwS#rdNJa_^vidA3Ppgx>Wmqp?J6j9OiPzp{DfMY~8VjP^i)f%4!yg zV`36>%yj(G(|l6nY*lVyyBK2JbF2AWoQ<&k7htRa$EAb0L+22dEA1x{+rcDK{*)|J z$ECqU?~$bV7YGFwd}Vw@dKUjPNiHMr4Gyn6kdsH*SXp&Lo5sHpi>*>)pUiEPU<2)x z+$^M*-+LD{Gq5PV#Mo^}kihNcU7j0w&X%#Yod0f)SNzi*FF(i*Htq1FiqO*5cNlZ# zI}UeD|DukIH1NuE?jI5a23pr5!9`-G5jWV0?--|+V^o07a5|6^6;`oW zo>TlJ;&YBHe(0ejP0t4+zVIP(Z+HAK+R%AWA<=!YtTf z5I0_3ki~5+3B?#7u77LNu=53MO`5sVU!3*x`J?Vi9MwM(bI??o``W0BUb^uzq_U{M z8HJoH55m%3-Yo)E4cw#Xq%2Cq;*J1@#;CUVtr>_Z4tc(ijYSJ<*^(TAeRLoAaRC@+ z(ft6lL;O91=l`rK@M`s=w!r2;6LEnY6CEuy{2{b6Kumm0^47Jm?>ZEq2jwLnc1$`> z##0j%Y(<>ER6@Thmb*s*DBeWCdZlpo9|DlS%p+~o+qdWJPagCv-6vuNaWI)w^;qX62M+k@55f24_>lBM#L z43_@#iAsF_7ELr0{72gOV}`$&_$&wB#I)0T!M312{`mX+aDx!3O+|^Y4CGWv_Ju0l zSihz#Nea)eEG?lZ-4tHBF@CUQs{15dq4fa`_Epjp*!B^sLRCGxA5Tf|L4yVL#zLW_ zUd8sQxXgCo)D0|h{uC=jcfobUXfoBXG$|abh4(M>0BV#LUx1x^oL@9R;w7r}`--#i zGmreMbR9T$s)iI9p+#1z!9(B@Ty87te zM{uDSw(}N-^2!Kwsd5d452B6}JNRIJoZ&8X6Ta&g?d^zUaovi$XyRW9PAp#qKXbLM z0E_oz;bmjQGh^DOuRlcjz3_fCW5ZlAUl1&@HR8ZUeoj4+zuy>Hl?$A%;P7BK#y|X=yk4N!L;k4X5Iz-S=$cL45gVvUpsJRKQUp zf5oG>@f9?kk_{xjEOc!v6VW z#u*GPkCOl<#q+DTyItfQx?K6(i(M5l+mgbO$A=>3!Q8T_j;0qc=khCWvF%Swj(L$v z9u(LV?DS2UbW-++VN$&CAc1jg`$rC%mx@^lp7KtXiZyV|GA*RilQafgannktF2Rwf zR}@q*ywg`i@n)AL=QI{Gr0xqB3(G%tP^Un;ltVcb;H_3K^x5l&6Kk+>I=$7r^Vth?N4PPs`rj1!#v@)vR>EE7*=JWq7=VQJ{_fBuUo`ztYB%R_ib z#3e+!P@}C7dVYJn?mHj-%s}e&iLsvJyS8I|g?C(k1?*k+?E#rV)8LRe)>hIb5AGV> zcSZ9R-@V2<$Pt=$*(|$;FdbvJ{E}`EzT2;)HL^4qMLZw(Cg*^E^cG4U%h&7Rn`8UVa+L_ig{uCN63v{oh@^n6$_!D;8)L# zM?CxG5?8&D!nQ)*U! za1EU-xw9=n3g1J$SIUqyo6md?+A|&+V0`JrUL5&%)3|Xb%vsD=_JiXVN&GJ3UR4gV zRFVgezkhN?OJ=S!2XGr(-Z#f~PSoM%&`WLS-p?1bwhvcUYfpl$5rv1Ci{*3q+!YD- zhOIK?HSd9bA$QNQ2B$*Ly1Z3GnsGDX2W9SDD!R3~;l;VPB#xB>-G}v+dXsge>@SZ| zU4?Ey14M(XiLT4tD7PtSJ}2xrb4wRs{MSVT-lS|Z$KmUR5DTDIR|;YN_5Q#T5l5V0 zY@wPL-}c~*-*Q@4xxz|LzO+JX^H4nkGLMAAMmlwh$6yN7t7*V`xXP@@A`NsecHTTA zN8Cufbi3HVzU+oC#Is{Jc;sSoQl#vMJFeWnv;Zh@OGQh!s!)Pem|Wa`uuydv6|2~# zIYOLD6aW}4JQ?v|-+30zy7%C>$JHBQoP0G8;s*;YfRuP)QXPqlTwfX=H_iBXeLMD4 z{a4Dnd-cR{HqZ6jvtTUFTowgRNc-%b-pUaGfq}s3QmA{63~_bD74G=wD+37~X4v6c zKQpnkJ`jKZ29-ZjfvPidgOl@gi=5{AOisUR;nOx+JqD3-X7hodshG}5QsJCC5%16rADa_(j0N$U|8Bi~_nYel zJsPT93|N2)PnkAQURmFSKbnw%&%bNP#_jOoOPzvouU%Jk$N=(iU#>q&uM61DzJsd< zoS21?K3F;BdayHX_SKJ3bnxM0TCXYJM^BD1)Z`TpsTd*mod(V0Y_R}n3uYywVM74Y z)15?&Joz4i*js6G-(?0TV&@hQS($A(DWblpOXKGW=Gw|rTGL~UcrD@|f2w5mfl#>^ zQGpYm{%|UwU|3y`@BH|wwxiGLx1?)4E#}K{l@%LE-328=r)q+L&;%e`Xpe^@8piFz z;_}%hSi5JXoh8{hcWfNH@kL&6l_4Pi{mzM643 z;{MW|%6&-RKJlzWS8sQLS!)n!d=s?k!^1D8=&H?CBjeOoK6E84L9A^l#xzWBKfhv8 zY_>NirlbQz`rG+sQ?IkVq!u4Hv7Tq1IwNBK8H`S4j+wkh-)B_`ZIal;6bGtT%v z)V=mHvD+2h-iDu!SXIJiS5ISVhw~#J-a%Rwe>2y&<3v`>i|JY?Y)tJ-WI>zo@!sLk zE&c`5hHjy!U`f3SqJ;?=>3K?`U|x1w0Mk|BVqdm7WL;G^F_DV=iblHDjJX}Isq$hj znqsK&;xUg+U5A<|ZN2M)mCM(bqS&LN)us1)SZe#A^-{a@CI?g@;=m8^>ibdSCtr`- zGtkvkIW5<07hS$BE8ul|OY7mjP|co3_3onhplPJqRNmXdYW@$M*9tx{TR)NhLeRxx zU&)b!t}f><{49KZQEIa|6*rsn*wHx{U+oV{UH*JjIZf30;)ik9ykazgG;IzY1L`E} z>ZKDKeY!@X!#0IG6kv#{NcvkKXQfWg%zG+!sgYd>9X4>(i5ovp@hed{cvniC{|tdm z5l%4D<=^uEefssTG)Ueqe0=(=7UiSuISVFi;LrpZh6{=^mIeyY$-q?xY#>7L`f+&b zeBl#A*2cw=vO=5k*|%fH+vnfQvnq#HbVzK^zMs26Wmw@HRWj~1d~y!rKL7r)dUK9y zE4o|uW~{KnP>KCg9-iC)H}n}+>Y!$FlpJ>ekTLy8uk&))zQzzG_JdnU`GV^z*4&$v z&L^d`&kKCyxA+GaFew{fGSp*0X>FwV;>=gShhrXVYUsm<7bce*PK6c*yY8bcIua$~ z0=blF{!*W;9A90Hzi_~0st;fX`=6lgl*Cu7ZbK*U_Qf-d`{2p9{0KA=OR?eV~vlr(~Z+-V|$g_j}gFcgF-hY2gmkDWprJZ}3aZ|X!7%L_YH zvy2O=j&+6=_yo>e(r(MpwsvG{Xa8f#nKhuNI>-(En>za3{)}O?u21aKQhzmYx@j>D z$5rl$qA-M1DF&Xa#JM zP3nzS^pGryO>*cYsZH5r^qO|BuF?ne44;H!thh^lCGJPgSdO;#UD>7wg~nD3F&Rv7 zkA(>v9-Igz9St^2RUXSv)8%sWVZa6viYwYo!IX2M9ky!r_3&+suFFXp*R=EZ1MvB!7XxyZk;H6yqA`hHM<8SnGci=Bw~CZ?zR;rFK{+5JuWPI;)hsA?%e#) z-V1HQUZ*o_-H46^BhdUVBZoIq&)vV$w^dn#VLgUx_6)5$8)w(WW25_V12?`qS2&OF z(1tHW4PzRg)0xet$NWhIyk5+C@*R&RMgSC81@XA`LGUbl>|wcOrU~E}#*EjS46P)? z7TI;8y*`SHr8Rr)E=>C|7Xv6>>S$!B=k?b2^W(>P`SK9 zjE4zBtO19EU6M2IQmkOiKMup$k-kCd z*4Er1vBT}UeIPzLRly#);4&r|zNyTIxoFkHt?STs*(_2`G#u1keBmai3d8Y*JIm9> zo~%gzk`aW_bN?&nZoGnWD!vE{=TveN;cxt7c^JIJj(sFQAAcnM#;0pB=Xq|xW=ENX zN^0XP;jX7IoUXTaxW&8Xp^K8(UtRtFLPTC#^`XGfR-c}=0DSGU$mA;%6i?akmz&~h z`Q<;d6;B~%M4}i^AZ4ZW((3J1or6DB#p@uhnzB^DA%KnyQxJh1$@YbO0^@BDAcTk2`*p=V$KgIGjpc*zH>9|#f&f0jz8EolJdFy1#?g591;%x2)Y77Io>_fkF%+DFoVYE&gn?o56vD5mhd+O5%;;dJtk@y+bh*v#JB zI!AA3!wAwBrb?y?V3iZh(s2@h0!Bvm=m9cWa|SL8k`BDqr849RHWtV`%2s ztf*wx;0xNm?}+ro0}E@OCSM3?5GL72CMyf)TSrc5Y)O{ZgNO=@*W3O`2}4}#Qei&B z#0TS}C*o{v@{p7Rq$iGqChVQa~`&u6}WdMC1yrclr~%xmP+{I>;bd%8Ehw$ z`g&=LK;DVzjF!w&;70UQ(`6c2^wQ_;)h z)t@p-?Ko(3)#cX{%sEd^vwE~Ct>7MaG>nHXsxl_v<~V6C)~LLnArL=}>&y1*sB7|D z!=+Q)1>lQq?k%j~!B>$tDT(N7K1vHLVw|B;4*T$To|NvhIa=n=G4Wx$0!2d+uvKvy zU0M0+)8Q^TPv)kt$J|Tm>X&&K_fUMl;`4j?1-W$GOD~f3CmRkE9p_%khso72_MZ+9 zQIH=u%o1Uky`;e&sQfNzH;IoDVQ~9uZR-i|tA=QUL!N$#p|^aDQsYCR)jS^68x^Sr zaX;P{3)_YG>XlTB)VL+1e)pv?v+O4iqRgwlo&n_&8R zF)3f($KT$r(FoYE`C23*Hlb?=*OV6&c&6nuH&Z*G21}immaKfpT}x#9R6<4v{IDT)r$Kf3F@771UD`P#7_3TlFPztuZID8Oa6XD;;C%=FiE z3K}^QXdE&d#yIg&SQ_h}G3ecJe7f<5c6dlz-iUXv^6E3{Vj3$NY^N@%e>558Y4%7e z#1E+DinZFhQ1@)}b-x*u+lhS-B!aURIumuiPaY~C1XooEa z2Id+~J}DY48V%Z_-@J6WF~!z+A>l#!{%Ek237A?d-V)Su&aOeGSSFNu%2_18x_cja zn`F*Ok>zlYotKypobXuXLI;j<=9_T|YmZ0`_NQ1M*dus-z<&n&Zj)m)(W^hJ#9zHd zV2RYoMH7N0D;~b7Q0O-^&n)J9J8KE^&2xu?n(~%qSn5b>@tt5F>5sd;OLUau&&W;p z)0REoimZX|*z3JPnRW4N#)VqE6yMP3uXL0K@9~9A7FkcLL%rrZm3iX7#?xPu!}$6T zFob0?S^g^j9!>u$og?*y)b(f2)Fx2*H0e6ZY?Rf?t`H4Jx6(uqm7?X`W&X+BSu`6SZ|5{4CFkc(e7ryUh|1$7&2EZr-g*Z zLUW}!ug)9pB?tje z!tG{s03L#PSjK{&yCb4nRJlXoj8~V;i|W@w$3gPVEW^j`T)1W|>x4yQ)9-p*6EC0g zF>?3b0z^AqHhzNRH_E>0d*Du&+F?0)J93^Bv`gnb-|9t~Lw(;92dTcnxR{B$WVuI$ zb+Wbz5#vcIoY?$y23gd^oCy^l#Rt+*i>zy5wTH1(#W=KUr%WTMchuqCGX|7>_S)OQ z9@3|8Nysoyjf|h9V4IW4qPn!(st8-Pn;0hz#w4eP{2=&H9MXO*r8UPd_QIYsFa6V7 zCn?j3ClQ` zqhQ)i3CB)j3se_=h9qdmj?y3t^VJ-7%p7sqHN8 zA@CCf$Cxm?!E30AS4tw~*~N-3nD~!h+2r+b_Sr3cKjSWB6DGH?zMn*Nos6=@*;nkxB=xD?iE05ggngRwp*HNcEkcG(vVtF843g^~*ey+)|N6)%oclXNrSJ zU-}OB>rBt^vmMY%^nW9eFVoekXR}{%3l73qd+W+NhTXL=IKy=J_QKvlav}d-_2(Qj zN5x2WA}8FBFdjc-0Q^+KW4U8=2loowwNt&rG*ln;F-w|DhH?kDH>P~$GW=i^TD0v1 zA0kcSsT7poO(hZ8bMiU1CRU2B<4E9n`@}V8B1?M7;1!3`p*VgmuLI6DiFLo4XJZIT zsSMG-3O7`@Fz8CZin+bGq1Gq$MmFrdcdc*xhqNZm${8D8G0vdzfO-;ezlqL6XSM`C zMPJQw%ex8|$Gf@gfNrB@R%gJ!TG6^UbxHDYZ@oweXZXEijE>^LX;OHQ#l}iWib%U< ztsLY2m_)@hc4>V3hn5kaf1fuz8-aRpq_pJz1D!{xBX}!21stw&PICvGjq@AHc1Inw zDaQNZ@%=@q9l^8eZ?dEhBVRu^A*69VyR1Ssx{rdbKIoDq+0}X^>aQ_PJ6|z0zD`e5 z{tSMK_06UQP3I#&;GDc~dNlULpb7WoEVw%f?OE4_N@n<;ITlBLV}d)9kSrY5=^F4l z`GQE=!_VNAmv|`Uha|Qzy`E}6V;%`69Vw(-qTsXNCW6`Hd8iOCclYk@hIx5idh{lE zlQMxdUGtG55~=<5GB2pI-gy_>W0=3KMLKWI32zhr8kb zRY1L(BYTV$a;ngBM$Q=d-tnu@WJUyGN`8{>sOM&-93KrB zx3nRWInH?Q2ia>`nV&|o;BY6UJ<<*rIz*|bBsQsO60R%6sCf2{>pUtBmOgD{k}6fA zeRa!L!PN5WR$V{&4i|HDSAUk}VfQ%F*j&F3s+1lpcj@#*%{Pp(P*!zHKs0E1G%z=` z#M`e}zli2vUjl2qy&+Pkrn}oI>)qK{2unp*@s!N#ZlgNK11J&1yAkc}Uy+Rd+h<&J z8o~ElIp~INCi@nFisylw;)a)Al~{kR@s*|8ubiFE?@5(~d2-$1iFr5O>;?oMGN#^c zt~bx@G}7_bc98tpszwimWUG1q8gRfw9i_oe&^r9*G9>{@ni6;P#uz zzK3E@=Y=MXZl~6Th@a$}mDyaRamhq-nbnp#a0O<#J!jlXKQjv2*oEd&rrWy@T@WMVwL5 z6ZdR7h0Z)J&Ew6W6y-3YB9656X#P?2otJge7Wj6xFw$9lUq!`f)0phrPFP%nY7fk%DzgD3!tnz(fyZ=7NhTnvdYC>7`Wr z<25tpbtnEC`xFILx}4Hd^ZQv1)Ny#wp`I~mT*jHRj!>gR4X^NeQ527eiR=Xojk)Nv zZ*twSB74-IB4MdWdUkX2_Ml|+iB7`3Z)U;Q&L~(clC@u;HBh&>)mhVhn0{d{uv++R zJ8k@XjvJn3OmOED6eOY4G?D=-!TxvK1#+n=Y@U(JJcGASh}HFL&U84L(-p;OJ&+Tt z2;NM(s>)7NR(k8ql!TASI|D!tJu!YrzR60-_K;v!9fnZyOZ}#M{u2M2B4*+h3x6Ih zBM%7>rM0~YH@^-2VROD_XaGqKZ&k6fF&v9LSigLgozeWDD>*`N(g$*Vox^hy^U!Z! zGj8R)74VbGl45C}k(|!kSAoLm_^st$SsbfmQN5Ro;OEBMHmnqgctM!X%Rv$#3JYoZ z0T^+^Wc?Dm;Eq=pO;#)tUCnLEiW(%&&*Px+6#_KbucMqT??QALN zZPjOJMqu}JMn>loa4%l=IIqDNG~bNUwV}SR73Cb8bKtw zMTeIyTD@}qoU2=Spv~KPdlsHTauujg^X^advLW|Yz8#L{HLpzBrh$=BP~d^%Q@!1e zj^NyX`bVIO2Q=GPO^4q3d*q0o7ovUseJhnhTNGN3V)TlhS% z^3Hb20sW!ja`*hP?o7v8|a_ssHk%oLA)Wz(jYn78;V@$8s#?~qc66ez7nqxm} z2{xw(UfOAw%T6&xaW@y`Us=+=EQ>mOV)7)>)5hQzou2W7YJu`x_5L>RTB8gvDk@;P zdxydyxhN`F%${2ti&=C*Ow&kJ37BME;-t60Mwpmm&(N1~Bi0pP z)SM@z%_Q?Cr#m;F_waRPQuBt4OG;YC^fO(efSqddGoPdYHBQfAT5E{Sh(@g5`QBuC znP?x}_KLlwPx|5sx z6lX7^Fbk7M++>_^v4Kr%ku-$6Hce)m}A9dqeM~A7yv2D4=CrFuU4AN=g@(ixI z`dpyBb+!xvfLO!5lW`W^nUu~&F~wGeA?JjmRhu!xLej* zU|Qm~i}Zm4DnEiV7n_O+pJRQ21k1)P?%i&m-io|qmM@sXxeLGV;+?iO)lXt|8AZXr zdPhGMoAD{M%ZeD+fJ?)q6qB4$BRVUC|0;&bgg0o<@($nQLA<22y-j%s%Y8y$hx$r) zvwFx=y-WSZ54Q(zVYgYIvWQyzdvIbf5gL&uN0|tV@k2-TO_+_x zP{SGdvx6yXTO~x>YJHMBWYjxYrRpka&bdz~2}a`8?@f2{#d0c~eUqW)s2d4WitihI ztEm^xOBKsE?kW+bb$`;BKwfk<(FJ}W&+B6PjD|*4{sIrSg)MYB=JI%C?V5b_UWDg* zXg20{P!Y#k8v`7BIa1)sWCLdfE_7r(a)i^ysNHJbf&lv@auNNd`WZ94TFHr0@}vxJ zJ%(#e^;48UR`XK2L=A*J3h#^Hv|!A|bD@sMw!h@MwkCZtugWl;zB9IE>S<;?IAkjBTiQgU)lrF~{m1<8 zzgjYW{kD16WU4B6F45Z{g!7p9UQhJ-ovam;56s>N?+&;TnR$eYkp$%6lGL!Ld1SY+ z@3hKWMDGSc%;fYn8&1Q6>ig&$LmXG{a3(XfZRh|Q&1tw7#l%AUpatsWEYEv({S<~lR z;-Mqkx2G=(#i~6iQ$hi(aJL{-F1$@O>s@#_KbCEfzYWsAB1cfb!5hUSth4!^eYI^* zy`WlB2=);z-o)WydTis+Y$d$Lp8TGx_u8T=HteEDBG-sAJ7V6~#;LT z#mlm1k&yk!`8|bddN|g(_wreEhfu*M*wSTsy^UKF2 zale!I!OvsUGO$adImAxVdMZZKtppNdJY*Z^5X$|mE_OxEI0Z)9q zZk0|0*PAMXuUc(lZo~kup&1Lm0;(WIAp3q0MB)D2iEoNxJ6SZhf~RnNl+r9gkiiFj zHn5g+W?NQ-tCb3(d*d}*!*~f` zZjLqbePL>|9{Hs11C3F<1j5lavFRnn1vOkr>d07k;MG{RtooG_30Ko#?%2&WdMJ*$ z(8ewpduK)~Mr%?5H51-usmoWEpNIHfMQ2y!M4c7nu$6o#D^LB8)aY!CJPq$z?Xdir7-`?p z69z$wRdfbPRKwG3EQ76H!IW+fl>3y1-}JH~?nx~>PyrfdSilVf6kB*U3!?dL3Piti zKf*%rj#y3CC<}j9;A6XK#ryVKruHOBuhXhLB4AovZ-x{Eo8?t(TCen1u!n|?1_V-T za6lc_mDTr+i6)ATvI8lOKQitMrx^V{Iq;gL-1g?QNYiJ@CG%!VgpHayy(D())Uh!8 zg)PVDVbIkVkeDy~Vl+>cc@c)Ax|dVKR+_62X9L%bXS9w%U(%nA;x)}P)v?6b-Fd^b zWhk=a79kdZ;9WKEy&G&?LNW_}J%Kqrpm zK(yAlKjf?!^3l|$-r?QV&}HdHL6$foYDINJ82Av%8>BSs!nE>RBQ1{=MnmnGVm8F# zCzN<&*PXI*Q*KmfEGUezyGPtS8zYR&^5@Xme5|_a;5_z5BLvbF>Df#p3sW)G!8IT3 zZY0p(cN3esJ{Fw*TCw)tpe-BQA$79avrO1Cu9DJqR1CEe1U3zv#W2?)|D9g1?#7i1&$%RJ5IVHbagqC+SD^hy<;V4I2iT4l$|)a7?U4yx?4 zV+PZY4A1#~U&^5c$|N6tcuJ$eLN~@lH46>w5O0=Seb}z?u$xr(YeUx|_q_%PJ%i~x z2F2xdaT%h( zVR^fHhR|0X39+WZWX^?nf{WRoO+&Enec7C}cdp-A;k{pE3}-+0?0Fr-UJI35mH*bg zrL#=v;oU(Q>-*Frr;uLId<_FBV-wbG7{m&n`QFM9yZ=<1F}?xP#8{;5!AZK1%k0lk zOKbdKOPlpUxRS=Yy7K#$?zchmbl*pVulS$0Ph@vTmLOslgcEFtoqhH?zpaFx8pJkV z{vO+G*CBk~%9nw^MK+8^Y$zmxHnD}@@jgN2Ci=-nxMW~oi(T$GFeG0NV`j@ZUB!l^ zD9hk`d^u3pVT#x`_d~Oh@q>mI3~E<2X)HgWn*2(c*`ZESQAlT-0bUrn+@i2yaIdta zgC2S% za*D!1SBkc(+xx$-e(84gPXE2tlMBisof1p1`)NE|ImPhv7B<5_Gn9%JKxV|%S2XRo6!4_=Q9CI1hfKP;i) ztRp$N6#Ez=o6M&3-{?!J82J-^;-lWgF+qy;M;K`Ix&G701VV%=$Fhe(Ln&YUpTZ2Z zuMPf>{l86c7}anQsnOEeTFPAQ=Tmmp|ck(Y_3{dmfOD^5f+exN&6l+ z{amBna?J>c)mbWdg%~KtZLFG!`1zksfAqct5GV0zd1i556srL}-@joHKy1VjBCO@# z7y^|$d9uvx+M)gsJ?ef>8n60xwj^}IOdCsWIh)m|%UK29@+gN3LlS%sEs*3>^<^Nd z;JXk%bN`=G-8c!}FMB2QFQ6ml*3D=xs{x<{+cKqUyIAk0cBrqQ>1Mo* zfRHIjuW=!^BoMLR5s-i0dqi4#`;TrS*opE>`@h`st&muNhh8FJ3bi{Z-^c}PRKIeS zpoVbUO=etNzq~`T{T?j>oNc;=^A+nmXlVJM!vDhgJZR_`@Ybkq#c$Nbo99J+@xh!z znM63Zm}}hZ3D`A~puD+RC3wq=oNvI%6Chsjf#aHQ(v8MYyYo3 z=OP?3L%+i8YQdF&t8YCBxBUtvJ9xCOHlt&p?{3oCp9hZ1Sh@Bev*h4`|75@Z4(|e!U=4IU z?Gx=^epmdTja9Bh>J4ID8r#{;kG4+qHI~;;SbD7kK+@c-Rgwq{LfWmN{vR0a#=C+w zQoRTxhb{qF41OYGZg)#Yhq`&=9X?ffx`fe;E!e*QiGM%>wypp0uCVkb z7jA(9|9fRkg2cxS*g2+gWQgccvNL;8?SZ2fkq?1BF!cYAOibVSVRHQ}@v}F$%a{BYYV^vhy59mKE zH-qAD26!l3<5Alc5KwO`Au!Fjs2uWcxT%lx_fjPq23-u!)tqxt%Ko9;CSt-Wx?>GTe`u&si$(?T z>e2WAbGKDXxUR4~ZnTX)N|~^)8bR&a$%j1KsSHRw?y~O$Vfd~*ZN2$ImI+>sN%0mgu0%ZEVWyu1Ed5$p=zvDiEPX`amtgT4| z^J4`O?)X0sdyL3Ys&C(c-Xzp(;HL=9C?cLI2A7wq5L1kU^UGdI`7gqgtEL9*z|Apz zz)C4u(&B>yVvQ?D9T*X)31EyYP65Rd5f0DzPZbJ0Ias`}^GYNDEctt%!~4d@+tBOg z->+C=f%YX)2C0@BS$eOftsxKEC5B}nM1t4p`+sL$m5$D#^iJKMm zhdKtN5Gt(O@Ob#3``>%zY~Q`2=F|(9xN6!ABweddqP%7IBdAApaly{RL#<*0pmODp zi+yeo9gE}u58 zesu?gHs^xH&6pq_pvSqPLj5o0?%?)uP@uQQ-HCh~^*58jv9Hdxz05LGH8N zjBa*ag=O6uXO@5_qnO7ukIiwt#0(WI%F4=&Msl_9l&_pzaC`n)4={H+cW>>~h>f>+CEi45H^N^5Wa)F&kGUZfG}{P78Jx`tf9} zrqDE!y+Vyzys!(X~#xgQXiS@l6I+QK6G>X`o4no-!5+r;28Mkg37{%oA}Sj}(2ZF3(>& ze=}%c)8UYN0Aaoo#IYggdrA9xC@Oyi^>xJu{TpoB1Mcd|8%>~?(+03@-DYP9_+V=qM#XOjE z)UzASN^-#s4OC{QbR)!~J9pXF~EHy#Opt)Aezp>a zW2HFDTm)vn15C7Rfvc8`DM27#Mzkm+zF$6Ec%Zf7U*t2xKB8?)rw&5f^-pGCRCYfK z>7<2iPrOA=exCQe!nR6{;(unvAn^Fkfu`bpP?g%U8;JG1qVe4vaK9=T!)|svwp?3u zThrH2Q~G8HU@6PRZBW3Fh?h7LKV?(($IF+aI|=+4HI6*&UfG4yL=oIFW&p+9CL0ex9rlk=Gd{j?#ff|ZI}0H z6M=6)%{jVP<-9fI?f9&D%46F)stalnEVw=9q4)*bGyQ98@SSn9m-*Y5TGIH1AT7$p zDFeqdWGF(z&vq^UjSepG>EUyfxUO$PNk@xd(D&Ix!}@8jIVyfz2#P-vg4N;jxUzwF z_W}?f6c5N!8TTac0%ijKy*$IKUtYVlU<~uA5UidO~)isa*5$WRMDf3 zL0lXyZ#2I-`mt^E_&{Rg+R4&Hb>Do#oS`N3YD?3%y*RC9U~n+%M9iH$uBQr@wycJHzId<5HQI5%7#&7i1qd}Y9N zT5v5Xu!nyRvX<;-FgCa19=Pkh`*yVt$O)s*`A~}Ml`qI`6STx zWPbhNDPi$cukT!#s^MonRewaHW}G1^LPyhuEDtY_*&tO@qpN+Db0=u{U)*1f&DCFd ziop`=2xhOHpHG~{N-k4$Y!&GerEQ0oD`2o*E{m=njTyG@)b83wkbJAJn08bY0fYzR zmRZR)3H5+oh}-N}jjtQ~%ZhFi!AEhJw01v^KC$>{ZGP=gXBpfMy**pS#`8WWNAVag z-28x$v1JOf2@&DYwMoTSwziqAQ9c?V&|1Cbe+yKS9rWCLIqjFI4;(pnwXxx*bVcH%L}_*L<#JoBmtX`` z95H1sFz<&7xMgmBEZ_a~R4zv30Fy@ z%r=5ZD1XmK0>0!M=>R6ZLoS^sEwe~}NOt{z&ki*@hC^gjGaDs@!yux{EO8y`bRl2u zDg(i39%VtHB*|qyB-zbH(@;6p&lkjkxp1-w$Vh6h*sTLTK+E4dQ+_k*Ariw?{L70b z&01M#5I`rxVE|e^$MJs}2@!SZVsg}tcLA%sFaaxM3j!GIgkViV(HuC)S}rpg{MuI$ zh}>u$YIH+ztz>SAwY*OkY|@V2Q9$R|k@`qm@H>WXSif=b32FqWw907%@vAE9uf{$`fphV8XN`ypS1^5_H-b7CzB0quKZgj) zyDWJ510FMEg{6Ly0)^YxYwK3^J}i#o9xL|SK!_`t`ftQer}#+8sNHukSY)%tkx>r^ zIpl`^NL?5AfBnERRh$nz!?P7G+|tid&(2D{g7DeuXhF-&+@tdM9s7V)LNfO)7%=8Q zj9;I7v6n#GL)^)HPuO>=kA!S)u4orOe^A-|K+EQ66V?vfQk9W@Fx8N6GhB?_pb-vn z6j96^Yy;FFL(HN&%f$nWi)yz!PD@nWyjFRz*nK4;`4eAiC?Ug2j`GFOEml6uUE%`b z6*iFXrF{yvvPF9>t3vdIJrtA)`g#XOysk8siw}P-jDs(-QB1w@-K%_K^-yR}geIf$ zwAXJm-kbS`tl&I z;b)b@5+B7`qFsGB155w~gT|eX#^-cF?6po*2edn5Vyt_6Dc77@bJ(|_Q_ zh}jc}-7GVlULs#woc!S4=rCQd7x;KjXVD_os;I$&CjwA<-2o&rJkI*OhmCjptdz^}0E>>w4w^r@OQYy~=)^-B1V27l1&@s$at>#h-RQhlzOR=OCmu1%$Yq0gW~9 zB&A_R4cC<5JeX)amWdwg@Nv6=kn`(BFaE>Ij{U|Tl?#)WKK?Dj8eGx9YosoDSvE?<^mEHPauwwHT3)s1!FNVx8-9gHtSuoH8$(74ZnM&SPzNO z7PCSn#eSchywy4djX@m^H~8Y0_LnQ1zRwBfij7S3j8r}Y)7m~nkM?L4GxE<+gCrQJV{fVd<15iMhWZ?JS14in4g zSN26vbdAMgxXSL&$nzi8VP`#iUNVv(;4RZ_P3Xq;==o{Dfql7c79xmiSQiKJLUKNI3|ypa%_2u8JiTAEDe*1Bs1O~ zFF`~KJ<-ZJO7`a)S&500-*Z?jW>BK z7yYE}Gmu4^Oz!&J$?50LaG;nyb$1xJ1YLyYdY&}(=Zl(2E=^iCr86h{F>znoW!Apf zaGd4YC4{F?yG0BhaDw1D_=p+Wx!4-n6Yb(5UbhfJWe;crO#wl1Af{}*m29h|77cO^cb-hJk5Ggxy%K35g71g zG=@HBOjg#`J={@%JTTCQSvesHGz`y|4Mlt)0iC|dPtk8{^#z!F9x8>->bD3cGjc6) zae4Y1 zz2QJ=*fugP->1Z9=u=8tGxpJ_SNuYfg3G>dTiBtU*0%NYfa!i8`5X`^bzCpDJvQ@c zo$#Fd4d9K(N@JuU7|OHca~zlGy#ADRmvQ%_rY%~Yre`I&5Fbyy^@Y404l$g5NN)F6 zk@T0WAMIsV$S1rLNje7Cu<4Q-?;IA_kDCu7tN>qa$H1HPgK~Y9DGN?x3mLd+(-;od zQuDpfN6Yzzcn7Z@g?l$N(2f>9kIb`;_h*2y^uRG&3mJsNAx^8^-29wb%88@AGl27~ zZcFzAXZuk$StdPt1G-uiACelDQ5*1$!4)TSr#_L6{~HR1rw43cUw3O@-;U zj15`|Pero&oe>2MqiT?=eZc;jFu>z|>1{|hiL;AnQx-?A4Ts!=LYYKP+XX>EfJAV4 zq8&N(cXa!zNN`%TR4v(PHTjp|hRdUS5blkvs+AhyUk&p$M`}IMf4bFx63n_^q>Nv+ zzjYS9zzmieH;?P-F|R*!FF7cUF`0kqZ^*q=@l=WTY=zAcGcR3LjM%Q>;#2sW+BdF^ zngmz(#OBWX#CmJyowqB;kXNm%H9+g+Q@FV}i1U~j8VRnMq&h<)=+ri&ccCF_?+I(E z3kLP)xo}O-r>mV3LG0ZBQU+%KAWB-q|NP0(*2;F~J$~cfnUkdo!Ag@GsYr4B3=*8Q z;VlnDbRCs9Zud%Y8xUCsc5yaLCw=*-`LUF1A3U!FR9=hXH)k=`X)IKU zt$M9t5YSd4W?Q{NHWdcR)8S}OZK66zEZbE%T`aws|E(Gq53t|r10ul;{T%E^j!WEI zF5J5-4U2#7;N4CPk7mus{Ma3UWiQl8Iz3RQS@j?>93_@bqyd zE*Qe^qmv=CdHIy`J48?)_tMIVzrz~WUar~2 zgrZn!#LK(ijq56x&|MZVSt*ZdgfEx}p9JzJ&Nf@h6|pgiuWbmP4(!w($B%AtG~mZ{ zdy*WAd6Krsl2kevyIXa7g8>{hghi%f|f;H~K24Jzi2BBL)h0I18jH;$Cj#YUy|Tm0+Br= z1D`Xq;o)JDnWD$zs5gMo^&*3Qa59XDp_}2^PF4D; zo#TvCpQr#JcIv4|(7hp8^nM((kqRQ%1~Y~%OE*LG0C}+}N6q@zLW&5;l@XB>HV}SB zHDnZ>(@PzHOP%7#X_HW6iY}zOwg_rcC7fEQKMkhtljYMzV2t_~wsNm#Jg=w)yi9iN zJ{o#2IZvO=D@8z%A{OGFV{_JDqV%2~u~c2GzU9774JY-D)^cJHeLP`uCVHL~x<6d1 zIuC!YN;glSm6YskamPnH-aTBX;C@3WtuJAmVfl_COHsog{5I!{fak{~-=OUqn!N#V zm8Ip!W7Q}(87s~0Ai@sjvK(YY-~p?D zX5E+YwgKtl4;7dF#a6(CiHjhmEyU}TtnTpqz@X79>Nex??Yp2Si1%EyQ8o%h*&-kd z_LvPq4v#?0|3z@S{mWZC;oV8$h80C})1qYlR?@K<|0R`c?X>moi{Lp1r=4c)xU0#_ zvs0GW3kP|2ot>OR6QtzHci@5s-Y3?lHPj<&>wa1wOU@V1kzg1hvHfwRQ_9-%xKBj$ zPl@D2l(uw`q|*rPF6XB?!1Gx=qVqB>J-tPQRW8>amy##@nKa_EUzp%31tJ{OM|qJZ z!T`t2REkHjROC1_B;xk0eFSX>46y-#L9#?~{n#%TdpA@v+Bm))`BwVNPxCBk}4TS9bWoaM7mr?#MY zt>&_BrEA1W+;a~E*5~_ndep`FFd7azJNf|xwrrFo-#3^E}veA2Uf}td`Tx^gPM;c9*Yd)$+p)bu*F6Rx+8*S=U zQNGQd7LwWKg+V4p1U!uf@*3gQl?l5ToT4Yhwn^7-^K~msex%t|_ng?D7pb;C`G7xZ z^t4ZG{~?F)uH)s^k2o%?KiO8_8uI2eie3Y-9whsZ8}vC6<0s<0r1a|r>j5Nd+qkv- zLA4EV_xqj9`8H%few3JyfCvnix;V$gWjz6a+ot_Y-;Cz@z?2y;d}(znb8%t94N9Vy zGDqNBhf!F!pkh<95^~8QwoBr5+!^Y=y1Pr(x|>{S&{8&cg^g4HJY_BnPPH^ft{=|e z+iYKiHA9_ysuaAVT&nwpmaqslR*B$+OO9gqU ziIqCC94Fdf))n`)+Kjzo%3NRDxH@Anyl<;zoICNec-QM=f}2C+HX9MLXemlIf9BV; zBl9Qow7c!ml?GGgu8#sqT*ves7+l9~+wt0x*&Q+4=ky%$uP-l$vayEeIb$09dibY6 zDY4hat=1nZm-chpLtF;`?P@_%`YOha$sQE(dV;oe=^qPo-Ts*4vM}?jN(r(FVM68^1@cQY$uBEVipjB#2Ed z0dmi%XRLxsNdf~Og&I*0tGOB2=sEC73Kx1=#1j<@J0pYd{jUZGm zrlb5-Cvg-dFE)sKn*evUNdy`QG-Sf%ztQ+Io$7n6#IC9feZO|37S{fCW)=w}N6YK0UEjnl)t>;c)_vwv*3WiZ=gsLOh#%t*(+8cpVT4U%vGN+qAW{9`-=kUj8evip8kD7$f z48g}s#GRr*jzNvaYa!$&OPy_?lt-~_ArK&I*>(Ne`LDH$#30~spdheZEXB2w{~<5-81J0@$g}X{Ev9!!wWTV0 zM3P}5$IBrc3DLk>s_ML$hdo!7V0G16N^scl(5+Y&2DPP}_ukq09}&5DT<1ic$6@hq z{Y66J8iDAacN(m0^w4EWql%9GW*kll*n#_2L1hh0_q`Rh2KVdZ?TJ%>jnAP>w5@pT1bb zk?`IRl?UP_QZVBI+=6hE_QvP;k}Nks%Z-|;Rb2G^PH7Uzy>)AB!k;V#S19MeDj+!lC+vQEXMHC@qVa9N%K7_9%rDa0jHbhAz0#$Mw$WZT#5qh*z;nN2aetoTKh=sC`~A)f;7s!+(H)U-%2l5zX)9zh|ENd^xy}XVh!IJq}U$fDzkmucu$hC0)0Um zQqDnZRd=*^?&hzFLr-#p!c`HpV<9V7g=Z}+7HC^Vq!{s&I8dry?HaonLRa zD~GqLiJ|QP2T%@Q%1pF<)NrL=&{YU+PZ&Y`pT&)ab}@{oBJ6sMoga8Nr&CTyfcKZNHpIF^ABnf{qj zGG8#dpp_W_ET0~7Xxj^(g?B^c;yN7E;+M>x^6q#|ZYV5s(UO>HE5cJ`?t__U0(HbN ztON>boFBDV1K#v@M>mTr?)IhA@d_iNF|3f3ZxAQBX*+bMwd>HJ`N~b)#>coeA&&aY z?C_U7?&}m+4j;E!CQ>;|QlCgN-%#Ej>*67pup9Tgr%VP#eImyUhjq(ywDplC>HJN5 z#<5q#@^;}R*bRC(S$qIG-!d4|Pslze@wAKt_5#jTGX_63)CKe@oo6r@s6!Rq7$|I>uqOM>X~yV6v1Z^w zT^o0JP&u+f{3>Z$HmytU4@da*#b`lcpTS4T0Uv*6JGd9unc*#Rx8$D_sb-`K@-QxP zSLqp4eWMIr4QSbtgT@97ZAm_);Wqssi;_^-v{op?NCy5}dQv`tR167EEM?4wjSv$_ zzKQmo6%9HcO%1m!Pld_C!HVt_jepmM#8N6r$QZ1xiilT!ODrSGt|Zlio6mL}lZw|S z9A+=thCfBrHDw^h1(ESK(#+SbC3yok&$qfjSty24y0L4#An})=evd`|9t*ET3s-8( zJDcFNxOJY^bRfYj?AzVFs!5_f_V(iQ1>K3!fY>)GA|6L==9vI%I18YVsN4^{L3&zo zC+h_OY^;<^CZTd*A_@by<+B*Ls4vq*Q1|Le;+ooP;5m7^vAt-ffw+slc2Vyk_UjpL z91LY43RAv&`rChEm!AIk(gi%WI`Q{3fj5&ph&$Ev4`ZaE0yme3JxffiE(*SYi5UkZ zfzgFl$hqDrPF*!|&DHInvYxj6BJHwYgkLP>A9A*5FvR?(wB;dgavAcCWV5SMbio!} z+D-9bTfIKR64}dYNUJEU-@49xW*`Bj0kD@!?}V%!|Hqfh#e?TvT<)v!ukDxNatRtO zpfg2>M;PlNC`$5hC8EVe&TSPnz(9`*nMT^Hi{F*IUrUUdP(%(o7(NS?U#@t_e5nO@ z7`^?tCOs>#k@2D10d&rFnyhf$mI@=#@~_VdA}k(Gy4aSq`29Lr;X0>N8$69}nj2S!;A!={B zpnakK$#rRrx;K)u!SAt;H})5gWx?&sKz-Insq$5m@UMKXEFQD>SxHe+8jJSCARUcM8B-pJ3*TX^=96ja_ zJxey$)9ld~b;({}hqmMNtoZHR5kaPdBT1&AL26J3rHKfzkS&hqs??qcIXMGVLWEuf05uCxmwv3A*vXiw0w{ zQ$PdLR85(E(|Qrex8x%zDLW5ZAmxjxfG|d=y(Rwe2rf}2s){IH&r-Dtgvl2ap120SNE|(ZABn*4%SAVk^}LBBjQ;sf zzP(?~kRXl$HksgwOH1}7SsY19^(#{ydLl2roWM>H9N%bpKDzj;H=fbY?&|W2iv>Rd zwillg8S8h%806U>t1XSIBkG%XPz^Z9`kE=|mNbFpiFr_f6On?WCdn3v^)f1J!tT~^fF z=yfs8{Q^MqYGw0^8%S_{Th+dJ9dv?@G7K)a9la=8!-QXC;7>kr>PIcbj1xpQT##WX z3w(_<6d?I2x7!dH*hcHWWtXV07MJXiyIFy?;QM{FPiX6*Cc5y&c4-MnP9^wG`vjJ7A>g^0S{a_PiqdM-ar%p0 zO}pTVuvWli|C)yRFrD_QLz+J22-L2-Hz5RKr*tYJC3S14U6WHLk?h^3`YNJF!!$$i z95rbG$>qf&niA;zH;IZ5)+#sEOEmjPgttGk!$w{ps-2g|-wl^KU#D>8J>9MyyVec_ z;gu1x^GUw2eGB{8VyO5ysT5Uc;oD=lywOpDHX<9?0|kpVkVtBM{HA}}xz?BS%+N&a zLI8jz2;5_D=i;XM+cSe8QMWmqA&vxfb=&yf?dBp@`-Ami{L5Frf4i*P3LJhcb?8=a zKM}~wvrB?q&?G6q8Df&$X5NE1tNPffDj9!x*u5mP0FO7&8krrd2hJBm9L|)!CwNK0 zYtFd2xnwV}w1?|PM-s!3?3n7Hich4?E`-MD~Ro4_S!jnA$Ub zGW{wH0_u+LN+)Lb+6b5xv8zEOmt@wBwi|#`1l60SO_H5uzV0WqIjQx zYEX%>FWn(x%LIv}j}N0Ki~JlbXcCU*{L`56hy8_%yE7;8MwJIdsqtl?tZE=jd_Js# z;k^=+%sS9m;G2EubD4~`6`9lu8hkg5X&UDDVU26H5(QaA){~#;%`D`p=&O#<8CNXG zE2;J~aA@MlH!?zk$Yh1szlISESfG`-m$F2!CulJ{G;$5vTRoy>elIJ`M=3(AA{zF& zERShn_{IJ}i}2@a(5~2#XJRznMR1ME(5I7Zmcw74$J+;b6Tc-?0v)ogT9gHq!8C&` z&sDp=pU)daOSM1=DGLNuNzitH1w{g)`TQ}D`h#C=t0Awei$ITI;+&r^sKoUYg8L{# zK-rD5a>g~$aSW&o{)`ib*Ol4sC5`*R?)aM+@7T5em#CZ#r{o}&7eda;Qe1`s_(eJA z=5IQYqlGPg)~UJ&GV1s!P^#kwH(nhIkUsbQR`rV>`q4zs)iQnf@)L)?6*k0Mzo4KX zyXeNyEK#G>699t_6J~MoD9L)_7ZZKZecIb9|ASHHon62y#qYi^3?Wl&I~5anSzGOy^wohl+d{0DFmx))((2R5%8$ej$KgaRn`y%O7THBDI#Z)29jQpu zUnspw+=(Ph&?v2}2qS(L8+BThl?4;wFcIzHNix!)m+>Uwb3)VjPV0`cbB>z1-uG*S zu&|@8tjAiA9L=Ij-!)$6pzf4z7CFeMZ^EkV@~1RJipHbKAbP}Rdn&>qkc19NK&2kw z!?k@EL6y#xYYrhRe<&&UAj(Kr%9<sF&HPNAfJK+q;qOl0f z4|;`#yd(;5BjW#RziC^#7}8Ga*S_@JO-V@vtEfG+#HEFMa3vJ3LYDwrY8g2s;w9dz zq8b>ShLw>8^^yARjB;o5`MEzbj(|X;GVZEWIpg8S-F=g$BLKnwxk#P4ys$5@aB@Zn zlbt7^;L>QYGQuBF(3W@MzWr16 zi}%Cl6%-5h6sEEG%Uy42Kw2{P{V-0&H z-SYku>E5uFy>RlLyY>7ZLGChx_RPc>X+Ci>+=E5+eT)H*Uz^uYo9mA>boiQi6akKFrjmozh)TMRU`B zL&ZkON?;W2C6P*oy6}St?iMQbwWG9N!!%283Xp5moo5iGp_QLAugfJRQz&9>ZmbNg~L4 z>|>M&J8hcd%h`-WWk=vLbYSd;%)|QV<>rwR80~BTa|owLZXml;*;)4oj6L^&qLqaDBBU?yhlkDl{ zEu|kZ$;D+5MYpAGp%aH8C-^(F1~@;$TOUMMTcQd$UZ*qT$qP@D+GIo-Xf0!pMF&@EN#{+a z=OURa@W#L^e+h-g3SYi4H+z@H`!aphE|p;dKV=95kKNt$xW=g&3>*FExG?1rKRs#B zpM0%yYYw{q!yEu~_LJd1+Beg~Kuai~!1>2~EMT|@MoL*5XVP4ud=0V|Br;1dj=8Q} z16+)dr_@S43jk#6Db5qp}S6;x7!O|+6xWJQ#jz2lCSAa1hHV z7ho(H;fBlO`g>yN`S2&fNFXpwBX_l>QR9xrXbK3-Se{DgeW%%;5Wf^e-CeW*vyzHp zNC3Zv4Z9_c!HiLT3${>z(MD2M!{S8})HTX~7}!uS^!lPH4uLL7fN{vbTl{}M;*KZ( z=7?h{nOkq$Fh&5)h!i`t z*s&hk!Jrf>5@V1srhtB4=E0D=X)yfLX~(v*5DO99n4MsJ4B{M$_q~|TZo~#f=viaY zY5q^f&AVkO9y>BZJlO}i2*bk0j4QBP#qfQZ)ps1oi7>-{fCb@S&G5gQ_(T@#D^bkM zEGW@1^6)1%&K#2o(oYNRcf)w4FS=KTwY%_*fO1}onoiKa~Yfjs+ zpjeib)WVY^OqatA9wKe)pG3D2bY%uY!k|;>9qyca2c3t)60an~fAyFtn?L}rgx|Wz zJ4X+cE4VFCkfN!JrjLK7-WddO?1J8s-i6%)e_n$N{pe} z3;BJ5#o9B9>eh+`B+%Qg*K^gWaBkKe_3K;yG@-}MJ!*bV#lLnh8Xc~LM8nUOT}YOo zgTwd(Q)cp=AHM#We;Gt`DWGcwU61ATiree#=Sla7=-E2UxceX7svo?-WIw?RV(zXU*0&Tl^%xj^A@6qudV>7;5OxC@4Ft+oRGW%l$02X0!q6iP>doyIPHZ*Epf>gzKkOw|XWa`3q2OFoKiPB<mky52K(Pg|{09L|uEVD? zv+rE%_5`R1l`9x%V(9LvCTL5el#5B#( zlXeE(#YZcyFw0^2G5mIua7R8>bQ0D`$ZRCQ_0?El(RxyCZNTqb;A539 z*sH`P1`M|N(APN*bhcGK{+5E!8?L* z&j`+!|C?|H%>R0QF^yAt?vfPzAFcN~$$0I&#kW%y{C_cu{uP0>6ToaGUMQxqk7K7i z4nH0xd@=dKA|`0w@!p<$-QLAzcFsuuAdUa01A5{&a?oVif(B$u(L0q>kmxH|+p z{U>|hTer@xy60iRh_W(`kQB( zAa?NxpEr`RVtH}6{2)}#Ivyj7eb2l&E8Iwwu|?eOxoq-OnJgCF@o%nN=nc7)2z8)K zHXkPfWt?*FtJ-vk^T+%$!kIHWWf(Y#q7o)Cg_o@>yE-9cVOV|0uoNcFqKv0}@ zEGv~JRIO4B16-3MMMEm~ub93YG`kVB0P&Ng@kdZGEmh-KkZK6Yp4C2%a>4LzVFdD? z=j9l}MCckFSr{XU93zRku0nCi6A?^}23#^FjFe>dmwnG{Eje65S(SxloBoomkUaQ# z#TUGf0_*wIC`)nQ`VRSe$SMb|D5>y6>pC~c{UhI_?Ybg~_&f)U5PYMsdcU!NMyZcE z?no|d!I042q6Ft(o0_cJh`Ronuxm+ zAF+iF?w_H4OehL(p4Kb;t-j2@zP$2q=Cpk6ed_h?>+9EO2gFG0-Xq@g#SdJgm8{Ni zfe*klH-GdfuegIV;X$tJR@k~$Wr66d!BsslXlP~ zm?wwvD~mDSt#J%?lk|5Ppv5~83ff{=tPFI?U=^$X98<6KQ>yjiS`y3PSVZ`macL1^ zud@UY1eB5*F>#!x4`pC%dgZQ^TkkKln=89lyMf_LB@VzXMSqcb2F!;wD~eeA zNv8|<>)G>C;a$=q>mcR zoK4OgY8(xenBb=w$DRQj_Sw&oK1!r9=cL|1RI06HDm{)4G{5QviODU~QN0)xbwnWs_h=~x` ziqDy0l>eolx2Z`yw+Rp** zLXLfW>^^3sHd(ZBtpF+NsXOr9OH6)lY(M0So0k&RY<1DV5Q&|_92mrCd- zA%03X<04d}9S#KOm{+xoWv>BVC$bxnW05~6Mh^?2ijhaJIOcRT+A6_#&Ij-8#fVfh zSigls;@8Z>b9Riu;Y_o#8`O}BXfpwx(k>w7xC_aAV=Bo7foqu#WUbe5=G1C7o>Ll1shX4sIhmYvt%)ziz zC6%X74H|mPMyk|fulq{th#9s0_XT~#XM^Eyl&Sw3G-^D1S~z*ggKA@V>>T33^;- z^A`RGNnKGU=5vx}(U=2ZIQv*hb~4JRh!9jBBpz2TCO&OBPVv!bXW!K>cz+Xw`CKn^W4;ud)+Aa^u)q-Kjw=#E zi)HkAz9ZTsZ-{YArou3Vw_-NGWahnkIxr;EjkH8!>c<=TuG z^uOx#M7Eb^yiA4(b?+r9V4>dw3MXDG+k*h>1nc8C0+Z3!`0OP3z-LPN1BMP6%U}FL zZMaE}V|SSdt#R3xdyDyZnk8_$CBdNu#*C`simADA4Hi=iWf3Da#UR~`|MUVZ3UqUm z7j_JVI`i6$^+j8+Gctsl#Lo3qz0&{yQzQ*CLFduHBv(om%=l2>4Sw@#rH1y9`}{>T0Wb z7Q3w-;_nYT9j5UyYCZnAU4sDnVI|^oiccdW;4Kcv`3t{)BQ9BsxSY|D?gG9xX4dFC zTk>u<&2F#E=K(dHTG7xDIES3R*879fT9{}@CBWByoSWJ{@A@N+qS|LQYA`KmntHGU zq<*2m5NxE%lv^yglhUa<)(6^CFBAL->YiZEi&d^ur5@3BGTRpntmXf~Pv{=9Y`yCC`qH!vo8W#sF&|4*cPM>K0J zBXtzd;?J(BH?=yfa0R!DYH1SO8&0v+4L3?}oU9^@0)yCX0Wku+Zt4_EZdRUHdR&E< zZbi|1MzL~HzV`9HqSAGW-&DS45AI06qDM~<2uf8rS)?|A8!ecQ^S;1SQ0zNL8hd>~ zW5{GsQ5S5YKEGQT6KlX|s-g#%yyLHId>{m#`HOn5O60jwEN~WSWQ)!l!wdKelu{H* z5vIWKf}C*Q@&=e%JZRTwk6z9OcbzClcA9sLHCY%tNkP22PhZveI<;*>G5p1T%Z-L@ zHz)V6sEJ^;q)(R3S8W?p#? z2?ngd*zOZa{?AbRdBmY|w7mulF57d*MF3TxdR?q}^+V*lCi57dZ~6jAn>l9U@ZgMV zU`mNv!*$EndWA;-ipS#B#L%kj$O`#1Ei;gK=aonUSwRPg$LlW67*S;tPx` z5HKKEQ}Tpyt81_suJeo2$fz0_dddEp?^WvsS_D$r0-hEJC?>l0z zzVi~jb`ZW;?R$OAxihvO0R|ECC4D(KdFy#rDXJNcfLv2phj%Cu>eEB5P7U8IMBoNd zMqSyTlS9V;V6!bo?}nWd0pmX9f3IEi7>U1l`vchV|1W!*Puu>O>0=fbt2KQ|^BMtQ z;~qc9zp$iv`kS0b{bAJYCtP5`4$f4@>i$ps?_vm< zMbZ77)!&U$HH=ve@glW8v&7NS3f5sjcnxAN5aWYR&=L0rW!tn|Cc!pQniycgQ=?Io zu3XGyi#ZkEMotm4MS_}&wT*>HW8bPuNP1Tn`i?qqKQdLf?q@9Zgw(&3i zTRT9DZ$^Ng%x~LuI~PTf`cRx2no?8gh^jPXyTPnumhF zOG?Jb*YJ)40UT%UB+UW&e6URt0(7R37`W@Na%6eFu{unR1Qj6FBrI7H*Ugf~gg5SW zk35Z|#&cG7_;Vk?Ypdu&QfX6;NZp|nDQI;!wMTNj-9Lt;mE;b)7cVxlWs;0*g{({J zFaib2aS&^BR_~~rjdDtubA7}1m4b72?>}*&kAYr6VmK)ZlQtGTQ?+vgjup`!(D$wO zF@HbgSO&NO>B^501PA>-oMTaJJUnMX1UOqGAdz}304n2MYwrc$0A?IWTYdu9xb(0w0Hc6;& zo}6(NR+Dc56HHSf0Y#l940IjL6(wAjCG4Odvt)bM=3;jN=Ta8Aw_p>#W2yTMKviDu z_cd~v*afWnJTJUoA+Eg=~+@yxX&ECJFA^6JIpzDtQMAyobe z!QN^+|AJ<;rp{Y#V#LewDCqU>ZFBJDIY0BIt?hBwoOwdR?cTK1O9E zM3kT>kzhhIy1DZ3DD#&ojW^;V=39Q-Zwl>jE;er#ep1|(RJgt5;!TZ<2-~8q3q+(s+7UDSXYtgDcM+j^%23g4zfvqin z0Wy77UzX|Wn5{QyMRtuF^;tA5FSGAE#~9@@+n!fREmHB?xs{Z+e7hceqPt?@E3;BEFI=I@gMI?NiXp+2GXzxqAk55 z(+{bu;IXFKRi;dQFWn@$SwK8pFX@eAWTum8lM@!AC34JBB}#K>xM!OKviUykR7k{9 z(~(N><*8U0(DR1i#chAFFiGrr?&SD37fKnEk8w%1lQ8sq>#J#b$3(0|e$F@-w!OhQ z?&3#D_pPQ-K>MkOk8}gH>-QE>LiWU=4IxtB52)|T@o9+ilOE?$`pTu{))v;-=Mh|K zYPSp|W@E~zw^zjX)6bzj{D@#e%@@%S+}MZqpmSI#=uh(9*cx7|)V=*nj5p)|JBcwr zJ2{TYGnIpNbDphjY)+DEa5b3PUO^|uyd)4PZwyu%{=CM(231p`Q5ttl51ps(_ncs4 z%nSBpriMjJa#@J@@^}0o?@40Z$N!BH@k`i%Uortt`w*qMl@-+A`LjT!nA?`ZKuPeO zn!e!#)#*uBl-<>OzW9VzlK!d`ds};v|M>o8QX?feAuf*;%=M7Ijw<3!LaZvDt8KLI zk=D2g9Bn_QOp|MkepfKf4}_TV?{JeHa2;IF>*{Y#G@WD07)^la# z+=6{?%B=MZ4EZs;aAR|5Oz>JCnIWp#sxGqJnH(hVr-@&FEMOH&*x1o<-=JWr5z8<( zzO8Kz4okMoOI9eK5Dyjq#@JUf!iibHs%2lT)rqZY{6=a(olFy-@0Vl(kjRq4USJ!g zq3yes4)%{_J)=uC7ld??>T^+u9QVB+CKF3jQU1}CgXBkzeaNN!=*iT)RZn9>+i#Se zKm;E)jt!^T?~WO)QGP-NZZc)G{@(g4Y=CV1&FxOwah=z;(!2gJXuI>RlMfZ1e;D-U z8N&AbFW35$r_ufjPX881G}?%g7uokg{N3W{Ji8E2>iOdS`SE8}ywc{6$p4BUWvA4C zM3&+in|k5KYv9uItSKb7n342-9ciS?mpcivbh>r(@FV}5xaiQjU~0uuC(Q9u!ZVB0 zpx4G#?#SsFsAWcgG63zlG3DxhOuW5BakEM6>7LNn+kxK zkXO1Q49FDT`j6B%L|^rX=a*znXjeyv)Vg^ z7bkUxh_be+1k=~aJ%8o*8Vx*&Ys21K;S4Jbr%O5p7;`86toT{0$Sc~(er6XxN-l5F8EUSdbZ;2=4 zcEYUDbDp*Lq2c(Rfj=@N=UW*waz}8~!!+tUuiyqRpLE2N!jCGPN{FDck@1NmB&`)R z=$G>m15K<)ad@Mf!_AuyZGZJFH@d${$N!I>l``yhbb0H-%M_xa$NsNwC8POY=~n3< zUKm3{^ZN5FWMhF@rp6ZU*!D?Ez$ud9trRS+&x$3}nm})O!gc!wO*%Pp4NA%mD!!If ztEbbFp>#)f@&jUJa7#?%q;bI_@9IEjl8Ec+zD;a+k-C9l3NNMvDF@hkVU1xS~ zklS!WYsH*(U$Ong4lWjzfKsfRP>D+H+rV7%Om(uYZl+j@HYO?iL zE*7j`i&;(%f|LpNAIevrUc&Hr`5Kzs*O-(0w>`T2voF`Z)>h9k< zS?Uq}&qa}e9%Hn7iDy8N1rvCz?FrJRi=%b#vYImuvxxd`uAMI7_X%LQK%}u`x(-!8 z;H|d7yQNIX=0JZNn9FwQ9swG8Hw`9~U9UAS&B-Gb;}DymotOh+(W*o8$IbsCJKsXm zHZ%-!iUir_TJrFFY++&x-?)wFHHYRDEk1qo;CI?*YGIT{3hd(ih{KhEEID3FC>Or3 z^d?XisPYa^1|aMl&gZqgU_Qm1RL~I;*HHas_4T81=fD6@Julzfp|!*50fbjmb8h!C zbdNF?7?;n)VeK1BT&}qelbKf7iy)d#3H%t(f!)3Hl2gwm;B^S+@C!Q*@mNM?ciA)b z@Q`S_=POh++ZtG`EclX?sY_0KJm|nUbLL2YEQdp0p$%3`#W)ttGBgxGl>Ndqmk zYM;>ja2ATks45BL*6W;{1;37YR;Ni*O_Sv+i^R*v(G;PA| zJ`b*r#cWLJuu4BrE*-McA0-_QzZwzt2y`gS%wIW<%VPoqav8ZGB8T|2*%pE-1Vr{S z<>TFBCJORWGY++yp~BnT<1XkM;PDB%Q3v6bzG|Mc&&>XFl5J7NGextGfo;kJ3OcDb z{7R*tB-JIVUiTMjD8OkX;(!u-y)3m+xQ&7(YvVSMxj?b+@TA}L5hW5XrD6bQ0Z;WU z+NXU_+`EnAJ38m)SuGLQ?-DY$240uK*q-;wbIXn4Lg@2zCt-HSZW{(UWqp28-bnfN zUD%H>K*P$T^oWSc+G6fo@AJ`2s}35(T}~W9POS~NxAoU+blc{5gX%+Vzt|#hAOB`$ z-;)TTzO>-|RXzXcD}RxUxDO&TgNcxlpNV}!$k*2nSA$B!Tf*1B?}bvocb8NUKSNv% zv~T{4RutAD-Sc0Q7-W#}<2zuCObwSZ@XmD&%R5Q6u2f3u)rvBwqu*L%5NAA(_^VRE zpzo;sgsDHNXw8_aOK=)1uIZjUq5*vL8cU+f2ERx%NWyd zJxrV&!0cz1aOk#RR}R7M_LGd zX8{Lqd_XcT7nGI;CMJ;1!%&N+-e9`Fo%!$qQM|1pRt%+iZCO<4waO*r z*1&|b08bn`hh$XWsbYc@scEUh3dMt>5RBD=xUa;>{FUQdg9<${ z)fckK(!c!JLln)dMR zr|zGpQQHDVG0zYz!*!kV9(7n>w(CMQpWIwp^IZ;a?DN57F9|0SsjQdg9SC2)4R z3-6O?=|^74tk-y^q4LyT&)BeN$8PJ>C)9KaM@J<3q4hIWPSe9Z4b9n^CPb1?WY=B2 z-<`a;dkX~9MB+`bh{c$wn^?dIkYI3Tl>z-Dbgqi;y zQ5_oJH2TSwlE!t>07=r^8C&}V1>;EFAC0mSAA7CHAJHn)9<@GA3qPS${-k(yyS^A;cOlq)+_dr!$BAv|irY(>sFl&WLM;2Eag97rZEeZz=T!5L&22jVC#Ozp zzfmbzupXbX8hcV7J|LTJuChyF#r#r3`k#<(?BI$-OX(EGbOqX#KiZsp^8+?>EG5Sc zO&XO57|ffMa(|gxnFX+nhgDMdFvdzJ`NPyKXa~&&SZCZ5e-NaXydAwVuQ8XWVZyKj z816BHU)U4nrf_ZehGi$!`q64Z!z69Qar|}X_txi#ay!_}*!4`amsaOG=nM-E6-rnr z`MYOqG8r-FmzHTxmJoYs!vnj)p(V_+0b|)GEyOL~`Mj>L?Pv8|?AE){nJ>wpLPBK~ zWnX?@2#jP3NVr(}Ot&)AR)|hSIP+o!uh3da)6FL!IaQi|Gp@Ss`tXfNWEO#Ohr5al-JVv zX)ITz++d!I);8Q!4irHjYsqys14**w_#iqk)`}b&mV>R8qO4WHsy1sVa0k~i| ze&Dla&5ftW!H(I>CB)5N`Epit=ab#Z6KW6Z@RzR@6bln|el!E^>{r}K&(#1=9O(tD@HY#OLQjMjsu(uwQ<*>A9Pgsf^y zG~PR|15FQ_7)vBmq@+x+RO5hG(HbO8LUUq45|8IQ<-e1fhrWRFgibgW{mv8FswP)9 z16-EGr|r<Qs<+Wt&#W#LBh4&mQ0Cx5a2YBp|6)3sdR z5eTd6YI$O~FsxWPJFJvZDNW;d{MHo|nZ?MY?+%aCZMpzWzH+^IX%=cnb-z04`0M(t zU-WXW)iidKXgGk@b;J6-$>W1e1A-DhtR1sFem5bN(o`X6V$_V?CIzRQ`aJeh5$hBG z+iw}X3`dj#```~PSF`_dEIiB85sO{^vj(L7Z><4mZ^Qj438xKg+5$=#Zd7D5 z3Y5p{L{gu>p9q(3jYvyv?1*Nmn|Erkc=HOl^r;3KNj=NK;uq2&Z_CkJ4OsjsGa&9L z(NQEA9>^J*LnF^=Nu)wf1w5Xa*PYMXR7cNEI^r-coi#GDg5oe8LHCK6HG&uw_}$Kk zQX;StE6cxJ-MeXPj<~d)0ZVAk$44{PVz^7YCz(mA6%cC!>s{_SDsSs&9S}?VVrlIV zMEe8}v+_A04Ep}d(|A>I%Al3=GID%{hH}DdQGSySI~ZriRkky(R6Y!YoB|bC_h$^{OfQaPTVI&aD~~p3fIF* zsZW2@fg5chF9%Pr|Ime`|2uUdX7)o`3(n?@>hH|VN1D#@B@KN9BB4t_ud)_<oTn3&u-L&* zaC6iRJj{a1BX|^;w%YF=@0#|fgnh0~Cp~v6DUI-Y0~8E&uvQ)>JKq;cY+R)NMWw)z}{2rQ# z73%i18uft8?%gp6#>U|8Izd!d95z}Fz!&!JH;GA z#i6gC2c47|f2}~sB_JlJiX_@;`RgVotPI#4)0>_yk+zq%DnHBSa63-v_lC`)qDBaV zB(hIImsmgV$O1N|4%z)B!M{K527w+|RpyM{!urw_5^c&s#RwC2j zK!%ZPYL936_Q${#%Ki)@)49)a18?43=1pxEJB{?wf zM4v2(SXDt?G>WPdAhG!P94}cMS1I{eiv>bR{5Sz=-;98>c}9s*bsJCCu{246A7^>V z8b3_?t5b=L?s*l(a~Dvas`cs}ek_YjyrLsrLBodq$*L!{6TdtD>~+xx%<8IMens^D zkO$myC21VroS??sa2=aUhejT2^jut6DIl5K9MW*MFM6(v65;YNr<^4u*sydZEK65E zQ+d|CkqJMGFMLlJZ$_p6ruU&{7D=_cP~@CN-_^Z4lAY7%bH<0ZQ>fe3?i;w@xI^Xj z%m<=FlY;d~(;db=b@=<2{nD}aA}0$zAH$&#tns_kbq1`*JG)s^vys2;$pbk2W0_dffh7C@4~M4j;OOu}#er!PD&5icBH-3Dx58c% z@mG;&PfMF1;y;5iasM6^Mu|`QVSrxwiix8swCc$za?W8nLLJeNZ;|;ywQ11zQ=Cz{ zj|3$-8&IN0Hdy_TQl&CUzPTw%D%ry$TiChNnXJM0M%iRvlUWsopz$Lj!X+RK^gd4f zpB*RYPRU5;I?{)kQT)$AK%E!lQFjMe;=-cv$c>lxdv`v*!`?rGp5UT{-=wE2>>t-r zdXpnfoQigFl|>$L3L`=2>uKj7>O&K#ASw3iGjaFWqIWN0)dNA^`?GHF^GqYlXoUse zqR?>b-8tv{X!RT*?dWDsvwv9;EcRP=u@njh_#4OBDLuYDn5o2B)=fO22eePrkij2b zX0F><+xtmdtgGaGsrrvsC>|o+P2A$PJFb3|O%>eE3|a-g2_K3-81vTine#gZj5C@1J@lDpvHu-m z>&3mn2sf#`asD+dz?S9_TQ_YsuhleU46xryKJRJF^z=x-M9dg_t%DejU7r=QADuO1 zwtt;~tVcpKquT3r!tYM0+__I{2_t}nK1u@0rO7+Zz6ArGs|}*6f6j;r8(^hO3sLu& z#tLEMG5YUUIR6$uH7;;5xnVn9F@8*?+)m-()sb7GB|xFX%` zd@)Y9&AqtMhX>Qdy{(%cpr*p3Ya1S02(v^HP1W?{A-TAd%++Io%9UnkrM{xqSpdA{ z?ECWlN8O|pmpXGDQK%5Loaa4o3mzlbhXq)*rG!dDQF09w+Nplb9evV}u3f-zo1+2`qBkL@LJ9}vHpw@WhdQTVO=>DV_mMl63uYf8W4B*k~)5N6!KC_Hjz;C)JISGMIF@;pEO~39!?*wYx z(toj+{zCK-y&(-rg?|i}e{EepNO#)s=nS6>KN&?s>A4i8(iqMaOT$tbmFW2t-7Ia+ zre>!EMlRR}y*CaAncR&^6bmQ%WRj9~?qSauZH`HM6k8V%a_oK&mc5D@|wDecj?gP%%)5wT5 zD<&=-s#`+1+B)}sGcO$xHCGTJ^{LOms=p_;?@iy2McwlWpWbZTFWWx2QzL9;L%OY< zEF<7<6E8KM>bNCv5D!+f>k|#+1jk07romK7HOAnWA;G3K9i5#> z&fc6fb`y^v(b~(QrY^jwG;Wpxi zX1wQ1`E27pH&crd+&^OcysIjVnUb}zqqmOQ*`f2$MTn(V4GXlNRd7H4WN&tw?zGa{ z5Lf)-r3|*itR8!Q1JC+EfSF3L3Miuep>&(s{Qkts2tjd}lrqU3+-P&4_+PeP9?LxG>H`VCD@LSy3(`38RoMxD*8!t}=9^bk_kQhc2zTa2Z|jc`zo!T&A79td zAJHi?m0G9$itJCL>9j7{rw(^r?90DK+yAiig&eQ6uKinn0HiKH#h_pjtTFdYODyr9wiQ2AvKt}@dQnAYx2B-&4U(TB-E zed&xc?7V~R<)~rWcsQO`YS$N{b2Hx18UwY_VG{{9-k*1%@{9%kathmx=;9ce+YRC` z5Rdg&plQ1K5?5fN5Fb>Ki!j)TrHt>p3%fb{Mbs5GeK|!3F>U^;7zD!jT~8RT{3ulj z#Im?fb%#O~Qu@uC1KEl(o!xA7H?zGfZ5#{5ui!>Rno#QujJ%{?Js z)xlzx&ygK2Ukvu)W6c~J*EPtM3mRn4=h#rJAN+pK!gEw0)GY23%XtNY^V7)zd7T@g zxq?0LM!xy__jJD+Bgnn+kg9o48}jZ9tr}UaG#jSYCGrV=y;~c#-Y0Peq7M}(+6%H{ z@EY;-3>wr2;F$@m{AP7Io8fEoUFJs^st_oOBF-e4o1;7%qs^2U;Z6_?bM@}tx+1C& z5|0&&p_>4%c`TnQyFTc&hhaaBpx!RD-#g^#=6tMkdyuzTL+P^ux{YiQzYz8`kaQu) zlEZ*a7O;?(Ao_T?c#{~EOm+a`Ossbk911T7$Hq0#7u3Pk-%X(b)(e=ZY^geLzj27E zIsD>Dop~0q_jW7{wYH!-01z#WVgH?moYaCo#+9>RFIrpRR8m|GXfHq;_LElvv$&%! zUGIIiX4RMxAvd^)HQ$&pF)oZJ+)}zwV_VsK_Y(qh+e?LG>RxzBW;SfEHB5#`D#O!vFGpX7GXE&Z{#114aIF!IRyb`)7(eRyJ52a~ZkxZM zHDaH^xa1o&)lk#%{*=u*Un1isTt9f2qJF(*wdus`r&K zV6HgxU}m#2ecg_0@dVqZSMrmg&b=ytH7KPUSxn*NUc>6Ex9Y=^Y&OuIq=dj}a~v~t zrD?-PLE|6X-8)kP&im+F3Pm62;9A*REZND5s>P8;dl$}Z1XT6S&YNe7PS|pbqshbj zQ{IqigfaPgu(?P0Pd^=DqCxc5p77^pX=Kiwuyc!eQYfOJSnWt^k)aaBrgL+>(FNm% zpyZU_&-Ar*BnA}ekNmUSB@)PC$^KA^4LVK@Xe8h1*eiS{#c|fu*Qq#IY9JXpm=~Z% zV$h;y;;mwhLo^2ltok2$r)WY{mlpXcHP;gtwzWGZnM5nkQJr>*J`1Bc-pu<0Gg1%S z>m>(KefKlSNV;g3ZcXQ!Ul6~?DV~r}DqKOH+tj>d;OTZC^4o5Q?N^Q6{EJj6N*YfvFWK$&DKddKw{+)j=W$fCKM{6Yuo8H z3Ppj)acUF^I**?v3bP)W=pFq|6RGKxcJVtmqg+#U@lWi5+bJcP_~!--M}}}G0_{1& zUnu4GG6uh|{%+m^7W5MB%G>x^>Hl5?c-bM{6G+n+6l25Eu zu{8r6vs8@-yq+X&!hKjK1SyJfIUey>D*!usD}qXHfNevj4TI|)D8ZgHv-KPlL7!H+ zmJd~{tbaqj6#8hwxV~}xwBR>yR3VSY-2(hWOe2cd5&hfQOkHO~=fqwJa!7XPh zpr7URS9NjKj?4iZ$XCBe(-h2a78&p-r-aX&uw_A5sqI?S`l2KT+2pQxw8%;CirzD_bngni~ z#7NxVBVN#TD69iyVAD!u)OTiY(^C^_5u$L8ILOq zjo@b^<_jTuXQWNJAK)}Dus}C27=Zr;B{#a$0GF3vmILoKFLi_|NIaL+A|WIH`UtvW zD|(k9SjerU62Q3*?HOwII#T~Iyy!jZvb_D&ww-=1yz+GW6hj!`p~QBYecejBKz!3( zm}z3=qJ_te3=vaRchu-}u%5_qcr6c$O=209T@MB-4q~B$HRV-h*X(|oPYv2U?-~P7 zkVwVLR|oC)G+rT7M`($BFk3rBDoLQ(6{x1iLqP|=I`AVY&7|#Pt~RBS;}j!^x#3dz zgfGdNVwyE&$TIoU1!P?H+6=_W8q%$(Wl@AlQr$9V(iC?#_f)Sc0@*%#8^E$(R-U#B z4+w(jiUveW3E%Z)(qVdfA6Kog^m)zdOq@~L9VAEsCN1CZ#JVn{b#dJ$EBkLYQayM) zxmoDpH?yVC(-I6Y*o_;+yoS*{-J3lf>cvY^^=y>N-AApLP-F^FC3d&d*aI@(3Md1E zS~K6!^a+=$;0kO>RMOZFh3QMdldwBNVRrmCh^^+gU&<;(GSFJCmc5Vt%q&qbi1+vF-I4b09_Bzr#bQhZ7ws^5#SfZ#yRwcj_=o*U_(a`3F1ryDr~$ zI}UVRr!!3(nnlVqK+Ie|*EErzt=Caxc(0+`tRTEmzP4dS&Hlvn-2sXr$Dfn~;j!Xo z77;M2I8$l}BOa8u+Jc${gOy2=z|lPnV_OqcU(uw1G)IY5Tug7(NkU+2#5_99o&X`;FB=Ao_F|!Zsh9tSAS%t#+(L;T`Vhck3{{Q)XxxnS0kc?DYac)%) zj)n)@$eZQcWvF~1<$EtM{Z{7tVVsF|;D*=z9Q?}s>!DC^h?cv4s3Z6uQvwBsE zQ3hu<-L@Sjw0y?XE!G=RPVv$6lCVrVF~y>)zA^Y%K)3lqxMKf199Qgnzk~1b(}GXf zwa=aY=F0s9``LKZy)gFzHS2eAf&h0#TE(zPjF9|I{Hat5U9;Y;8AZq8*YZZ4W9+ON z7_VUKnLw}{G~pYgYBawjSQ<|X2o~3bPyEh*-Nb)IFkBSx9|gn+@yx6XQ&eizdt!?6i$GmxHrb+`g2-%iP~Ho} z6dDNIFL4S9!d(&!3(9Y_;s3mZU??cfa-KU?p)G-?yd=esv0uF7$cDjW|}_42p|GgIAy_rAiqCQ z>q9Jh4Ebqwe7Joi+CMPgaJuNAJW)0c`3PZ1S2VBJRAKSk{^*XOF$6=2XTj?SB^Lv^ z=YHkd?Bp+n92VRZBO55>Rv1B_8ANBvl9pIx>3F3)uwiHDZpyS@>%50|s?r&Gkeu|e z>zP^Ci7jxUtHvZBPJY(WA`1=;eU097wnw=92=fwlaZA(@5)s2WUC$?WvpdI#8z+L4 z#F=tN;|JIjuQPWuHPIM=fT7}wryhC};JBO)x!2)RARZv@chy%LYnNXm;(2Fn0uCbd z04rStJVV;VQ^7WR1qR<3x06T~7qQ%&&gqw&Gk3p8$|^Jdz;u z%`X;oy-xF0eRF56IDS#AF>r2E^1oE=UA=k+`8b8)V6P&LQ(Y}qG_Kz{Oz<6mXFK2* z)e`Zr&j)#17g^G+ApOi9IcMsVwO7Dc>S~iweZ9@122W8*hJ)~EaW3Ap!FIb0-H~Mm zA=3Z*lcDmZRfKDKu1p%2$g3SqT3Ri(|He@<$0ugXz&lW4NYiPIIvkH?UvVdu|7Z+X zQb9pscMLX)fek}!Sh?*#Bh4BC6vjXy!2TbY5n8YlK$K~DAUQv>QXs_EVQt+l_NUSH z725Pvj6<lE`Ar4+0*oY=`-iH!(lI z+)b+@O;!aVXGE1)bc-3>#ZreF-ZFq`J6|*RzpT!oDU~i>j_LLWM>6Ko#(|8uC=+IA z10iql4}RJ~_)8s*QZ4f*q_cB49gr*&d|61)R5*`Ggz7lIyYGgQ1u_-<_?kItPKIG% zpt4bzR3})F7q`PL3C^;(TsRS!F}xmnUYOhO7B`yZ27<>awI!sNKH9y?Yqt zJv*tjUWs{aR!E z(q14}U?+Ud)^SCpZk6ujYiaFMV+U|#(3f2;4CN%TOwDQ8a{svAskdz8PW8@3iS3Md zphjJwt(G)8P$(khnHh10MbEW6LxG8o3oobcUf~It*76xQ3Q5Nk)K}`sSfuE>PD;HH zLQD*0zc1auF7W>-n~?9Xq5y4> zWA}c&%IR?6|1gCG*ghyw%Xf&ED?=wG6C5}w~UH&-MU0~ z2<{f#3JQ032vWGa6WrZBIEA}Qa1S0Fg1fuB69^8$y7oTjeBJjOqr2}I_m1b+JL=#2 z)>?DTx#qLhoU(ddBe_%d*AZJ8CduKTXcaA&ds>$Ncmal5P+uDeEVfKALjX~)Fhu<1 z3WD|Dl$PRIQ9`ZIl`F;0b;t%R>lA>KmUmg_1|&N$B<9rv;23p@5vo+>J|#20nBD~m z+9MBVtC*}{+}1Z6v~_^9fNxmTLw61wi8pQqd{U2k*YEKoZ5^TDl8l$xsZD@$$I&|R ztW4@;M9|06J1!`cL=MSRZ2zNr?bzpOpDmF9zZCE4p3O-dY4mS&p?qL9OjG}hEj962 z?mr0{ly45VpZGR!_?f@~pnaar=i4d54WrAW$lKurXPj?slV_o^IO@=SJJm! zkI4rSkCO#R9Cn4)a{>->XTt*EXH<)v_OV zqquaN?M(MRiG@&}-x$N$fH%r2C5RR4AOO@&$HB7B<;|Bb~J#Knl z@3_K@G))bOS#|^0hpfv++`uC?X#psa^e4YJdL8dW<#qD*B?^#evptT}Q`i7B#!jjjMzT-DbCd+vVD&73lPOoZ1K1Q z;1HIs5a>}x`mKxiVRL-HbYPdYZnO&I-qUD_E58F5pj!}3TQ{SFz+^H~edx;4j;|pa z4WT7vJQwLKiRh|IZW!A3wVnlrI)$F9q+@JXcBHi2_y$?EPcP^m1TMx#f$zI;T}d3# zo=*#F&C^b0;_vY8=QV*hA5sgx zoP2zo4g2sbPx0sR!gIrSa1XUgh~c2% zq_G{T$SSC0wD>wgPb*E1crXc}(}xlpWO~FK_cKPjy}M^k$TMgpH)b)o$5HgSNGoy# z(g^WM(yv!4Ssay3Ng`7~H_KaAm8n`a|2Tvu)d$_6-G}0b&CbjZB#@8MW}`o##^v*a z7TjH}$)6&4@Xy-iDf?5}x~;l0RW@(z_mjI094 zgkFaS<#SJC6VFEHy>0|MuRr*0pZ(UW0d6u>)uf#Q=dR!jTBcj}as6K(F8=|(nExa2 z$^27Yf?~a{APdrN09qKlsBqnXqhajA!Vp&A(&pOM-7nJJ!KR}tB>Lp>q6M~2!LXhjo5ubl?5H7R+CTqO0RrdLUtjkG3|@pUV*$cwJd3WVeR1 zaJG6M(8UQjCT#tgxA3}HDP>WMf%sQY#H=GFE><3mR2HX01jrEd$3xB7pxav3Jt`(k zvK(iF=Ax(+^-&&Y7chdLH_RuWqKNGsy!3qBh6laV%qs_aCWRdQU5TlqrOa7d85($b zzKp~#ujR1Hnp#f?A=#Bj8|_N>`^QpAivNiEwL%j*DwWE%MrfjVUZ0ve$hv_wCh%Co z?Q}EfW;)PM5>qSr@tTG5R!mKn`dSRRFsuMFFX(HEDpC>1CEeQ5IA3<#M~({WP6Dg) zJ4?<6c_yT~*n8U7Q0~OQ;5mPJh`}@AEJY0bp9fOaCr~+8`L2z@2Z>?go<|0K-gfeK z3Z2Wjku(1Y39wl!CN=`tbH(r$ZBcsRU{{tyoaeG8t_ck^`L6<#3G)PnC$;B#%NxYg zmrbk$oQ*;I+vo9ARBnC=dUzO5e6M#nvA-Io&sd0lQ2@!`xIFvdJ&4#h-7JT3wyrj7 z0CB2eNngte$jskO5*5k)GK*%E1iGLQgKq_2SV1GYxX1&0xuIOJusc~A1U^+ksxZT6+Q*6 zO1Vz{F{~+qD9+w9la6d*7hS#Yrntj_o{w?w9W&4RdoJbXeJ+-`lMGpi-dYmM7!gE{xDz9YmY={6*K+p0WfKXqoq){wG!Ed%|dIH9+-gO&%OWcEz) z{qi6+n(_#I1D3vqk3{??)F)|sT@N1(HGd0A^`$SzO|Qy(SIY7v;lJ6AGQSR%LRcH& zOEx5g9Dc*_9nSq5@D2&@rtmla4S3LR!YoyP$UTK#=s>YgzyA)m9ZkXR|4!y!T}rh! zczPTIKFh0T$UWf63vv*vsf($f_6H4<4a*FGH`bo%-ez{?B7q}IKTkCjI zkk&^q#Imf)XZPS0*YYGFU(@W))Od%W`K^Vw9NiLdI}rWu#T5pXYSU*0z3>cJb1biV zlc=6KzEe0HwWfWqcliZk(?8mT+ZtRF^hRU0ySN%>SG=j)dhyGw=5jX*&IW#sOr{;b zcL2zeCjxi*RmB?uEB0IV1g-0T3KHVDRZ1imF)%!M-lb0T^hDE)NrnEkp%f4LWO453 z?$_F(@dI%{3&rC&m|(XbpulkfFkXMOzG#k#G-3F0>8-kFT!6{`wJ^CoZ1< zb6}2szA^fY+Z?$w*;`g3Nz8G#y#iK!!6o*H*G;W}4-#!<{rVFPqTl}OY#&oN7J-Rg zAM{0)p%~ssZ?w{;9uak;?jAAG%6=X8Z3C7uCX81eG=v@6xp&` zeec=x4*o1?KFu~5LhMh%k_3{CNO_9RIGS8aF*rZiO?cLK4`VdZfiT*vqp=@~e@m!C zCvpt9ug_vNDQ(kS=%VwQYKto0&AJcNyQ=9A@_it5;Ih1hRuML7*}Gb&4$JmC!+hu{ zj=A(HYVCQO3^AB8?l_w}zEAfO`%?+~T^NK>JS(X#rKTo_y+M8rH9l>M9;+o(*YC;! zOwfl`FHyEZmt?nn|4YBx2%oNSt6ND(`$5PtmYi}@8bcXem`)Reu9i}~fF*F}<6+u3 zH}a`~29##Tx4~pnSxHk7^}T$)%FO@aBLl#k_Himx0p_nKwQq8YvYcSqi?&^ z|1j-eaQ1)ZasPKXTbj&;sqC|S<|XislADpf$tH7*FM}ZE2J&Ot}93e7W<5;Cfv) zZMumdmaxvLpvQAtm0e9klMq^2WA*wpGlaA_#1k)nI2Mb|*;gZr(OHZt6TE z33_Y?b$qcUEggdb)yq9eRUMR+6CQJi(|j9pl~m)%>;IP|Zq=ttJR9~{MWM7BYmimj zJRZEg!bCq|7Iq&Y4qrD9>$4XzAE$MiYqIaKD{qQ(Mu_~%h}kn(=79i(CO>DXgLJ;W zEW)YgOu2VHLLz7qqYIgwcW?LSm9Ksps6f2m5r`XI2mH8O5d6VB_%93DFPDeOb7S-z z@|{55TO3?4yA1Q(x0j@u6Gq1^ia5u&7v9NiA?ZT%`d03J)ja>~tfd;qvqMIMm+OY* zIsAHZ7ZxINSxhL%_@Qkt)F84i>GCv9+~R+7_#SffdyoX|?JgS{xO?xSfQ_}9Bhwtk zjxI({R)KS+QzqIt*1}{b_UxY==H}0|G6y`FfzIlg7Uc8GqRH}lYXirlMIfwj>fKUy zph&S}1b&-Ox_PidXOFA7NjafZ!dE73@skjz#^9K{f>z(G>EM+;AOqS!kG@ zsE1U=Ma}MK8-&8Ywulo40ZugN#k2+A>zz&wNZzX<669NH_j_K!8G$sN%gtiMw1>7X zhEfW7dF+#<@Y4#UR1EmNK~oXLFcOc{584tZ+M6PB)<4qpzd>c)x4)tmj2zNTc_bZB z=NEDj`WIsp@^Q|ULiG{W6p!`NDEwOwF@T8txc?N0K@bte@n0~erSB(z;rXj`L&tF7 z&evK-j=%!1EmlKwnGf&VHb%GQKCP3u^8y&OPlS4}> zpSlTC9#FFy)D-mtrgJ$NEeEZDI@9-Dvx(E`TI|zmzQE?b<;_qAiYf9CISC*rk>UGB zW~xksrU(0~U1&@wAJ*C+st5;%v4cdsISu$Lu4KQ66aoLYCHN?vc(vilLHKc*voyRY z-@}3o6|eW6#@hQ7OKxmeXZwqbBw03kdVTAH$nwtyxCxvXQyJe9l;_TfpjBtJj9Hvn zPl=NSKM|6_%v9Q50@aAsgEp`h%;KeyD>O^oNAfzYUWoCCFQb1A+5= zoTn0j(#kd0QoAi`pS86NexleyZ3POHu3Wh6oP(T;%hV4ogT@y((JPtay%AKDJ36AQ zmDB}~JabhgDJ%LW1L9=X7X;{`>Hh1)3PDL`4g)&x5LP!xj0B3T=B4V9rx4IN!I?7> zI3H1A0o4jwG!e_BJ|VGj#+G=Y;)QT_ZXbjjt_txp7|>yO>oe=?oMT@%0FxZzHRTLd z^T)bTuBVJ$zpsz1n%xMRP!rPPscJoHCqCj%rjq2O7N{=iM%%;Nb_*Dr7^Re`_suTw zZ=mgIm+KgD@i+QJRejIf-#?ji^%3;WflVZH^m7SMGwd2)T>SgSv7+D;bd4UwW@$}C zbiTv8m$)BqhEQLnRN0j9DTZT2CTLK!c|@0lPk%L9uiGt&e(7OZFr6$C5g$=B*I3(H zdS6SMH-@hASpI|8)7SEQ%!KVZR$cf=@i{%fc=&u1WkkIS3EQ}+DZ5b{p~;lMpI6wz zz_>h~`86u-{A>(byi>NZ2{&YI<1IqA8;^_?tX;h?`FiaL4Mty$@vvc8S_S%i-+mn= z-Sr9oF_F{H!p-x;Y(KtNI)hJ?AwTRmk-yx*eOq|fiG8lT>?W0OR>F?jneKBVYGeGU zns)U!=FJWbw-)Lk!hO<}`=gpBiQz)#S&0;cTbH&|*MD$0}!kX|-O6)*za)iQOs z8{foO*&DwY5Bx5gv_eS!BtzUj1|c?Qv!`OZG||tEQ8#xGfdFwvVuTOeTp~tXkHn7 zT6?oqi0Q#O^*^~4Vqjt1-|Pw)C!|bOopS+2TsSiEY9l2o!_*2a57NeB9bj@&@m0P| z_~1`OM#<+bUs_z__;l@-xq)Lv@)n>H@j;rTzOm6j$IJ5>wZcI15>!^v`!s-L8{<$g z3e_YL{7or`g+R~$iJ;RgX+|UhbN=Mv&w2|-?^;63L%%jb=HOttsvI?wQTB|b2d~$K zz{VR?)L3OptR(tlwm_@M1P6RU`bIE-x$Blqvqs`Zg=NH(h({De|7^49svo8O%_WbiGyeJN+{>zgE4rC%1kDFa1RVHOutkKNOT=ZHYc z=rJLUK3Lsu!S;PWUZe-VP*% z^kbjFd2a~W!5{Xj<#&HdU?ZMN%_t=%7W0z6HRp9yCLR}h`l^H9mGzqT*pK!SA0c?O z*Fb#)-miUdfdG;P=ijRRF{D5Czn3wx#-c!LNGR-P=LpbFAr3}zcZLUO2#d!(?X@g$}oe)VYw@ zNFtKql%_3=W;x^vS!@CQ23t6Kn60(LLAg|C!}4l;L7s^Jb4}AQbVkmvU)NotB|*Rf zM5qaKxB;cBjbN3Dg4($WX9PgZj7`q$Y+64>oUiB?VF;@uZ3wqZK1ouyC;qAj`MU$57@a$_Fsp{ z4?313q40SkEgqD>Vp}`A^5t-HnY3HV0zi($k4!}oohhPv#*#bvc@#rD1@sHMIgGoU zkeJ{OHEAUI*OfeSQ&@o|vIHDW#rPjE3aYz1Iuuqh#*DT~Ys)oFCI)+s0Jg?)#--k4*ccLBAtAWEBI6kVk^gRIUU%<&XQ4MjXx7qh8P=H`npQGfm|9#iRjk z=dz*R=Y-2gQ>uNvuC5Ua;TwF2$_g&+{_O?({A_9!c{Cw2GA^nvnn-!gKq;Se?cqdJ z*EYW`|BxrH?pgrcS-k&HqqjMDXTs45E+K5p#3@y<`!-C_g`1p5DT7&n&uXJz;57@v zjk-Y1oTNgo#6mS|0ObvJ_`+qVj<+~zAjRUeLjeL752;x7Zmu?;T1gc z1uX-+J_IQLbYkdv{#~XZZud%^@=eldA$BS|PIlK2gEw|6H=8=KZ*vMFzUMBKLBxrC zO-N^K;GZVg7l?RI^iOAuM?;fT5!%4VLD?akX(OjcPtJF85Y zkzkQzqhpnF4g(0iuh79=*%bafkCoa!wteIYQx2r#>kv34&dGORA#6WKL5t{19_hjB zs~?@fhW((kK`w6+v=hzZJVsRm{2-4py+)@|6WSn1;b<}37D;o$P@PNr-o9nm;Hxrp zZyx;vOHE&57Klj=YFJfThQ%#P8Pz%P6zWh{bKrqS<$w3obGsRN+WrTt*=_Mlj`qF}KTHY<=nBZ{ zy1RpEXsT+MD9osIpPPC8+=++WJP%eFCpVWs*5Vxpxy{CKa4m1?O`)H}0U-I+Wyrc4 z_q2%(yJWec8(;UD0b~PpuZOIyo0&j}Nlx+1^G#>>UqXGRIfG}uNF6^HM;B`WubTk=?}!>7Gwl%O zLNfFpQ_Ytt;(${#$pqTjMsPxHdK9-}<0VpwfoFsB2i{h~6y*rUbnH%&$mSGkt%30o zlweU#IoKq8oz$H}p-wlfS6K(zy@0KNYY`?r->+v&d3(iaxkGGi42(I(R&FUe`bVYj zE5fuxe%qS>?M$O|l=%JGEe=^xS9vjI=(kJiCg=5<_roC>l_;$CmhWSx0ePNWRE?#N zlhFZBH{Jf4lrxf7Y7iao|5F?}d4qvTV3@$4%~vnc8VzA|mU4+9^xPg-79{23<=z-= zAF36CFH~?r>i8EiD{F+xmv`|YA?AJLh{jaUg|k5e);hx#fw<7ekVT2*49zwI^|O6$ zpW?BwX+Nv(*C$x&&CdcqNH4V3nVDqp0eC+$TkzdrsHDY1OV2w>lH9q6^B|C6j3j1H z^U_EIbt=Q;Vl8kd#K>f63#gJ>P6BVc z*oKo*$%LWe+;y zKNNQ*i?l_FaG=woLsNv{)=b)7aVqHQ8k!WV7b)E#4o!(fs#^^Wp1Qiv$8C+8t05UN z`CNE$CFpb!p~WtEs&gnsjngP$LnJ=uQj6x@v!&lFj(m$F)c4S^0wLT9&BcDfLjAw6 z>2H*J(S|1)G2Ll0y?+TewkHxWWP7#oCbS@!(?Ks=5HG>XV?fV{CGTCf@Tyb%ER{-# z=NwEH8DWwV++(+>$WY%dC^DJfV7dK7+d0WL43Oq3B&i{@B!S!HI#OVst|bE_TQ~6$ zyTGtEvr@*W-FaP{jzLTyXpAYIJ1g?BZ+?JENsr zTfiy7z*j=*4&RecLhr4mkNuMG#5Enh2xE;hvyq=gGee{bltyJ0h|^{~gVY~0e#m?O z@-8<}meQZJ&8pPoz7oaIp0RxJ7I-<%;_I>$+v=I!Ylaf`Up+*jaG+cBikS zpQ1L3;L_gcJ7Ugum-(|Ffu^8r3`f*FKI}sv0T~i!STJpjL2%d?3?!i+M=1kAz*q#) z__+d`ekw$ewHp{1;bfAg(JgUvN=!b~8JAtUaJntY^<&R@=cSKjQ&_n1C z;X%u#|2zdER!|uSGYB1qp^qF@3>vVrl;@DP=MNdIN}j1RBo8%spWIl6ZOYrVM@EJ4 zJ^^t^{dQ^wLW0Rs;1nE?S@N0bQ~^xOCGb-Mep@cN_wqt7Pq7TiX$CZs%k!s+t%NBeKBtS0xUu>1nV519)V76IZj zb%l70wwU(zzqT*NKc`qd@TYSk$)`A$sEVtDR6k{dV~)ZsBSjNo`a@@}lao1#L8>yk zYrB$~FvftwC3~l>Q}WDjyWyeUHnCD6MI(BxfpaMQK zfjz&Yl`AbeM8Z}ua1OhCD4-1jCc-0BXj5m%Up}Vq<69Al?qa5eQhd@*7#2eVh63Sh z)jl*?)wXqo&_#I0s;&|Zc}2vhGLZHB#|t1@x@d0EF~)JPWuHf9mr9-FhpY{X$24xO zRo4JRF6}|C&){t}(H;}$<6<1qN)$>E40<-~K7_7T4!a5z)=i5{M%kFtRQ#o#k60<1 zOeRepRVn+J(5KQpa5{@%(CVIIZU~s9jMVwOT_n|}K3V9%1*X1$$bEdLciDShqw9kI z_zoY)G(kH5z7+(2wz(g473ZT4!-3-CrKuHz28y5(=YS6zyf?l#^1-K3;+v+{2_8 zaNz<`$lp)|doyGSeEPKk2Pa9m8uayAzxf_>Y;v5}h2OvdQtfM{Gdc_l3XvgQWG>4M zwAutWTkle!ea}v`qW9(3IPYE3P>i^2PgVTGhqqtdlW}i*q_1(Idatj9@PYp#SKQMj z-o&N-+-X13L1^VMk%LoIB_GTL^)u&7JGu8!zREXBs50mGm%+Yq$u7WQ>zdl{J|FP z?xzx~FUL6E@?vDAs!7@g)?{V8xwt9!ova^JrzDizP)h)AfG{-ulMy!0k?M*@OE4ydeoFg-l66Q&wbg>HH$tocN)f$xvj`jXq_ha)={F_;A z3J$9${IATaV-udpid^!U&;cu4s6ePMUblF?5O-Ow##Fz68 z5hrY+-%Sj?J_kEK2Jn~)yK8u~_R8h9oECx%r>L8GjQ{22m6 zNWQaGQhH``s*>nHY*7Bj37Z?%J)8o*VddOWf5wee!En!^U0Co(h@V$8$|h0);e&MI zh>KDcbg3T}e_p|YsOu;1CW3bMxUkv36obsAw!vkspgRFP4TluRma4k^LwCSQzq zT=44$MIryvXJ@0rDY(sNgMwGh7Qa39whf^RM_k^leEQ#&Q`p#_9@_&hpO0_b=g$W6 zaEvn3NE!lduwXt2zoESkwbOz9JJIsGhyRW*2%mZ*uY4P9J^Yu~Fs7l@U@C*?-v2v< zS5=$;16qHZdH=UfV0y?Xrj~%5E6+&#%p&d24Vz+V#^&ID5xhMTn-fmm ztnIKIPU8>oB{t~Psn%zbYi-9d;-TwoFTiu@Rnz8-Z|!De`%rCWj_*$m46<|$@aGJ) z2#ED$NkBF%esc$opI{=6rZUPAIr9%-;llX#6tiFs$KeJ%P%1*yYAkSP)dagZwm{Z2 zK|ZxoDm4`QpntOpSXG3*6aiG$N#rh|5sMdDRAbODUC}uH;d+{>kUlv~iJ-1*)r5_T zdQq10=>PK`!h*TepO}ov*@y?V5+e(&T3UmRMk$TN66Eh4q9M9(@;LmRm^Co{#!)fIv(!4@93O4dXmW7it{@QM>}Y5SURP2xb>`j zB36XX^_U`^`uUbv=>60Cj`=Be;TIkBTL3ibL4ZWS%Ga*c@l(SGGjisFMdXo!-pg5< zBo=K@-sTg#)hQIU8u9is*Dee_lh&3ZH#fKQZQ_U&0K?`SEO{iz3Q>o&x)yH30 z7^JZ5JG{X?Zz365!Jku$DZ^lr#5BZr7eDZ?aB56y75VViGbJpUs;M{=&WH8B&G)e( zb5PQQDa(WNB&FmKW)KCY&m=uZXJh&yIEMjWV4K_OOI2^3M&S;tAl0ew{LRHaVk zR8t2ah~3xNkym0yeh(xwYP9Zm60KZf$oi%cgX5f9U`?)^o@5@{RvpOSltKEH5sdKb|kjLr4*UDM}ucnMBQNl}Q%y0g6pJJ6H)_)>L2$W{K%c4;Ts+ z5m`1;1e4!aA5jpmA)i0TZOLpcE@GgQCtep%Yyqak81zky>Vm(WL3hdKt`td++NQJOw`;k51~ab9Wjin8Np{u1|zE}c(b z1kKb8Co%8R3em+3=OkN>EdWo*%9N#v*t$faaE|I8ro<$i||ky z77wE$@e2X(-73^ai?B00C!;%m+biu0ZC~ctBQn_!CH4vCoE%nC=y>a0U1Jw>^6uXs zJKlA>L%F-}DwV|p<6d5-X4uy{-a9WPRn>*wdy$Cb^qr-dEU{g2`KodRAZ9*-uyS^y zn5X?qzf47;d#Cf0^b=Qc?5BNcsZ?lBk*{PU!;wKWw3Oh&W3q^(BDDjWDiwlirkpoS z^FrAGuU5#WGtvWzoB_lcW;BT*U77XN-J+EiyNZa;5;E1A zVu_+5EysFFE5r)NTxZ|;PCL(~?xy1E+TDIIQ0Co<#=uA18 zF+ST=fEUt+QY*EuW@{F+fa?c9-0&Qpw$0VBZdYzo%v^jp^23j(--@rMypvkGhe@OX z(UM#DTugcbW7X6F;g>I`Nv2oH0wa%iX{!eL_n-W4&-h;c1&3}M5)SEEr2m3LM!Wwz9Cqn&9L?jQ z{J2UA$y_L!E8E$Jg6l)rbd))42WpEp%+RIKLxbpSBw-Rv_Qs{p!4saAbB5ZVzvIgd zia|4*TKl;26GLm8I0}*+SkNn9aS+i)_tSlaE-}G+bO2A*PyWzKdz7czBpVQ zQr#0m&)lu|XE*bZ?an+(+!g=AE}@tV=SPQjP(kE=WNbR<(OxT2QtIP1g9s)i<`xC= zMcHBI9bdiCw^80MLO_zs))NT=x;R&uJ(&$#0ZHP`d;J5+mqg-&*7wW(IbQiqhU!Md z$_OZUIm}(-kFaZB3>iN9OToUQw55F^9N$W3*fvhGtwlHt>H&VFN+&D$U<5=Tojv67 zDsjmpx=`h;ijR+PIyIP>w9h-jFE4GcP*~7aw|IU&tbSOC@b1MK$j7~n*o$XD7*Uf; zM9;j@=irdwS_|nKxt*jW_r}BjNLhasj3?G~B}PiG`5D0^75C_~a`A@4$-NTIza42uy2Cx5b{oFs z_>KzO%_+aXZPY%z945f~t%4-Xx^_Li^yp^^N~xpc9~NzT$!Xb>5O%FF(DGP;6+&x; z!alt#aT<-&NSRlao(xkOKy^HyMiB9yYLJc!Q8pP7i^JQlw`?f2t|8ss{&Vq!IOUM( z4ki^nq_kZPKjNOj&dO>2q4lSA`7 zHQpfaKqkevoSc%iJ%?mNK{I!7IIY4mlTw;A^E;L|sx(o(fQQzo=&FVWoin^Tn!1!E zEJ;OTBJCNpYPhm(lDOM%9e_Q(@#%b!+UxJ&kZk+H@@X)^Y?f=IfJk9O$eKJYu6(9_ zxa}l)<-u{Ix46z{O#I`_z$Jx|CAk+=9(^ZKV4vq6Lu=cVz&nR{Kd~f+L`iQSQ)f1~ zd}7wRcur^ka?7cS;lYsmEksmk2=dFwisXEs}O4~LS%?^C|J zeR}Z=X~) ze1Y{{5`lC6c(M7>-d<|o^QThIGz?s4Za5hHmO92#dxF+&WLzNp5(atxO?a`@v&{{3 zz75~2y$3@~xtG6ONM^}RTRX*jhVw09BXcp^5OQ)Qn-@NVvE39;y%_KRW%ZEbn<$Obu**rsU?d6%*CIGwg&}oO!2wS2BQ$+zM3q$d_L;gCq|3iF}9} z#Y7ETZ;QeN7c7_-J69mUCo@@_F68-DTzdGE3{W{ze;iz~oH=-$F0zI(Nd(%tRe zyBFiJm$7FUnitO~Xe%J$SKH@deYkW~8^VPOjtz*bnb~OPwh;_yTYW_J?nH)Ug^6R9 z%~Qx1=qiGIfv3cOe}U!_FwqIjbL|b4^7;VVXya*kv9IyIg%V1R?+Lt*tkvw=Jl9~}*vSj5V-)u?$o}Xd?@rP-TTjx?8-o+N;?v0| z0x$gncQnkHCI5ZWr$Th<~KVC6xJS z_455u=xjm4nt_?o<>01fpVPtrPTvgLXkVTA&Bc3T({It|upw{6u=9Wuub0{r#V{Ck zUjr!;kYLgjFWhy(e|#q(CwI%;-S@NPKk-dP^{3CFB>*mXD}H!}G`4S*nhHv?tC>60 zjEU85$->1>aHUEC{fE_)cDc}uwpP*HFQxCXN;<-m&V?e!(BipqxkV94+zQR%6{l5( z!qV{}kNzR*6~hml#+XI`V{@k*svqSh2QHQ?L<`Xq<)EYivpk(*si48G0}_`Qsvjlw zW_x_=_G!+XLp>Q>ZJ0(Yu>2mEfEYJyiYW3bufVc3GUZPzal=+Syr{*-U|`J2eOsBz zD|s&mGV;X!IQx$Vi!FOwieSZ`^OiVbtOtQPwp2Y8miv)j>m`acl{3~J(&K+Mrr+zu z)y*hl^Fwi#EFl$hMlyL)D2NuW0B*6)gJ2{gb56@Do5+|~(bkBHu=_bz2YwZ{ zZjr(w6|Y=wn_gdGgGE7u^JH+2$26i3wk?%Kdu>qMA5s3-PKiE8ad>%Fd`n{?)51Ab z+b^!pR@QsHGpDgT{yH{%gWsjh2Uixk@^6bd{e@@nbI^hoJNHB{pT!5#VuJCR0B9|s|{PJJ`xdx$?X=v)?pGxz4#N6dLEV6>8yH)|c>szkc0Xj5X{u>}jjo!or z`_t_e>dhF^7ad#PPO0XNZ=0yJ`(x2+?EU^SeRh}`f~zj9tsSBENFpdZaTVya7&$-0 zh)PVO@S{0oGY6yR>As1dud>E`H!qXROm@#>)_kx!vP~`J#T38U1f<@V;ro&SS7F`T5J>;w%UC5(;&ZVFtlJHeW!gr$^cBof+!$ZK zC0cqriu2l_H=rIvP>Yk%7I5%OHJ=zhB0DpIMu-lz!(f9Tx1yrlE+ zAP@KaA#k`pG&&XHJ!G@>M`x1nfx*1g;%Q&FB4p|Y^6_^_ zW`LcqF0?n7+UKzzRv1PMHkj(`7Y`US#ao6{r7Wy7kiRJ8`4Q#e^2={ROx{0zPFm0X z;@eE*l8AdSF*F)9hn1#PL~f;%zApF_nt)sH#|>18{IDPyJnAy(khL?FVI1DZOR_d| z6};*%7L3M2B2BilYQ<~TBYlFsTt#eL3PrT=6Po%WbPyjaB~v!hkcU7?Xp?NZ$W+YS z6@jM$+{WTa7FCmV%y-gREdx_y-=L4-xMj@a`D>yRVz+dFdp^%DX1lK+r$l7Q>yKL! z$g;FdZz#(#E6V_}TfHoD$f^`EP4gy4wV_+SN$+#B@vQM* z;E~&0Gf`%8${sfgC22ZnfhwQ08)_d?2)cn(CxL z&Y)gaByF-&cq9?^;RSK*si)YN>8r~tt}er0Q#w<5-?_Si4VeGV3G95)&5)D~;R^q$ z0-ils9;+b=c#9u(1wm3K`YmST@He(x>fW9+XxCS+@P{AT%~m1T5%Qe6WD#OG1W{Vn zVQNt#vX)C9BXz>EwZ-e?*f@#BoU}EwzF{yZUp6Vx#McS@P{^KWtE0VF+#1v}%l4HJ zQ~U^ZfUd09isLU!)%pKoI9u6+7@y=Shr(3J98+1jT5f6&_<+EI*jDo!epIYR%0DeXzksd;-# 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�HbU>U!f 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 R>eLeW(pJ}3%RF=<=x@pmd%6Gs diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/Dockerfile b/tools/inference_builder/builder/samples/nvclip/optimizer/Dockerfile deleted file mode 100644 index 30fd9fd1..00000000 --- a/tools/inference_builder/builder/samples/nvclip/optimizer/Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -FROM nvcr.io/nvidia/tritonserver:26.01-py3 - -WORKDIR /workspace/ - -# Environment variables -ENV PIP_NO_CACHE_DIR=off -ENV CUDA_MODULE_LOADING=LAZY -ENV PYTHONUNBUFFERED=1 - -RUN apt update -RUN apt-get install -y git -RUN pip install open_clip_torch==3.2.0 onnx==1.20.1 onnxscript==0.1.0 transformers==4.48.1 tokenizers>=0.21 -RUN pip install --no-cache-dir --extra-index-url https://pypi.ngc.nvidia.com polygraphy - -# Copy files into the container -COPY ./configs ./configs -COPY ./CLIP.png . -COPY ./export_to_onnx.py . -COPY ./optimize.sh . - -ENV MAX_BATCH_SIZE=64 -ENV INPUT_HEIGHT=224 -ENV INPUT_WIDTH=224 -ENV TEXT_LENGTH=77 - -# Make the script executable -RUN chmod +x /workspace/optimize.sh - - -# Set entrypoint to execute the installation script and then run optimize.sh -ENTRYPOINT ["/bin/bash", "-c", "/workspace/optimize.sh"] \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/configs/NVCLIP_224_700M_ViTH14.json b/tools/inference_builder/builder/samples/nvclip/optimizer/configs/NVCLIP_224_700M_ViTH14.json deleted file mode 100644 index b34a5219..00000000 --- a/tools/inference_builder/builder/samples/nvclip/optimizer/configs/NVCLIP_224_700M_ViTH14.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "embed_dim": 1024, - "init_logit_bias": -10, - "vision_cfg": { - "image_size": 224, - "layers": 32, - "width": 1280, - "head_width": 80, - "patch_size": 14, - "no_ln_pre": true, - "pool_type": "avg", - "final_ln_after_pool": true, - "pos_embed_type": "sin_cos_2d", - "patch_dropout": 0.0 - }, - "text_cfg": { - "context_length": 77, - "vocab_size": 32000, - "hf_tokenizer_name": "bert-base-uncased", - "tokenizer_kwargs": { - "strip_sep_token": true - }, - "width": 1024, - "heads": 16, - "layers": 24, - "pool_type": "last", - "no_causal_mask": true - } -} diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/export_to_onnx.py b/tools/inference_builder/builder/samples/nvclip/optimizer/export_to_onnx.py deleted file mode 100644 index 17a6d25a..00000000 --- a/tools/inference_builder/builder/samples/nvclip/optimizer/export_to_onnx.py +++ /dev/null @@ -1,81 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -from pathlib import Path - -import open_clip -import torch -from PIL import Image -import os - -# Register the model config -open_clip.add_model_config("configs") - -MODEL = os.environ.get("MODEL_NAME", "NVCLIP_224_700M_ViTH14") -model, _, preprocess = open_clip.create_model_and_transforms( - MODEL, - pretrained=f"/workspace/checkpoints/baseline/{os.environ.get("CHECKPOINT_NAME")}", -) -tokenizer = open_clip.get_tokenizer(MODEL) - -text = tokenizer(["a diagram", "a dog", "a cat"]) -image = preprocess(Image.open("CLIP.png")).unsqueeze(0) - -# Export to onnx -npx = 224 -dummy_image = torch.randn(10, 3, npx, npx) -model.forward(dummy_image,text) # Original CLIP result (1) - -# Vision model -torch.onnx.export(model, (dummy_image, None), - f"/workspace/checkpoints/baseline/nvclip_clipa_vit_h14_700M_vision.onnx", - export_params=True, - input_names=["IMAGE"], - output_names=["LOGITS_PER_IMAGE"], - opset_version=19, - dynamic_axes={ - "IMAGE": { - 0: "image_batch_size", - }, - "LOGITS_PER_IMAGE": { - 0: "image_batch_size", - 1: "text_batch_size", - }, - }, - verbose=True, - dynamo=False -) - - -# Text model -torch.onnx.export(model, (None, text), - f"/workspace/checkpoints/baseline/nvclip_clipa_vit_h14_700M_text.onnx", - export_params=True, - input_names=["TEXT"], - output_names=["LOGITS_PER_TEXT"], - opset_version=19, - dynamic_axes={ - "TEXT": { - 0: "text_batch_size", - }, - "LOGITS_PER_TEXT": { - 0: "text_batch_size", - 1: "image_batch_size", - }, - }, - verbose=True, - dynamo=False -) diff --git a/tools/inference_builder/builder/samples/nvclip/optimizer/optimize.sh b/tools/inference_builder/builder/samples/nvclip/optimizer/optimize.sh deleted file mode 100644 index f036f49f..00000000 --- a/tools/inference_builder/builder/samples/nvclip/optimizer/optimize.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash - -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -set -xe - -python3 export_to_onnx.py - -mkdir -p /workspace/checkpoints/optimized/nvclip_clipa_vit_h14_700M_vision -/usr/src/tensorrt/bin/trtexec --onnx=/workspace/checkpoints/baseline/nvclip_clipa_vit_h14_700M_vision.onnx --saveEngine=/workspace/checkpoints/optimized/nvclip_clipa_vit_h14_700M_vision/model.plan --optShapes=IMAGE:${MAX_BATCH_SIZE}x3x${INPUT_HEIGHT}x${INPUT_WIDTH} \ - --minShapes=IMAGE:1x3x${INPUT_HEIGHT}x${INPUT_WIDTH} --maxShapes=IMAGE:${MAX_BATCH_SIZE}x3x${INPUT_HEIGHT}x${INPUT_WIDTH} --fp16 - -mkdir -p /workspace/checkpoints/optimized/nvclip_clipa_vit_h14_700M_text -/usr/src/tensorrt/bin/trtexec --onnx=/workspace/checkpoints/baseline/nvclip_clipa_vit_h14_700M_text.onnx --saveEngine=/workspace/checkpoints/optimized/nvclip_clipa_vit_h14_700M_text/model.plan --optShapes=TEXT:${MAX_BATCH_SIZE}x${TEXT_LENGTH} \ - --minShapes=TEXT:1x${TEXT_LENGTH} --maxShapes=TEXT:${MAX_BATCH_SIZE}x${TEXT_LENGTH} --fp16 - - diff --git a/tools/inference_builder/builder/samples/nvclip/processors.py b/tools/inference_builder/builder/samples/nvclip/processors.py deleted file mode 100644 index ab1deca8..00000000 --- a/tools/inference_builder/builder/samples/nvclip/processors.py +++ /dev/null @@ -1,69 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import numpy as np -import io -from PIL import Image -from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize, InterpolationMode - -class OpenclipTokenizer: - name = "openclip-tokenizer" - def __init__(self, config): - import open_clip - open_clip.add_model_config(config["model_home"]) - self._tokenizer = open_clip.get_tokenizer("NVCLIP_224_700M_ViTH14") - - def __call__(self, *args): - return self._tokenizer(args[0]) - -class VisionPreprocessor: - name = "nvclip-vision-preprocessor" - def __init__(self, config): - self._transform = Compose( - [ - Resize((224, 224), interpolation=InterpolationMode.BICUBIC), - CenterCrop(224), - lambda image: image.convert('RGB'), - ToTensor(), - Normalize( - (0.48145466, 0.4578275, 0.40821073), - (0.26862954, 0.26130258, 0.27577711), - ), - ] - ) - - def __call__(self, *args): - return self._transform(Image.open(io.BytesIO(args[0]))) - -class NvClipPostProcessor: - name = "nvclip-postprocessor" - def __init__(self, config): - self._config = config - - def __call__(self, *args): - text = args[0].tolist() - images = args[1].tolist() - indices = args[2].tolist() - total_tokens = sum(len(s) for s in text) - num_images = len(images) - embeddings = [] - for index in indices: - if index == "text": - embeddings.append(text.pop(0)) - elif index == "image": - embeddings.append(images.pop(0)) - return np.array(embeddings), np.array(total_tokens), np.array(num_images) - - diff --git a/tools/inference_builder/builder/samples/nvclip/tensorrt_nvclip.yaml b/tools/inference_builder/builder/samples/nvclip/tensorrt_nvclip.yaml deleted file mode 100644 index 8c7463ca..00000000 --- a/tools/inference_builder/builder/samples/nvclip/tensorrt_nvclip.yaml +++ /dev/null @@ -1,135 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: nvclip -model_repo: /workspace/model-repo/ - -# top level inference input specification -input: - - name: "text" - data_type: TYPE_STRING - dims: [ -1 ] - optional: true - - name: "image" - data_type: TYPE_CUSTOM_BINARY_BASE64 - dims: [ -1 ] - optional: true - - name: "indices" - data_type: TYPE_STRING - dims: [ -1 ] - optional: true - -# top level inference output specification -output: - - name: "embeddings" - data_type: TYPE_FP32 - dims: [-1, -1] - - name: "total_tokens" - data_type: TYPE_INT32 - dims: [ 1 ] - - name: "num_images" - data_type: TYPE_INT32 - dims: [ 1 ] - -server: - responders: - infer: - operation: create_embedding - requests: - # root template for generating input json from the request - EmbeddingsRequest: > - { - "text": [ - {% set text_items = request.input | reject('startswith', 'data:image') | list %} - {% for item in text_items %} - {{ item|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ], - "image": [ - {% set image_items = request.input | select('startswith', 'data:image') | map('replace', 'data:image\/[a-zA-Z0-9.+-]+;base64,', '') | list %} - {% for item in image_items %} - {{ item|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ], - "indices": [ - {% for item in request.input %} - "{{ 'image' if item.startswith('data:image') else 'text' }}"{% if not loop.last %}, {% endif %} - {% endfor %} - ] - } - responses: - EmbeddingsResponse: > - { - "data": [{% for item in response.embeddings %} {"index": {{ loop.index }}, "embedding": {{ item|tojson }}, "object": "embedding"}{% if not loop.last %}, {% endif %}{% endfor %}], - "usage": { "num_images": {{ response.num_images }}, "prompt_tokens": {{ response.total_tokens }}, "total_tokens": {{ response.total_tokens }}}, - "model": "nvidia/nvclip-vit-h-14", - "object": "list" - } - -# list of model specifications for inference -models: - - name: nvclip_clipa_vit_h14_700M_text - backend: "polygraphy" - max_batch_size: 64 - input: - - name: "TEXT" - data_type: TYPE_INT64 - dims: [-1, -1] - output: - - name: "LOGITS_PER_TEXT" - data_type: TYPE_FP32 - dims: [-1, -1] - parameters: - tensorrt_engine: "model.plan" - preprocessors: - - kind: "custom" - name: "openclip-tokenizer" - input: ["text"] - output: ["TEXT"] - - name: nvclip_clipa_vit_h14_700M_vision - backend: "polygraphy" - max_batch_size: 64 - input: - - name: "IMAGE" - data_type: TYPE_FP32 - dims: [-1, 3, -1, -1] - output: - - name: "LOGITS_PER_IMAGE" - data_type: TYPE_FP32 - dims: [-1, -1] - parameters: - tensorrt_engine: "model.plan" - preprocessors: - - kind: "custom" - name: "nvclip-vision-preprocessor" - input: ["image"] - output: ["IMAGE"] -postprocessors: - - kind: "custom" - name: "nvclip-postprocessor" - input: ["LOGITS_PER_TEXT", "LOGITS_PER_IMAGE", "indices"] - output: ["embeddings", "total_tokens", "num_images"] -# route map -# A route is defined as -# Source and destination should be defined as -# Model name is optional, so <:["TENSOR_NAME1", "TENSOR_NAME2", ...]> is valid -# Tensor list is optional too and is valid -routes: { - ':["text"]': 'nvclip_clipa_vit_h14_700M_text', - ':["image"]': 'nvclip_clipa_vit_h14_700M_vision', - ':["indices"]': ':', - 'nvclip_clipa_vit_h14_700M_text:["LOGITS_PER_TEXT"]': ':', - 'nvclip_clipa_vit_h14_700M_vision:["LOGITS_PER_IMAGE"]': ':' -} diff --git a/tools/inference_builder/builder/samples/nvclip/test_client.sh b/tools/inference_builder/builder/samples/nvclip/test_client.sh deleted file mode 100644 index 638afcee..00000000 --- a/tools/inference_builder/builder/samples/nvclip/test_client.sh +++ /dev/null @@ -1,32 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -image=$1 -image_b64=$( base64 $image ) - -url="http://localhost:8800/v1/embeddings" -echo '{ - "input": ["Image of a dog", - "data:image/png;base64,'${image_b64}'" - ], - "model": "nvidia/nvclip-vit-h-14", - "encoding_format": "float" - }' > payload.json - -curl -N -X POST $url \ - -H "Content-Type: application/json" \ - -H "$accept_header" \ - -d @payload.json - diff --git a/tools/inference_builder/builder/samples/qwen/Dockerfile b/tools/inference_builder/builder/samples/qwen/Dockerfile deleted file mode 100644 index 22c0d8ef..00000000 --- a/tools/inference_builder/builder/samples/qwen/Dockerfile +++ /dev/null @@ -1,83 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Sample Dockerfile for a Qwen multimodal pipeline using a TensorRT-LLM -# release image combined with DeepStream components for video input and -# hardware-accelerated decoding. -# -# Stage 1: pull in DeepStream libraries, binaries, and sample assets. -FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS ds_stage - -FROM nvcr.io/nvidia/tensorrt-llm/release:1.1.0 AS inference_base - -ENV NVIDIA_DRIVER_CAPABILITIES $NVIDIA_DRIVER_CAPABILITIES,video - -# Install GStreamer plugins and DeepStream runtime dependencies needed -# for hardware-accelerated decoding and RTSP support. -RUN apt update && apt install -y --no-install-recommends gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ - libyaml-cpp-dev libgstrtspserver-1.0-0 libjsoncpp25 libgles2 pkg-config - -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/lib /opt/nvidia/deepstream/deepstream-9.0/lib -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/bin /opt/nvidia/deepstream/deepstream-9.0/bin -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.sh /opt/nvidia/deepstream/deepstream-9.0/ -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.txt /opt/nvidia/deepstream/deepstream-9.0/ -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/README* /opt/nvidia/deepstream/deepstream-9.0/ -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.pdf /opt/nvidia/deepstream/deepstream-9.0/ -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/service-maker /opt/nvidia/deepstream/deepstream-9.0/service-maker -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/samples/streams/* /opt/nvidia/deepstream/deepstream-9.0/samples/streams/ - -RUN /opt/nvidia/deepstream/deepstream-9.0/install.sh -RUN ln -sf deepstream-9.0 /opt/nvidia/deepstream/deepstream || true - -# Install Python dependencies required by THIS Qwen sample. These -# versions are pinned for reproducibility and can be adjusted for -# other pipelines or environments. -RUN --mount=type=cache,target=/root/.cache/pip pip install qwen-vl-utils[decord]==0.0.8 \ - python-multipart==0.0.9 \ - aiofiles==23.2.1 \ - aiohttp==3.11.0 \ - annotated-types==0.7.0 \ - python-magic==0.4.27 \ - numpy==1.26.4 \ - omegaconf==2.3.0 - -WORKDIR /workspace - -# Copy the inference flow package generated by Inference Builder. -# This tarball (here: qwen.tgz) is typically produced when running the -# builder with tarball output enabled, and its name should match the -# generated pipeline artifact you want to deploy. -ADD qwen.tgz /workspace - -## Set Environment variables required for DeepStream+TensorRT-LLM runtime. -ENV LD_LIBRARY_PATH /opt/tritonserver/lib:/opt/nvidia/deepstream/deepstream/lib:/usr/local/tensorrt/lib/:/opt/tritonserver/backends/tensorrtllm:$LD_LIBRARY_PATH -ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes -ENV HF_HOME=/tmp - -# Create the entrypoint script that runs the Inference Builder-generated -# /workspace/__main__.py for this Qwen pipeline. -RUN touch /workspace/start_server.sh && \ - chmod a+rx /workspace/start_server.sh && \ - cat > /workspace/start_server.sh <<-EOF - #!/usr/bin/env bash - set -eu - # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. - # SPDX-License-Identifier: LicenseRef-NvidiaProprietary - python3 /workspace/__main__.py -# while true; do sleep 5; done -EOF - -ENTRYPOINT ["/workspace/start_server.sh"] -CMD [] diff --git a/tools/inference_builder/builder/samples/qwen/README.md b/tools/inference_builder/builder/samples/qwen/README.md deleted file mode 100644 index 58875de4..00000000 --- a/tools/inference_builder/builder/samples/qwen/README.md +++ /dev/null @@ -1,129 +0,0 @@ -## Introduction - -This example demonstrates how to build an inference pipeline and for the Qwen family of VLM models using the Inference Builder tool. Following models have been tested: -- Qwen/Qwen2.5-VL-3B-Instruct -- Qwen/Qwen2.5-VL-7B-Instruct -- Qwen/Qwen2.5-VL-32B-Instruct - -Three configurations are provided, allowing you to choose based on your specific software and hardware environment: - -1. pytorch_qwen.yaml: leveraging the transformer APIs and fits all the models -2. trtllm_qwen.yaml: leveraging TensorRT LLM APIs for better performance -3. trtllm_nvdec_qwen.yaml: leveraging h/w decoder and TensorRT LLM for the best performance - -We provide a sample Dockerfile for the example, which you can use to build a Docker image and test the microservice on any x86 system. - -**⚠️ System Requirements:** This model requires significant GPU resources and is optimized for high-performance systems. We recommend testing on H100 or B200 GPUs for optimal performance. Docker build may fail on less powerful hardware. - -## Prerequisites - -**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. - -Before downloading the model file, you need to set up your model repository: - -```bash -mkdir -p ~/.cache/model-repo && chmod 777 ~/.cache/model-repo -export MODEL_REPO=~/.cache/model-repo -``` - -The model checkpoints can be downloaded from huggingface. First, install git-lfs for large model files: - -```bash -sudo apt install git-lfs -git lfs install -``` - -Then download the model: - -```bash -git clone https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct $MODEL_REPO/Qwen2.5-VL -``` - -Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment and be sure you're in the inference_builder folder, then activate your virtual environment: - -```bash -source .venv/bin/activate -``` - -## Build and Test the Qwen2.5-VL-7B-Instruct Inference Microservice - -### Generate the Inference Pipeline - -For Pytorch backend with transformers API, use the command below: - -```bash -python builder/main.py builder/samples/qwen/pytorch_qwen.yaml --api-spec builder/samples/qwen/openapi.yaml \ --o builder/samples/qwen/ -c builder/samples/qwen/processors.py -t -``` - -For TensorRT-LLM backend with S/W decoder, use the command below: - -```bash -python builder/main.py builder/samples/qwen/trtllm_qwen.yaml --api-spec builder/samples/qwen/openapi.yaml \ --o builder/samples/qwen/ -c builder/samples/qwen/processors.py -t -``` - -If you want to acheive the best performance with Deepstream and TensoRT-LLM, please use following command: - -```bash -# Enable hardware decoder -python builder/main.py builder/samples/qwen/trtllm_nvdec_qwen.yaml --api-spec builder/samples/qwen/openapi.yaml \ --o builder/samples/qwen/ -c builder/samples/qwen/processors.py -t -``` - -### Build and Start the Inference Microservice: - -```bash -cd builder/samples && docker compose up ms-qwen --build -``` - -The build may take a while—images are pulled from NGC and speed depends on your network. ⌛ - -### Test the Inference Microservice with a client - -Wait for the server to start, then open a new terminal in your inference_builder folder. The sample includes a test OpenAI client. For image input, run the client with the path to an image file. - - -```bash -source .venv/bin/activate && cd builder/samples/qwen -python client.py --images # replace placeholder with an actual file -``` - -For video input, you need to first upload a test video file. - -**⚠️ Important:** **replace the placeholder in below command with an actual file path in your system**. - -```bash -export VIDEO_FILE= -curl -X "POST" \ - "http://localhost:8800/v1/files" \ - -H "accept: application/json" \ - -H "Content-Type: multipart/form-data" \ - -F "file=@$VIDEO_FILE;type=video/mp4" -``` - -You'll get a response 200 with a json body which includes the id and path of the uploaded asset like below: - -{ - "data": { - "id": "577a9f11-2b24-4db8-82c8-2601e0c2b6e4", - "path": "/tmp/assets/577a9f11-2b24-4db8-82c8-2601e0c2b6e4/its_1920_30s.mp4", - "size": 3472221, - "duration": 30000000000, - "contentType": "video/mp4" - } -} - -Run the client.py with the video path from your response if the inference pipeline is built from trtllm_qwen.yaml or pytorch_qwen.yaml without H/W decoder: - -```bash -# Please use the path from your file upload response -python client.py --videos /tmp/assets/577a9f11-2b24-4db8-82c8-2601e0c2b6e4/its_1920_30s.mp4 -``` - -OR run the client.py with the returned asset id if the inference pipeline is built from trtllm_nvdec_qwen.yaml with H/W decoder enabled: - -```bash -# Please replace 577a9f11-2b24-4db8-82c8-2601e0c2b6e4 with the id returned from your file upload response -python client.py --videos 577a9f11-2b24-4db8-82c8-2601e0c2b6e4?frames=8 -``` \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/qwen/client.py b/tools/inference_builder/builder/samples/qwen/client.py deleted file mode 100644 index 4c0a780b..00000000 --- a/tools/inference_builder/builder/samples/qwen/client.py +++ /dev/null @@ -1,137 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import time -import argparse -from openai import OpenAI -import base64 -import mimetypes -from concurrent.futures import ThreadPoolExecutor, as_completed -from urllib.parse import urlparse, parse_qs - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument("--images", type=str, help="Image paths to send for inference", default=None, nargs="*") - parser.add_argument("--videos", type=str, help="Video paths to send for inference", default=None, nargs="*") - parser.add_argument("--endpoint", type=str, help="Endpoint to send for inference", default="http://0.0.0.0:8800/v1", nargs="?") - parser.add_argument("-p", "--parallel", type=int, help="Number of parallel requests to send", default=1) - args = parser.parse_args() - - messages = [] - if args.images: - for image in args.images: - with open(image, "rb") as f: - data = base64.b64encode(f.read()).decode() - mime_type = mimetypes.guess_type(image)[0] - messages.append({ - "role": "user", - "content": [ - { - "type": "text", - "text": "Please describe the image in detail." - }, - { - "type": "image", - "image": f"data:{mime_type};base64,{data}" - } - ] - }) - elif args.videos: - for video in args.videos: - # Parse video path to check for ?nframes=x query parameter - # Only extract nframes if video starts with "/" (local file path) - if video.startswith('/') and '?' in video: - video_path, query_string = video.split('?', 1) - query_params = parse_qs(query_string) - - video_content = { - "type": "video", - "video": video_path - } - - # Add nframes parameter if present - if 'nframes' in query_params: - try: - nframes_value = int(query_params['nframes'][0]) - video_content["nframes"] = nframes_value - except (ValueError, IndexError): - pass # Ignore invalid nframes values - else: - video_content = { - "type": "video", - "video": video - } - - messages.append({ - "role": "user", - "content": [ - { - "type": "text", - "text": "Please describe the video in detail." - }, - video_content - ] - }) - else: - raise ValueError("No images or videos provided") - - client = OpenAI(base_url=args.endpoint, api_key="not-used") - - def make_request(request_id): - """Make a single request to the API""" - start_time = time.time() - chat_response = client.chat.completions.create( - model="nvidia/cosmos", - messages=messages, - max_tokens=512, - stream=False - ) - infer_time = time.time() - start_time - return request_id, infer_time, chat_response.choices[0].message - - # Send requests in parallel - overall_start_time = time.time() - if args.parallel == 1: - # Single request mode - request_id, infer_time, assistant_message = make_request(0) - print(f"Inference time: {infer_time:.4f} seconds") - print(assistant_message) - else: - # Parallel requests mode - with ThreadPoolExecutor(max_workers=args.parallel) as executor: - futures = [executor.submit(make_request, i) for i in range(args.parallel)] - - results = [] - for future in as_completed(futures): - request_id, infer_time, assistant_message = future.result() - results.append((request_id, infer_time, assistant_message)) - print(f"Request {request_id} completed in {infer_time:.4f} seconds") - - # Sort results by request_id for consistent output - results.sort(key=lambda x: x[0]) - - overall_time = time.time() - overall_start_time - avg_time = sum(r[1] for r in results) / len(results) - print(f"\n--- Summary ---") - print(f"Total requests: {args.parallel}") - print(f"Overall time: {overall_time:.4f} seconds") - print(f"Average inference time: {avg_time:.4f} seconds") - print(f"Throughput: {args.parallel / overall_time:.2f} requests/second") - - # Print all responses - print(f"\n--- Responses ---") - for req_id, _, assistant_message in results: - print(f"\nResponse (Request {req_id}):") - print(assistant_message) diff --git a/tools/inference_builder/builder/samples/qwen/openapi.yaml b/tools/inference_builder/builder/samples/qwen/openapi.yaml deleted file mode 100644 index 8f444d5f..00000000 --- a/tools/inference_builder/builder/samples/qwen/openapi.yaml +++ /dev/null @@ -1,1367 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -openapi: 3.1.0 -info: - title: NVIDIA NIM for VLMs - summary: Accelerated VLM inference for NVIDIA GPUs. - version: 1.1.2 -paths: - /v1/health/ready: - get: - tags: - - Health - summary: Health Ready - description: Provide your implementation of readiness to know when container ready to accept traffic - operationId: health_ready_v1_health_ready_get - responses: - '200': - description: Successful Response - content: - application/json: - schema: {} - /v1/chat/completions: - post: - summary: OpenAI-compatible chat endpoint - operationId: create_chat_completion_v1_chat_completions_post - parameters: - - name: content-type - in: header - required: false - schema: - anyOf: - - type: string - - type: 'null' - title: Content-Type - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NIMLLMChatCompletionRequest' - responses: - '200': - description: Successful Response - content: - application/json: - schema: - anyOf: - - $ref: '#/components/schemas/NIMLLMChatCompletionResponse' - - $ref: '#/components/schemas/NIMLLMChatCompletionStreamResponse' - title: Response Create Chat Completion V1 Chat Completions Post - '400': - description: Received an invalid request possibly containing unsupported - or out-of-range parameter values. - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - '404': - description: The requested model does not exist. - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - '500': - description: Internal Server Error - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - '415': - description: Unsupported Media Type - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - '422': - description: Validation Error - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPValidationError' - /v1/files: - post: - tags: - - Files - summary: Upload a media file that can be used as inference input. - description: Upload media files to be used as inference input. Currently, only images upto 50 MB are supported. - operationId: add_media_file - requestBody: - required: true - content: - multipart/form-data: - schema: - $ref: '#/components/schemas/AddFileRequest' - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/AddFileResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - get: - tags: - - Files - summary: Returns a list of the uploaded files. - description: Returns a list that includes ID, file name, size, purpose, file size, and media type for the uploaded files. - operationId: list_media_files - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/ListFilesResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - /v1/files/{file_id}: - delete: - tags: - - Files - summary: Delete a uploaded file. - description: Deletes an uploaded file based on ID. - operationId: delete_media_file - parameters: - - name: file_id - in: path - required: true - schema: - type: string - maxLength: 36 - pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' - description: File having 'file_id' to be deleted. - title: File Id - description: File having 'file_id' to be deleted. - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteFileResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' -components: - schemas: - BaseModel: - properties: {} - type: object - title: BaseModel - ChatCompletionLogProb: - properties: - token: - type: string - title: Token - logprob: - type: number - title: Logprob - default: -9999.0 - bytes: - anyOf: - - items: - type: integer - type: array - - type: 'null' - title: Bytes - additionalProperties: false - type: object - required: - - token - title: ChatCompletionLogProb - ChatCompletionLogProbs: - properties: - content: - anyOf: - - items: - $ref: '#/components/schemas/ChatCompletionLogProbsContent' - type: array - - type: 'null' - title: Content - additionalProperties: false - type: object - title: ChatCompletionLogProbs - ChatCompletionLogProbsContent: - properties: - token: - type: string - title: Token - logprob: - type: number - title: Logprob - default: -9999.0 - bytes: - anyOf: - - items: - type: integer - type: array - - type: 'null' - title: Bytes - top_logprobs: - items: - $ref: '#/components/schemas/ChatCompletionLogProb' - type: array - title: Top Logprobs - additionalProperties: false - type: object - required: - - token - title: ChatCompletionLogProbsContent - ChatCompletionNamedFunction: - properties: - name: - type: string - title: Name - additionalProperties: false - type: object - required: - - name - title: ChatCompletionNamedFunction - ChatCompletionNamedToolChoiceParam: - properties: - function: - $ref: '#/components/schemas/ChatCompletionNamedFunction' - type: - type: string - const: function - title: Type - default: function - additionalProperties: false - type: object - required: - - function - title: ChatCompletionNamedToolChoiceParam - ChatCompletionResponseChoice: - properties: - index: - type: integer - title: Index - message: - $ref: '#/components/schemas/ChatMessage' - logprobs: - anyOf: - - $ref: '#/components/schemas/ChatCompletionLogProbs' - - type: 'null' - finish_reason: - anyOf: - - type: string - enum: - - stop - - length - - tool_calls - - type: 'null' - title: Finish Reason - default: stop - stop_reason: - anyOf: - - type: integer - - type: string - - type: 'null' - title: Stop Reason - additionalProperties: false - type: object - required: - - index - - message - title: ChatCompletionResponseChoice - ChatCompletionResponseStreamChoice: - properties: - index: - type: integer - title: Index - delta: - $ref: '#/components/schemas/DeltaMessage' - logprobs: - anyOf: - - $ref: '#/components/schemas/ChatCompletionLogProbs' - - type: 'null' - finish_reason: - anyOf: - - type: string - enum: - - stop - - length - - tool_calls - - type: 'null' - title: Finish Reason - stop_reason: - anyOf: - - type: integer - - type: string - - type: 'null' - title: Stop Reason - additionalProperties: false - type: object - required: - - index - - delta - title: ChatCompletionResponseStreamChoice - ChatCompletionToolsParam: - properties: - type: - type: string - const: function - title: Type - default: function - function: - $ref: '#/components/schemas/FunctionDefinition' - additionalProperties: false - type: object - required: - - function - title: ChatCompletionToolsParam - ChatMessage: - properties: - role: - type: string - title: Role - content: - anyOf: - - type: string - - type: 'null' - title: Content - tool_calls: - anyOf: - - items: - $ref: '#/components/schemas/ToolCall' - type: array - - type: 'null' - title: Tool Calls - additionalProperties: false - type: object - required: - - role - title: ChatMessage - DeltaMessage: - properties: - role: - anyOf: - - type: string - - type: 'null' - title: Role - content: - anyOf: - - type: string - - type: 'null' - title: Content - tool_calls: - anyOf: - - items: - $ref: '#/components/schemas/ToolCall' - type: array - - type: 'null' - title: Tool Calls - additionalProperties: false - type: object - title: DeltaMessage - ErrorResponse: - properties: - object: - type: string - title: Object - default: error - message: - type: string - title: Message - type: - type: string - title: Type - param: - anyOf: - - type: string - - type: 'null' - title: Param - code: - type: integer - title: Code - additionalProperties: false - type: object - required: - - message - - type - - code - title: ErrorResponse - FunctionCall: - properties: - name: - anyOf: - - type: string - - type: 'null' - title: Name - default: '' - arguments: - anyOf: - - type: string - - type: 'null' - title: Arguments - default: '' - additionalProperties: false - type: object - title: FunctionCall - FunctionDefinition: - properties: - name: - type: string - title: Name - description: - anyOf: - - type: string - - type: 'null' - title: Description - parameters: - anyOf: - - type: object - - type: 'null' - title: Parameters - additionalProperties: false - type: object - required: - - name - title: FunctionDefinition - HTTPValidationError: - properties: - detail: - items: - $ref: '#/components/schemas/ValidationError' - type: array - title: Detail - type: object - title: HTTPValidationError - ImageURL: - properties: - url: - type: string - title: Url - type: object - required: - - url - title: ImageURL - Logprob: - properties: - logprob: - type: number - title: Logprob - rank: - anyOf: - - type: integer - - type: 'null' - title: Rank - decoded_token: - anyOf: - - type: string - - type: 'null' - title: Decoded Token - type: object - required: - - logprob - title: Logprob - NIMLLMChatCompletionMessage: - properties: - role: - $ref: '#/components/schemas/Role' - description: The role of the message's author. - content: - anyOf: - - type: string - minLength: 1 - - items: - anyOf: - - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartImage' - - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartText' - - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartVideo' - - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartVideoStreaming' - type: array - title: Content - description: "The contents of the message.\n
To pass images (only\ - \ with role=`user`):\n
- When content is a string, image\ - \ can be passed together with the text with `img` HTML tags that wraps\n\ - \ an image URL (``),\n base64 encoded\ - \ image data (``),\n or an NVCF asset ID (``)\n when the container is hosted in NVCF and the payload exceeds\ - \ 200KB.\n or http link (`https:{image_link}`)\n
\ - \ - When content is a list of objects, images can be passed as objects\ - \ with type=`image_url`.\n
- In both cases, images can\ - \ be PNG, JPG or JPEG.\n
To pass videos (only with role=`user`):\n\ - \
- When content is a string, video can be passed together\ - \ with the text with `video` HTML tags that wraps\n a video URL\ - \ (`
&0n`apqhR)V<5#YOppV;UCdi{4g^bNwDo@ve>* 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 &@l+u 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

d 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≧tKm4Y;&`R|-SS&5rI80d2+*v>b&2j+7n~S1f<+n`}Ryyb5YZ zcpMZyh5VU8!TZKwYySYQOIH8NuY^Ju;e=C@^98{_O<<3eNukesQtdN9z|&Yr0)xSbCX7ol(^I31*$ODh#6N zr>u-Q8dfnLdq--*T=uDG$GIyYLRawdEG*&hUo6A=d3(Xs^eUM-I13ZVa$>|6$~EIc zuI(GTe?#HXdx8*GJr?vt9S?}soKsO zCsUcS)cARSspV%sSS-w&Pd~e;NJw5q+&I|i`aV&ix@%)o>9&=&sgJ&(<87@Dr6YQ> zoZzSxXCYY%Ng(I0eL3+uw}+Ez2_;z<^!cnVTC=2A<=LzDWrc3r)9#9#_FoWV$4=Et zQO;d&IrgWFllpnd!0L;FaN-mW7f~!4{#_s%{xL3HIhds|8UFxVodj5QdZyNaY0Gw| zm(7JcRsNjBs9w<9Yr9HHM&(1JxrH6daFFD%QX7_AZKgrp-6EmNlKE&YSS$OTG^FgH$86Lj*zOBQK_girP!gv z-sf&(>kRdN#Ghbkl)KvMm}yQ+rLi*6uG4{bHP0Bh0C+Oy9N0zx3B!m`S`?h4ge6lF z(x#UOB3X{lrML8lbW`Q6)hR%LZZd9Lx0FKZt><=XrKfQ+v{WE6%}P{Ca#l_q7*Es$ zA!*2PZcCd<;4A^hxFO;+g;SYBA($HLKi{SzC1~B8u@Y*nKKh}wQZ}fa z+=U)E@z2kms*e#9r39?9(_%jMf6MH#+0@@ zs2K=D$^l@KHw+L!;N$Os)Oq3``jw$q2|8{>Y-qqzS1!c4$@Tehaw2JO3rf1((I$Z& z>S%__5~JK?v`$h`Qb|LJ$G33@BgZ`p#L+IIkjs26lkd&$-8E=wOD#*9Eo}Pp>l@SP ze^e}%y)e*el}NEe^@eD1D$R1H zU>*9LqN9M;NwcT(zXJ7qI7>W?0%IxZMe^kflpd3JylPvvNLO*Mzp*yy<#NM3YT+ z@cwFB!AWIv8$elL_)gGpd;{Fz5;8jJD5yyxpAVgkaxpbGoHpuYx74!W0=LS!hjr@^mPDig>Z(b;XZG?F~5fJe`c3D5j|M5K_(&BxF0C?<=Dttm5RAOUvVw$A+^ zX-d;8PP=&`*|=`jZCGF_>9t7>ytXOrWB~Hg!d9gxdVs<~B%U%)LDtNuk^q*1qmTfx z>9;qB6S%C@N)ytMr)CeJ%=2zn>lO_W()#|OY7DJ8x2k4TX4YO6S!FS)@u8(g)IkmeQ%0AP`;C$3t1>1DtM>U}w8$L$kb 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 AW&i*H diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00001362.json b/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00001362.json deleted file mode 100644 index 826e0ff7..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00001362.json +++ /dev/null @@ -1 +0,0 @@ -{"data": [{"index": 0, "shape": [224, 224], "bboxes": [[0, 0, 224, 224]], "probs": [0.0], "labels": [["n13054560"]], "masks": [], "objects": [], "timestamp": 29306093786}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00002167.json b/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00002167.json deleted file mode 100644 index 841e51ae..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/cls/expected.ILSVRC2012_val_00002167.json +++ /dev/null @@ -1 +0,0 @@ -{"data": [{"index": 0, "shape": [224, 224], "bboxes": [[0, 0, 224, 224]], "probs": [0.0], "labels": [["n13052670"]], "masks": [], "objects": [], "timestamp": 100464334485}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/labels.txt b/tools/inference_builder/builder/samples/tao/validation/cls/labels.txt deleted file mode 100644 index 8972f79f..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/cls/labels.txt +++ /dev/null @@ -1 +0,0 @@ -n01440764;n01443537;n01484850;n01491361;n01494475;n01496331;n01498041;n01514668;n01514859;n01518878;n01530575;n01531178;n01532829;n01534433;n01537544;n01558993;n01560419;n01580077;n01582220;n01592084;n01601694;n01608432;n01614925;n01616318;n01622779;n01629819;n01630670;n01631663;n01632458;n01632777;n01641577;n01644373;n01644900;n01664065;n01665541;n01667114;n01667778;n01669191;n01675722;n01677366;n01682714;n01685808;n01687978;n01688243;n01689811;n01692333;n01693334;n01694178;n01695060;n01697457;n01698640;n01704323;n01728572;n01728920;n01729322;n01729977;n01734418;n01735189;n01737021;n01739381;n01740131;n01742172;n01744401;n01748264;n01749939;n01751748;n01753488;n01755581;n01756291;n01768244;n01770081;n01770393;n01773157;n01773549;n01773797;n01774384;n01774750;n01775062;n01776313;n01784675;n01795545;n01796340;n01797886;n01798484;n01806143;n01806567;n01807496;n01817953;n01818515;n01819313;n01820546;n01824575;n01828970;n01829413;n01833805;n01843065;n01843383;n01847000;n01855032;n01855672;n01860187;n01871265;n01872401;n01873310;n01877812;n01882714;n01883070;n01910747;n01914609;n01917289;n01924916;n01930112;n01943899;n01944390;n01945685;n01950731;n01955084;n01968897;n01978287;n01978455;n01980166;n01981276;n01983481;n01984695;n01985128;n01986214;n01990800;n02002556;n02002724;n02006656;n02007558;n02009229;n02009912;n02011460;n02012849;n02013706;n02017213;n02018207;n02018795;n02025239;n02027492;n02028035;n02033041;n02037110;n02051845;n02056570;n02058221;n02066245;n02071294;n02074367;n02077923;n02085620;n02085782;n02085936;n02086079;n02086240;n02086646;n02086910;n02087046;n02087394;n02088094;n02088238;n02088364;n02088466;n02088632;n02089078;n02089867;n02089973;n02090379;n02090622;n02090721;n02091032;n02091134;n02091244;n02091467;n02091635;n02091831;n02092002;n02092339;n02093256;n02093428;n02093647;n02093754;n02093859;n02093991;n02094114;n02094258;n02094433;n02095314;n02095570;n02095889;n02096051;n02096177;n02096294;n02096437;n02096585;n02097047;n02097130;n02097209;n02097298;n02097474;n02097658;n02098105;n02098286;n02098413;n02099267;n02099429;n02099601;n02099712;n02099849;n02100236;n02100583;n02100735;n02100877;n02101006;n02101388;n02101556;n02102040;n02102177;n02102318;n02102480;n02102973;n02104029;n02104365;n02105056;n02105162;n02105251;n02105412;n02105505;n02105641;n02105855;n02106030;n02106166;n02106382;n02106550;n02106662;n02107142;n02107312;n02107574;n02107683;n02107908;n02108000;n02108089;n02108422;n02108551;n02108915;n02109047;n02109525;n02109961;n02110063;n02110185;n02110341;n02110627;n02110806;n02110958;n02111129;n02111277;n02111500;n02111889;n02112018;n02112137;n02112350;n02112706;n02113023;n02113186;n02113624;n02113712;n02113799;n02113978;n02114367;n02114548;n02114712;n02114855;n02115641;n02115913;n02116738;n02117135;n02119022;n02119789;n02120079;n02120505;n02123045;n02123159;n02123394;n02123597;n02124075;n02125311;n02127052;n02128385;n02128757;n02128925;n02129165;n02129604;n02130308;n02132136;n02133161;n02134084;n02134418;n02137549;n02138441;n02165105;n02165456;n02167151;n02168699;n02169497;n02172182;n02174001;n02177972;n02190166;n02206856;n02219486;n02226429;n02229544;n02231487;n02233338;n02236044;n02256656;n02259212;n02264363;n02268443;n02268853;n02276258;n02277742;n02279972;n02280649;n02281406;n02281787;n02317335;n02319095;n02321529;n02325366;n02326432;n02328150;n02342885;n02346627;n02356798;n02361337;n02363005;n02364673;n02389026;n02391049;n02395406;n02396427;n02397096;n02398521;n02403003;n02408429;n02410509;n02412080;n02415577;n02417914;n02422106;n02422699;n02423022;n02437312;n02437616;n02441942;n02442845;n02443114;n02443484;n02444819;n02445715;n02447366;n02454379;n02457408;n02480495;n02480855;n02481823;n02483362;n02483708;n02484975;n02486261;n02486410;n02487347;n02488291;n02488702;n02489166;n02490219;n02492035;n02492660;n02493509;n02493793;n02494079;n02497673;n02500267;n02504013;n02504458;n02509815;n02510455;n02514041;n02526121;n02536864;n02606052;n02607072;n02640242;n02641379;n02643566;n02655020;n02666196;n02667093;n02669723;n02672831;n02676566;n02687172;n02690373;n02692877;n02699494;n02701002;n02704792;n02708093;n02727426;n02730930;n02747177;n02749479;n02769748;n02776631;n02777292;n02782093;n02783161;n02786058;n02787622;n02788148;n02790996;n02791124;n02791270;n02793495;n02794156;n02795169;n02797295;n02799071;n02802426;n02804414;n02804610;n02807133;n02808304;n02808440;n02814533;n02814860;n02815834;n02817516;n02823428;n02823750;n02825657;n02834397;n02835271;n02837789;n02840245;n02841315;n02843684;n02859443;n02860847;n02865351;n02869837;n02870880;n02871525;n02877765;n02879718;n02883205;n02892201;n02892767;n02894605;n02895154;n02906734;n02909870;n02910353;n02916936;n02917067;n02927161;n02930766;n02939185;n02948072;n02950826;n02951358;n02951585;n02963159;n02965783;n02966193;n02966687;n02971356;n02974003;n02977058;n02978881;n02979186;n02980441;n02981792;n02988304;n02992211;n02992529;n02999410;n03000134;n03000247;n03000684;n03014705;n03016953;n03017168;n03018349;n03026506;n03028079;n03032252;n03041632;n03042490;n03045698;n03047690;n03062245;n03063599;n03063689;n03065424;n03075370;n03085013;n03089624;n03095699;n03100240;n03109150;n03110669;n03124043;n03124170;n03125729;n03126707;n03127747;n03127925;n03131574;n03133878;n03134739;n03141823;n03146219;n03160309;n03179701;n03180011;n03187595;n03188531;n03196217;n03197337;n03201208;n03207743;n03207941;n03208938;n03216828;n03218198;n03220513;n03223299;n03240683;n03249569;n03250847;n03255030;n03259280;n03271574;n03272010;n03272562;n03290653;n03291819;n03297495;n03314780;n03325584;n03337140;n03344393;n03345487;n03347037;n03355925;n03372029;n03376595;n03379051;n03384352;n03388043;n03388183;n03388549;n03393912;n03394916;n03400231;n03404251;n03417042;n03424325;n03425413;n03443371;n03444034;n03445777;n03445924;n03447447;n03447721;n03450230;n03452741;n03457902;n03459775;n03461385;n03467068;n03476684;n03476991;n03478589;n03481172;n03482405;n03483316;n03485407;n03485794;n03492542;n03494278;n03495258;n03496892;n03498962;n03527444;n03529860;n03530642;n03532672;n03534580;n03535780;n03538406;n03544143;n03584254;n03584829;n03590841;n03594734;n03594945;n03595614;n03598930;n03599486;n03602883;n03617480;n03623198;n03627232;n03630383;n03633091;n03637318;n03642806;n03649909;n03657121;n03658185;n03661043;n03662601;n03666591;n03670208;n03673027;n03676483;n03680355;n03690938;n03691459;n03692522;n03697007;n03706229;n03709823;n03710193;n03710637;n03710721;n03717622;n03720891;n03721384;n03724870;n03729826;n03733131;n03733281;n03733805;n03742115;n03743016;n03759954;n03761084;n03763968;n03764736;n03769881;n03770439;n03770679;n03773504;n03775071;n03775546;n03776460;n03777568;n03777754;n03781244;n03782006;n03785016;n03786901;n03787032;n03788195;n03788365;n03791053;n03792782;n03792972;n03793489;n03794056;n03796401;n03803284;n03804744;n03814639;n03814906;n03825788;n03832673;n03837869;n03838899;n03840681;n03841143;n03843555;n03854065;n03857828;n03866082;n03868242;n03868863;n03871628;n03873416;n03874293;n03874599;n03876231;n03877472;n03877845;n03884397;n03887697;n03888257;n03888605;n03891251;n03891332;n03895866;n03899768;n03902125;n03903868;n03908618;n03908714;n03916031;n03920288;n03924679;n03929660;n03929855;n03930313;n03930630;n03933933;n03935335;n03937543;n03938244;n03942813;n03944341;n03947888;n03950228;n03954731;n03956157;n03958227;n03961711;n03967562;n03970156;n03976467;n03976657;n03977966;n03980874;n03982430;n03983396;n03991062;n03992509;n03995372;n03998194;n04004767;n04005630;n04008634;n04009552;n04019541;n04023962;n04026417;n04033901;n04033995;n04037443;n04039381;n04040759;n04041544;n04044716;n04049303;n04065272;n04067472;n04069434;n04070727;n04074963;n04081281;n04086273;n04090263;n04099969;n04111531;n04116512;n04118538;n04118776;n04120489;n04125021;n04127249;n04131690;n04133789;n04136333;n04141076;n04141327;n04141975;n04146614;n04147183;n04149813;n04152593;n04153751;n04154565;n04162706;n04179913;n04192698;n04200800;n04201297;n04204238;n04204347;n04208210;n04209133;n04209239;n04228054;n04229816;n04235860;n04238763;n04239074;n04243546;n04251144;n04252077;n04252225;n04254120;n04254680;n04254777;n04258138;n04259630;n04263257;n04264628;n04265275;n04266014;n04270147;n04273569;n04275548;n04277352;n04285008;n04286575;n04296562;n04310018;n04311004;n04311174;n04317175;n04325704;n04326547;n04328186;n04330267;n04332243;n04335435;n04336792;n04344873;n04346328;n04347754;n04350905;n04355338;n04355933;n04356056;n04357314;n04366367;n04367480;n04370456;n04371430;n04371774;n04372370;n04376876;n04380533;n04389033;n04392985;n04398044;n04399382;n04404412;n04409515;n04417672;n04418357;n04423845;n04428191;n04429376;n04435653;n04442312;n04443257;n04447861;n04456115;n04458633;n04461696;n04462240;n04465501;n04467665;n04476259;n04479046;n04482393;n04483307;n04485082;n04486054;n04487081;n04487394;n04493381;n04501370;n04505470;n04507155;n04509417;n04515003;n04517823;n04522168;n04523525;n04525038;n04525305;n04532106;n04532670;n04536866;n04540053;n04542943;n04548280;n04548362;n04550184;n04552348;n04553703;n04554684;n04557648;n04560804;n04562935;n04579145;n04579432;n04584207;n04589890;n04590129;n04591157;n04591713;n04592741;n04596742;n04597913;n04599235;n04604644;n04606251;n04612504;n04613696;n06359193;n06596364;n06785654;n06794110;n06874185;n07248320;n07565083;n07579787;n07583066;n07584110;n07590611;n07613480;n07614500;n07615774;n07684084;n07693725;n07695742;n07697313;n07697537;n07711569;n07714571;n07714990;n07715103;n07716358;n07716906;n07717410;n07717556;n07718472;n07718747;n07720875;n07730033;n07734744;n07742313;n07745940;n07747607;n07749582;n07753113;n07753275;n07753592;n07754684;n07760859;n07768694;n07802026;n07831146;n07836838;n07860988;n07871810;n07873807;n07875152;n07880968;n07892512;n07920052;n07930864;n07932039;n09193705;n09229709;n09246464;n09256479;n09288635;n09332890;n09399592;n09421951;n09428293;n09468604;n09472597;n09835506;n10148035;n10565667;n11879895;n11939491;n12057211;n12144580;n12267677;n12620546;n12768682;n12985857;n12998815;n13037406;n13040303;n13044778;n13052670;n13054560;n13133613;n15075141 \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.generate.sh deleted file mode 100644 index 3484ffb0..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.generate.sh +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nim_workspace=/tmp/nim/generator/cv_nim -nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.profile.yaml deleted file mode 100644 index 80da5367..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.profile.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - ---- -schema_version: '1.0' -model: "eevaigoeixww/dev/tao_cv" -release: 'rc1' -simple: - profiles: - - model_version: cls.nvdino_pretrain_0114_final_scale0.8.engine_b1_fp16_A6000_trt10.9 - tags: - gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.yaml deleted file mode 100644 index ceee76ac..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/cls/model_manifest.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -schema_version: '2.0' -profile_selection_criteria: auto -model: eevaigoeixww/dev/tao_cv -release: rc1 -profiles: -- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd - tags: - gpu: a6000 - workspace: - files: - classifier.onnx_b1_gpu0_fp16.engine: - uri: ngc://eevaigoeixww/dev/tao_cv:cls.nvdino_pretrain_0114_final_scale0.8.engine_b1_fp16_A6000_trt10.9?file=classifier.onnx_b1_gpu0_fp16.engine - checksum: blake3:27621bbfdbba1538a1ee6b5ae527b233e841fd405887c8ac9ea46c6d509c5adb - labels.txt: - uri: ngc://eevaigoeixww/dev/tao_cv:cls.nvdino_pretrain_0114_final_scale0.8.engine_b1_fp16_A6000_trt10.9?file=labels.txt - checksum: blake3:7065fb33f25f05e562a0ac12acf084a95c2892ede4bec8b2af0b8c2df6f27172 - nvdsinfer_config.yaml: - uri: ngc://eevaigoeixww/dev/tao_cv:cls.nvdino_pretrain_0114_final_scale0.8.engine_b1_fp16_A6000_trt10.9?file=nvdsinfer_config.yaml - checksum: blake3:c406a73ece6aae6700606a937fb5b0ff38ed1ba0690c47fcd1182ffc772e9a10 diff --git a/tools/inference_builder/builder/samples/tao/validation/cls/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/cls/nvdsinfer_config.yaml deleted file mode 100644 index 86793ad4..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/cls/nvdsinfer_config.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class-attrs-all: - pre-cluster-threshold: 0 - topk: 2 -property: - cluster-mode: 4 - gie-unique-id: 1 - infer-dims: 3;224;224 - maintain-aspect-ratio: 1 - net-scale-factor: 0.01508295626 # 1 / (255 * 0.26) - offsets: 122.7709;116.746;104.09373 # 255 * mean - network-mode: 2 # 0 FP32, 2 FP16 - network-type: 1 # classification - onnx-file: classifier.onnx - model-engine-file: ./classifier.onnx_b1_gpu0_fp16.engine - output-blob-names: output - workspace-size: 1048576 - classifier-threshold: 0 - labelfile-path: ./labels.txt diff --git a/tools/inference_builder/builder/samples/tao/validation/docker-compose.yaml b/tools/inference_builder/builder/samples/tao/validation/docker-compose.yaml deleted file mode 100644 index d310821e..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/docker-compose.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -version: '3.8' - -services: - validation-client: - build: - context: . # Context is the validation directory - dockerfile: Dockerfile.validation - image: validation-client - # ipc: host - network_mode: "host" - environment: - - NIM_MODEL_NAME=${NIM_MODEL_NAME:-rtdetr} - - TEST_HOST=${TEST_HOST:-http://127.0.0.1:8800} diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/expected.iva_0010_02_1280_0_181016_007207.json b/tools/inference_builder/builder/samples/tao/validation/gdino/expected.iva_0010_02_1280_0_181016_007207.json deleted file mode 100644 index 33424e29..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/gdino/expected.iva_0010_02_1280_0_181016_007207.json +++ /dev/null @@ -1 +0,0 @@ -{"data": [{"index": 0, "shape": [1, 1], "bboxes": [[0.4875030517578125, 0.3655242919921875, 0.5281219482421875, 0.4118194580078125], [0.317352294921875, 0.472137451171875, 0.401885986328125, 0.546417236328125], [0.255279541015625, 0.3712921142578125, 0.301361083984375, 0.4045867919921875], [0.623138427734375, 0.483489990234375, 0.688385009765625, 0.560455322265625], [0.211151123046875, 0.366546630859375, 0.238800048828125, 0.402008056640625], [0.543182373046875, 0.45965576171875, 0.615020751953125, 0.54425048828125], [0.6658248901367188, 0.3303680419921875, 0.6906204223632812, 0.3629913330078125], [0.1240234375, 0.4144287109375, 0.277587890625, 0.6763916015625], [0.6029052734375, 0.34515380859375, 0.6334228515625, 0.38043212890625], [0.4227294921875, 0.42755126953125, 0.4952392578125, 0.50213623046875], [0.125274658203125, 0.336669921875, 0.221893310546875, 0.433349609375], [0.4257659912109375, 0.369537353515625, 0.4707183837890625, 0.413665771484375], [0.8157501220703125, 0.35472869873046875, 0.8336639404296875, 0.38257598876953125], [0.8364677429199219, 0.3504791259765625, 0.8500556945800781, 0.3702239990234375], [0.6914825439453125, 0.3391876220703125, 0.7108612060546875, 0.3571014404296875], [0.7206649780273438, 0.3330230712890625, 0.7383193969726562, 0.3520355224609375], [0.8022041320800781, 0.3065185546875, 0.8130302429199219, 0.3233642578125], [0.42626953125, 0.36932373046875, 0.470703125, 0.41290283203125]], "probs": [0.7570766806602478, 0.7505527138710022, 0.7318258881568909, 0.7114308476448059, 0.6893056035041809, 0.672331690788269, 0.6540113091468811, 0.6513549089431763, 0.6442250609397888, 0.6415346264839172, 0.5717666149139404, 0.5660185217857361, 0.531209409236908, 0.5126925706863403, 0.4834045469760895, 0.4746311902999878, 0.28537195920944214, 0.22101424634456635], "labels": [["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["1"], ["0"], ["0"], ["1"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["1"]], "masks": [[]], "objects": [], "timestamp": 0}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.jpg b/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.jpg deleted file mode 100644 index 8ba3d1539f543dde6b313b565a738af71ffde2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114044 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 diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.txt b/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.txt deleted file mode 100644 index 8714ee02..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/gdino/iva_0010_02_1280_0_181016_007207.txt +++ /dev/null @@ -1 +0,0 @@ -car,truck diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.generate.sh deleted file mode 100644 index 3484ffb0..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.generate.sh +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nim_workspace=/tmp/nim/generator/cv_nim -nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.profile.yaml deleted file mode 100644 index 60694f86..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.profile.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - ---- -schema_version: '1.0' -model: "eevaigoeixww/dev/tao_cv" -release: 'rc1' -simple: - profiles: - - model_version: gdino.engine_b1_fp16_A6000_trt10.9 - tags: - gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.yaml deleted file mode 100644 index 1d102d72..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/gdino/model_manifest.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -schema_version: '2.0' -profile_selection_criteria: auto -model: eevaigoeixww/dev/tao_cv -release: rc1 -profiles: -- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd - tags: - gpu: a6000 - workspace: - files: - grounding_dino_swin_tiny_commercial_deployable.onnx_b1_gpu0_fp16.engine: - uri: ngc://eevaigoeixww/dev/tao_cv:gdino.engine_b1_fp16_A6000_trt10.9?file=grounding_dino_swin_tiny_commercial_deployable.onnx_b1_gpu0_fp16.engine - checksum: blake3:092963900dd0b08fcdce6ab783fb7ab011051c51b92173a642dc82714af8d606 - nvdsinfer_config.yaml: - uri: ngc://eevaigoeixww/dev/tao_cv:gdino.engine_b1_fp16_A6000_trt10.9?file=nvdsinfer_config.yaml - checksum: blake3:a96518b01c399c0b22064ac73758b0555041badf26b11f20e29218e161f86c2c - nvdspreprocess_config.yaml: - uri: ngc://eevaigoeixww/dev/tao_cv:gdino.engine_b1_fp16_A6000_trt10.9?file=nvdspreprocess_config.yaml - checksum: blake3:a261def4031c9a7f068ecf144c4285d26b0767b9e143b83f48ea92b75e383041 diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/gdino/nvdsinfer_config.yaml deleted file mode 100644 index 54f07c11..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/gdino/nvdsinfer_config.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class-attrs-all: - topk: 300 - pre-cluster-threshold: 0.4 -property: - gie-unique-id: 1 - net-scale-factor: 0.0078431372549 - model-engine-file: ./grounding_dino_swin_tiny_commercial_deployable.onnx_b1_gpu0_fp16.engine - onnx-file: ./grounding_dino_swin_tiny_commercial_deployable.onnx - # 0=FP32, 1=INT8, 2=FP16 mode - network-mode: 2 - # 0 detection; 1 cls; 2 seg; 3 instance seg; 100 no pp - network-type: 100 - offsets: 127.5;127.5;127.5 - output-tensor-meta: 1 - input-tensor-from-meta: 1 - infer-dims: 3;544;960 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so - # process-mode: 1 - # num-detected-classes: 256 - # batch-size: 1 - diff --git a/tools/inference_builder/builder/samples/tao/validation/gdino/nvdspreprocess_config.yaml b/tools/inference_builder/builder/samples/tao/validation/gdino/nvdspreprocess_config.yaml deleted file mode 100644 index 9d097d42..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/gdino/nvdspreprocess_config.yaml +++ /dev/null @@ -1,64 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -# The values in the config file are overridden by values set through GObject properties. - -property: - tensor-name: inputs - processing-width: 960 - processing-height: 544 - network-input-shape: 1;3;544;960 - # Color format (0=RGB, 1=BGR, 2=GRAY) - network-color-format: 0 - - # Network input order (0=NCHW, 1=NHWC, 2=CUSTOM) - network-input-order: 0 - # Tensor data type (0=FP32, 1=UINT8, 2=INT8, 3=UINT32, 4=INT32, 5=FP16) - tensor-data-type: 0 - # Maintain aspect ratio while scaling - maintain-aspect-ratio: 1 - # Pad symmetrically with maintain-aspect-ratio enabled - symmetric-padding: 1 - # Memory type (0=NVBUF_MEM_DEFAULT, 1=NVBUF_MEM_CUDA_PINNED, 2=NVBUF_MEM_CUDA_DEVICE, 3=NVBUF_MEM_CUDA_UNIFIED) - scaling-pool-memory-type: 0 - # Compute hardware (0=Default, 1=GPU, 2=VIC) - scaling-pool-compute-hw: 0 - # Scaling interpolation method - # 0=Nearest, 1=Bilinear, 2=Algo1, 3=Algo2, 4=Algo3, 5=Algo4, 6=Default - scaling-filter: 0 - scaling-buf-pool-size: 6 - tensor-buf-pool-size: 6 - # List of component gie-id for which tensor is prepared - target-unique-ids: 1 - # Process type (0=process on objects, 1=process on frames) - process-on-frame: 1 - # Uniquely identify the metadata generated by this element - unique-id: 5 - # Custom library configuration - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so - custom-tensor-preparation-function: CustomTensorPreparation - # Enable the component - enable: 1 -user-configs: - # Network scaling factor - pixel-normalization-factor: 0.007843137 - # Channel offsets - offsets: 127.5;127.5;127.5 -group: - - src-ids: -1 - custom-input-transformation-function: CustomAsyncTransformation - process-on-roi: 0 - diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/expected.iva_0010_02_1280_0_181016_007207.json b/tools/inference_builder/builder/samples/tao/validation/mgdino/expected.iva_0010_02_1280_0_181016_007207.json deleted file mode 100644 index 2211607c..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/mgdino/expected.iva_0010_02_1280_0_181016_007207.json +++ /dev/null @@ -1 +0,0 @@ -{"data": [{"index": 0, "shape": [136, 240], "bboxes": [[76.01543426513672, 64.22148275375366, 96.24960422515869, 74.30086851119995], [117.1091365814209, 49.73912835121155, 126.87460899353027, 55.97859215736389], [149.55687046051025, 65.8276515007019, 165.2081823348999, 76.28065347671509], [61.328251361846924, 50.49053955078125, 72.38215684890747, 55.02797031402588], [50.39588212966919, 49.84304618835449, 57.35758066177368, 54.67936992645264], [130.3823947906494, 62.527989625930786, 147.58572578430176, 74.00219440460205], [144.71351623535156, 46.95439052581787, 152.0046329498291, 51.72429180145264], [101.4444637298584, 58.09965658187866, 118.86742115020752, 68.27037525177002], [159.7992467880249, 44.91036772727966, 165.74705600738525, 49.38552641868591], [102.26685762405396, 50.20192527770996, 113.00596475601196, 56.17985773086548], [195.79012870788574, 48.23801231384277, 200.06887435913086, 52.034428119659424], [29.847022891044617, 56.80689096450806, 66.53929710388184, 91.80922651290894], [200.72824001312256, 47.67160964012146, 204.03704166412354, 50.34301829338074], [30.151913166046143, 45.9470534324646, 53.226635456085205, 58.97380828857422], [172.9476499557495, 45.25403141975403, 177.20808506011963, 47.84655833244324], [165.94213485717773, 46.02498269081116, 170.6198501586914, 48.47013831138611], [102.29614019393921, 50.19777488708496, 112.97668218612671, 56.11759376525879], [101.68612718582153, 58.145323038101196, 118.97730588912964, 68.22471284866333], [159.83402252197266, 44.92904853820801, 165.7122802734375, 49.36684560775757], [144.73547458648682, 46.99590253829956, 151.98267459869385, 51.68277978897095]], "probs": [0.7262350916862488, 0.7180535793304443, 0.7115143537521362, 0.698273241519928, 0.6837961077690125, 0.6615200638771057, 0.6479339599609375, 0.6333128809928894, 0.6163401007652283, 0.6042172312736511, 0.5862676501274109, 0.5524140000343323, 0.5441274046897888, 0.5259096026420593, 0.49397939443588257, 0.48956820368766785, 0.4240688681602478, 0.34374338388442993, 0.2937321364879608, 0.29185056686401367], "labels": [["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["0"], ["1"], ["0"], ["1"], ["0"], ["0"], ["1"], ["1"], ["1"], ["1"]], "masks": [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], "objects": [], "timestamp": 0}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.jpg b/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.jpg deleted file mode 100644 index 8ba3d1539f543dde6b313b565a738af71ffde2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114044 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 diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.txt b/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.txt deleted file mode 100644 index 8714ee02..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/mgdino/iva_0010_02_1280_0_181016_007207.txt +++ /dev/null @@ -1 +0,0 @@ -car,truck diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.generate.sh deleted file mode 100644 index e877c8a7..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.generate.sh +++ /dev/null @@ -1,2 +0,0 @@ -nim_workspace=/tmp/nim/generator/cv_nim -nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.profile.yaml deleted file mode 100644 index a493addc..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.profile.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - ---- -schema_version: '1.0' -model: "eevaigoeixww/dev/tao_cv" -release: 'rc1' -simple: - profiles: - - model_version: mgdino.engine_b1_fp16_A6000_trt10.9 - tags: - gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.yaml deleted file mode 100644 index e07aa2f8..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/mgdino/model_manifest.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -schema_version: '2.0' -profile_selection_criteria: auto -model: eevaigoeixww/dev/tao_cv -release: rc1 -profiles: -- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd - tags: - gpu: a6000 - workspace: - files: - model_epoch_049.onnx_b1_gpu0_fp16.engine: - uri: ngc://eevaigoeixww/dev/tao_cv:mgdino.engine_b1_fp16_A6000_trt10.9?file=model_epoch_049.onnx_b1_gpu0_fp16.engine - checksum: blake3:947483a55c860eddea37cf1d930c6d92ab4a21d33d7d1dbc4c75e2aaa53e188c - nvdsinfer_config.yaml: - uri: ngc://eevaigoeixww/dev/tao_cv:mgdino.engine_b1_fp16_A6000_trt10.9?file=nvdsinfer_config.yaml - checksum: blake3:f957d513dff19d30f911d6c83416e61588cb1f652984fc9cd164a4eb72eedad3 - nvdspreprocess_config.yaml: - uri: ngc://eevaigoeixww/dev/tao_cv:mgdino.engine_b1_fp16_A6000_trt10.9?file=nvdspreprocess_config.yaml - checksum: blake3:a261def4031c9a7f068ecf144c4285d26b0767b9e143b83f48ea92b75e383041 diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdsinfer_config.yaml deleted file mode 100644 index aa6c12b4..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdsinfer_config.yaml +++ /dev/null @@ -1,37 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class-attrs-all: - topk: 300 - pre-cluster-threshold: 0.4 -property: - gie-unique-id: 1 - net-scale-factor: 0.0078431372549 - model-engine-file: ./model_epoch_049.onnx_b1_gpu0_fp16.engine - onnx-file: ./model_epoch_049.onnx - # 0=FP32, 1=INT8, 2=FP16 mode - network-mode: 2 - # 0 detection; 1 cls; 2 seg; 3 instance seg; 100 no pp - network-type: 100 - offsets: 127.5;127.5;127.5 - output-tensor-meta: 1 - input-tensor-from-meta: 1 - infer-dims: 3;544;960 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so - segmentation-threshold: 0.5 - # process-mode: 1 - # num-detected-classes: 256 - # batch-size: 1 - diff --git a/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdspreprocess_config.yaml b/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdspreprocess_config.yaml deleted file mode 100644 index 195f72ef..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/mgdino/nvdspreprocess_config.yaml +++ /dev/null @@ -1,63 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -# The values in the config file are overridden by values set through GObject properties. - -property: - tensor-name: inputs - processing-width: 960 - processing-height: 544 - network-input-shape: 1;3;544;960 - # Color format (0=RGB, 1=BGR, 2=GRAY) - network-color-format: 0 - # Network input order (0=NCHW, 1=NHWC, 2=CUSTOM) - network-input-order: 0 - # Tensor data type (0=FP32, 1=UINT8, 2=INT8, 3=UINT32, 4=INT32, 5=FP16) - tensor-data-type: 0 - # Maintain aspect ratio while scaling - maintain-aspect-ratio: 1 - # Pad symmetrically with maintain-aspect-ratio enabled - symmetric-padding: 1 - # Memory type (0=NVBUF_MEM_DEFAULT, 1=NVBUF_MEM_CUDA_PINNED, 2=NVBUF_MEM_CUDA_DEVICE, 3=NVBUF_MEM_CUDA_UNIFIED) - scaling-pool-memory-type: 0 - # Compute hardware (0=Default, 1=GPU, 2=VIC) - scaling-pool-compute-hw: 0 - # Scaling interpolation method - # 0=Nearest, 1=Bilinear, 2=Algo1, 3=Algo2, 4=Algo3, 5=Algo4, 6=Default - scaling-filter: 0 - scaling-buf-pool-size: 6 - tensor-buf-pool-size: 6 - # List of component gie-id for which tensor is prepared - target-unique-ids: 1 - # Process type (0=process on objects, 1=process on frames) - process-on-frame: 1 - # Uniquely identify the metadata generated by this element - unique-id: 5 - # Custom library configuration - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so - custom-tensor-preparation-function: CustomTensorPreparation - # Enable the component - enable: 1 -user-configs: - # Network scaling factor - pixel-normalization-factor: 0.007843137 - # Channel offsets - offsets: 127.5;127.5;127.5 -group: - - src-ids: -1 - custom-input-transformation-function: CustomAsyncTransformation - process-on-roi: 0 - diff --git a/tools/inference_builder/builder/samples/tao/validation/pcbclassification/IMG_0002_C75.png b/tools/inference_builder/builder/samples/tao/validation/pcbclassification/IMG_0002_C75.png deleted file mode 100644 index db3e9010d507609c449ff4d112fac55dc9b51a9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23923 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

A}*nR#8gHAC`=A8hs+0Xb0w(D?+evgCE|u0CV4 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

r48&ZKsTkW*#uZ%(_{5Am(&ohT?3hJ2ASt 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.0.1 -requests>=2.31.0 -urllib3>=2.0.7 -jinja2==3.1.4 -pydantic>=2.0.0 # Required by OpenAPI client -unittest2>=1.1.0 # If needed for extended unittest functionality -python-dateutil>=2.8.2 # Often required by generated OpenAPI clients \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/expected.iva_0010_02_1280_0_181016_007207.json b/tools/inference_builder/builder/samples/tao/validation/rtdetr/expected.iva_0010_02_1280_0_181016_007207.json deleted file mode 100644 index 51f88eeb..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/rtdetr/expected.iva_0010_02_1280_0_181016_007207.json +++ /dev/null @@ -1 +0,0 @@ -{"data": [{"index": 0, "shape": [544, 960], "bboxes": [[572, 145, 579, 154], [774, 148, 786, 152], [808, 151, 816, 160], [776, 151, 792, 160], [809, 151, 825, 162], [144, 168, 155, 172], [815, 178, 828, 190], [770, 168, 778, 173], [664, 182, 680, 191], [591, 164, 606, 169], [802, 190, 814, 198], [691, 179, 705, 189], [781, 192, 796, 204], [197, 198, 227, 216], [637, 179, 660, 195], [578, 188, 605, 205], [244, 202, 287, 218], [466, 198, 504, 220], [407, 200, 449, 223], [119, 182, 211, 234], [405, 231, 473, 270], [597, 263, 658, 304], [119, 229, 263, 366], [303, 256, 382, 295], [520, 250, 587, 293]], "probs": [0.6682310700416565, 0.7375364303588867, 0.7767922878265381, 0.8113772869110107, 0.8286616802215576, 0.5089941024780273, 0.6119039058685303, 0.6735138893127441, 0.8091251850128174, 0.8171371221542358, 0.8241790533065796, 0.8285229802131653, 0.8854334950447083, 0.8866168856620789, 0.9132132530212402, 0.9219218492507935, 0.9313377141952515, 0.9372107982635498, 0.9400235414505005, 0.9541373252868652, 0.9582261443138123, 0.9608783721923828, 0.9614614844322205, 0.9626731276512146, 0.9630919098854065], "labels": [["road_sign"], ["road_sign"], ["road_sign"], ["road_sign"], ["road_sign"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"], ["car"]], "masks": [], "objects": []}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/iva_0010_02_1280_0_181016_007207.jpg b/tools/inference_builder/builder/samples/tao/validation/rtdetr/iva_0010_02_1280_0_181016_007207.jpg deleted file mode 100644 index 8ba3d1539f543dde6b313b565a738af71ffde2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114044 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 diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/labels.txt b/tools/inference_builder/builder/samples/tao/validation/rtdetr/labels.txt deleted file mode 100644 index fa9b7005..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/rtdetr/labels.txt +++ /dev/null @@ -1,81 +0,0 @@ - -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -27 -28 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -67 -70 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -84 -85 -86 -87 -88 -89 -90 diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.generate.sh deleted file mode 100644 index 3484ffb0..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.generate.sh +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nim_workspace=/tmp/nim/generator/cv_nim -nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.profile.yaml deleted file mode 100644 index 90cf3907..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.profile.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - ---- -schema_version: '1.0' -model: "eevaigoeixww/dev/tao_cv" -release: 'rc1' -simple: - profiles: - - model_version: rtdetr.engine-b1_fp16_A6000_trt10.9 - tags: - gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.yaml deleted file mode 100644 index 4d65502d..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/rtdetr/model_manifest.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -schema_version: '2.0' -profile_selection_criteria: auto -model: eevaigoeixww/dev/tao_cv -release: rc1 -profiles: -- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd - tags: - gpu: a6000 - workspace: - files: - labels.txt: - uri: ngc://eevaigoeixww/dev/tao_cv:rtdetr.engine-b1_fp16_A6000_trt10.9?file=labels.txt - checksum: blake3:e50ee4f9ef6d7a17e8446eccc46748be8602629b9a4f729e3f959c80c7d6939a - model.onnx_b1_gpu0_fp16.engine: - uri: ngc://eevaigoeixww/dev/tao_cv:rtdetr.engine-b1_fp16_A6000_trt10.9?file=model.onnx_b1_gpu0_fp16.engine - checksum: blake3:a800796eaf366aa3eccb5c4151258c754ea27ddd2dfeb30844b0072bd9a641e1 - nvdsinfer_config.yaml: - uri: ngc://eevaigoeixww/dev/tao_cv:rtdetr.engine-b1_fp16_A6000_trt10.9?file=nvdsinfer_config.yaml - checksum: blake3:126064d8b7353208c0dfaf24ab9cea823bc80f772da44f6add8730840095a6f3 diff --git a/tools/inference_builder/builder/samples/tao/validation/rtdetr/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/rtdetr/nvdsinfer_config.yaml deleted file mode 100644 index 7b42b5b9..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/rtdetr/nvdsinfer_config.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class-attrs-all: - pre-cluster-threshold: 0.5 -property: - gie-unique-id: 1 - cluster-mode: 4 - data-format: channels_first - infer-dims: 3;640;640 - maintain-aspect-ratio: 1 - model-color-format: 0 # RGB - net-scale-factor: 0.00392156863 # 1 / (255 x 1) - network-mode: 2 # 0 FP32, 2 FP16 - network-type: 0 - num-detected-classes: 80 - onnx-file: model.onnx - model-engine-file: ./model.onnx_b1_gpu0_fp16.engine - labelfile-path: ./labels.txt - parse-bbox-func-name: NvDsInferParseCustomDDETRTAO - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so - workspace-size: 1048576 - # scaling-filter: 2 # 2 cubic diff --git a/tools/inference_builder/builder/samples/tao/validation/run_validation.sh b/tools/inference_builder/builder/samples/tao/validation/run_validation.sh deleted file mode 100644 index 27267dc2..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/run_validation.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -e # Exit on any error -# Validate NIM_MODEL_NAME -valid_models=("rtdetr" "cls" "seg" "gdino" "mgdino") -if [[ ! " ${valid_models[@]} " =~ " ${NIM_MODEL_NAME} " ]]; then - echo "Error: NIM_MODEL_NAME must be one of: ${valid_models[*]}" - exit 1 -fi - -# Change to the appropriate test directory -cd "/app/validation/${NIM_MODEL_NAME}/.tmp" || exit 1 -echo $(pwd) -# Run the test -python test_runner.py diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/expected.image_0.json b/tools/inference_builder/builder/samples/tao/validation/seg/expected.image_0.json deleted file mode 100644 index 878c383b..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/seg/expected.image_0.json +++ /dev/null @@ -1 +0,0 @@ -{"data": [{"index": 0, "shape": [224, 224], "bboxes": [], "probs": [], "labels": [], "masks": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1]], "objects": [], "timestamp": 30549489621}], "model": "nvidia/nvdinov2", "usage": {"num_images": 1}} \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/image_0.png b/tools/inference_builder/builder/samples/tao/validation/seg/image_0.png deleted file mode 100644 index d716f4b53fd4a4a1a8f9167e406392271f25f814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224897 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%0DM>anQQYOQ(2RizsmqAvLm=1DddN!M6lZZ`jW>pC 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%0A)=3L_*Ol4fS}s6LYETWCZ@z zolnJ5Xe4DlzxvJTBLQnW{=Vg0zWeXwS8$mx_@`n9l;=k zXMxU@zcTuAdYJg(OUtfdn@F;&lT&_bwn((kQ@Y1DsKphtv?@{K^QDPip#*t;VR$!T zGD%`cp|5R(=>ajRTw?R$RIVB~$)%MvIq}M`XDNw1^VswJu?EM~x=h^;>D(e)s%(Do(!wsQ=wSI1~^W+Y(mD#cuy zgq7*RR9>ID%o1I!GsdrOnmGS6xF8^}8~2i?V6|Ry$m{J4JpR5g$qR?2O%4-&bDDp0 zSBOBelr-#k1L`%%>xe20r@sFIN8Cv-UfE;;<_~sni!5HaDR_uQ3EeA%AD5UA14{JHbO%*oRPn4J-F_< zHEaJ6D7_iVZ11VdN^!)Oc*>C9k}pm`!Ss9_oXnfZYA)hP|x zFrXanF|E;^Wd4ZqOz!qr0X~=mr6rq&yr;YcHVsqK+$S;sNKk*VEuU-@eIy z7OliyCNc3mDi22U*kLJiPM@7xW$~=fAZ}Z!{B(T4uRWd&gzMTH(M#WN1H2Yx;S>O3 z7TOP3lBwta^4Xt0R0+WF(fBOlr640;rVaP>DWCgreiT^oYM6;Dr1$y-f2+9w1v?ZL z_}eak%;H!{DOagcR6Lo{2{53OoZvcg2{*1J%Jd(&N!hWF4a9lZcFW|{X|WUiuEY$a_H`qV|Fkb@C6;^ z{1Uu#_~?FQyt@0g(Ys4Q;mJUiszu^lk>nCaqCh)zIc9Nw4TX^Ianj`EMebiEl~HXI z(#NARmlGoSYqvPSb52qpgP8!;(ea@CFJAwL@BOF-YCSh$e1|VHkY#J2O}==Qti0Xv zBw`Ze#tEQK{KFt!W-vPCP0IvUaUB;!$S#uTpodPzho=>MZh$B&pa{SnI~=NY;Rl>^ zfH+3sZd!#DMf7DM3 zAHOm7ngIb{M_EkHmeetf<`zmbJnYB0gshTwM#Gy^05k{>rPL1Op0)LiV2AMx&K9ik zK3xRN95!5=9dHt9geQNMB4PDtam}uh(bOd?_eg`Popy)}jb>NsiFg57-rsZ2a8N+{<}rb1h6cC@(`-k287R};@aTa=m_J**IY z8@iJpV|n=GP?DlBIT&dnF&}m1xcmmKrD_rx0A7b#C~kKLr1q zts;em6&E=ZndVsnpSO79FIe!r`X?l>lmW{@2?7F8ZehWB(?jKL7%eBw0B~5Kh$;At z3a+#GLifb(!Bq^`0@KZ^Bnz6d8(0(>fsCFGXbfE86Tdva!_hc1k8Wf?f&@}+VqhZ$ zkbgzq;?U>kFwEjwosnLzz?~XOgt{v-lzu)h8FT($VcJmg5ihFzId_KbQ*GoBo z0~9!-`HYI<=8-Z@mDLlDmeaxlqm(7{bdn_Ed4KX?Q_q36TxE)m;dW+<&E83EU#2Gv zQt%_rO>*<8t-)3AyDI_?){5t#C9G2%HUUH#BEK{dpBi^rRD_%uOR}ro8C1GwkF*7} zR+KL<6;cfCUV?$L5fhV;2%%5#6d0#Hbz}&uoxfeM#1eTuZ2ln4X{H^fx3g6na8Mec z2XaYu2XX0glj_;t0=@))oGlMC)p?i-9Rx4{2)0l-K00%j z8I*ttn({54Lgf~g1%yDmJb&O`#pA^YS_COG=I`5W;e>nR+z{CjV&_+VfZ=zi1t?2$ zld0mLPVQ9|OXR6FcxEYhOj|~HX(fSJWa1UP(}s~w^)9zC<}%NRi#C_VXCn{H2NtAv zdz3Xwvz|n|mYVvvegLmnQEF!TAmogoVph_|lY}Mny4pgwMkC3LW;QFOvjuc9-+r-P zcKTzgKA~3re}dp6R+3w8IhWC!|LmsSuUhg^ha&}hFf#~DB z8WOI&^*$RYb4qGy;e#J+SI{%%!=@g+o!P#pem!jVAG-GfNxcs}7C6znsGk&0FNU2ODYqKnnpw(gX&yC=oV+?R*Aji-ZKT zW^_(6XucxvzaB7#pRFU2ReEOrXjb-y^iQx}43nL_qUM69@8y-?>Ku?liV<9|)r?e9 z#w_w0=N*uM9UB97bAS19wvH;bpme+kTQcs)E0oT_C@6L8mv-!7$(8{U@Spt7DVwbE z!|~>gja3~Q1&mO((@)ku_ucz6&d;SfnJiTViclxcw!?t0BTZx?St7xzIW^J+@?GiqZNlEZ+C7b9q9RruHEjS& zU}5n$M!u*Dwse5_m&gY%(8IfdC6iiMRX$~p>qRXBqu6DjIj|anz!W*x0F|act*2&R>HuFGLs9M zUOIrbS-ezUyG$BTl+GC|s7$Lnr`5&Ka~GbH?RzFRpsEg!#f68JmrJ|LHbK9Sj0hqL zpU;e=N>qVn^MmgtbG%G$*BqLnfq|=8+o0Po|Nes4UQh?(|N8hLOPMQ4X0T@Mh1h{^LRq zOkwvHZ0*x@jr7wEk+A#23(uQUfO0^SsVh?}^pSBFLe4xm@Yj5G;^HZ@2cqYn*`$Nt zKTG-%h=kJsrI*y(g(eXd;As)m?AwX^4iq9%5u~sB-Y_A-Mhw{{XCZXFFB^{;px2vM zz<7DE(qcj z)}SuV>9@KmW%`ML3ZXF!Bm>yJ+a6*LJUMssX9s^jD~RO~Q-VWp#_4b?lKIIO@eYL0 zKBf%V>fm*m&etZ_hv2qTz;Iv%$Iqvb3@x(~F^f~|Fnz`yb$LrQ*NHnp;u3Qk1uQK(xPICq_Ap>finxc)4wKE!RD%#m|kzmrR7n1V2iLcz;Fx4`)9gxG*| zg|uK8iHQ`9h2lDvH^UgzbD}>3|KTPWRMgm*aH8t6Hkl?FrhtO9uQ80!h67S3mzOiE>t$#2Dg=u?w zPA(A3B$y5E)B-OwQj2o(^)d*sd2c*A*(AHm?dA&0hePx+qb40CkqO5`XtM|L=rU_6 z5o`N7rak%;i|Zu&$TSD^LuoV_xt8}Go}nGU%OffMY=+*lP=2RgkyKR~zr@gpZUrW} z5-Wre*QgMMUjwAMNoWj+^)R@hLEWbCKSE+p}y>f&EeMFu-pQD}TM)K&ho3HhQ4^Qmb zI_EG0)0E>2wZwx=Mwg-uS|N*NVEN zdOOQ=$uv12hmkJW2G9bf8akC#yuLnP5Zs?eje;ChWw%!^)s=krpGm z>n>p2DwH;gacH}GSXM!vTCZ|%*?;BN3%Yk7h34RWfl)r{NudZr3_VA328Z@S*n{It zJf)W@>RCe-&v)3VOx%cVzy}Wtqj|^ zkd|Lh0!3}Thf`qK!h(uDMGA9Qc1YL`dC!JHsFb%V;1^zj@dea0#+oci;=;p&F=P&_ zvcn6C|A?FQjYbD`0WrOsxH*t?E7DTI@N_&3Pw$x@TSe?~ElBNLHV0U&bMuSwhTEy) zaIt#zar~&-q5NBekSr)%tNnnEExO2i0Kyhd0WFeZj~`z95N>9;!K{@%25H~JR+?XT zXScnBj@(+V?QoC2Swy!lO#(iAs3!XfaExyvG%rmP6*^sinKF8ki!BfQm+#bR(vPQ} zTn_}`bq2}BbP*CCzhvQ{+QGVU&~2i@L}jM}76Eg(Y6T5RUz6IVfs&~`u9AU3pr#X; z1`zb2Y_+-9?WZj>dl~LaRxXzQ= zWJ?>|!tGj=*zK*~um(`Ri~uxh&TKcMoiG)Sdw9LMzLRly8c(sDAAZ%Iew8t zhe$b^qb?#41_XLc5p-c($M<1cw=<%X=;Cf+c~eDRTsbGuB;KDZXXy;+$cXDj`O&t5 zFE&{i-ammltAA_6ae(CCXj>z0H&j~a3{SFROuOKQZ>(lcD_he{3wyQ|U9DCH!~XMV z4^nBI$l>JWh;!&X?CRYbuyth?wp_CJgd!Nn;qPObn&v$#)<_J#jE{(#yk$5Ryddg! z8+ti=0p?i}$??u}ze|az*B?~h3%Aadx-py3u*svjM3IiD*dZgfz4^!2MP};AqN)1! z9+MoLQOeXSsG}je({{_$`GnyxZ}F!3?~FJ>-sM*B?RrRoz}7khLxEODKUE|LDQKDw z{&&?}oxj_aKBYQd+IxY7`L|1827hy_WGG(E9l##fVy+ArXB!uHMSNZ&)fzuolYUHd zjFrqO3QY3Q$R$7>z6o;H<$`0oH9c#qvjEp$?Gs`7T#3atw^~?YY>=yY zi^($tx#=TpDAQMQjWS3BiU*V+2oa5 z8=1$Y-)8^-AOJ~3K~%d;0HVWrHobk^%I_tbGDrMC=tO3P#W2%fFs;Fr9OO&^rWgmqbU-*npoknt8cf}6JnxShGzn<+u_N) zyouT<#@jQN?qAwM-oHXhOaH(sQp=-!=q|YWXqmADlWYvv1w3i@MXCAoTLY_pd}H4)$W;V)=tTbAywXl3zU&K|a57 zU?*w8uL|#;n8UbeU!juL*|#!|RlW$1yyx2P+i8HDUy}yK6$O;%bQYfn5xVW?S^!-@ zqQ9_v4%TBh;f|&LZ}dj_&Gyq<;V>`~a>qb|e;52L*|H52cG(tnOWI9DG9c^^?B;)!wMuFwmZVR13Shb!J(3C8@MfNH{&ked!QZp1tgE+w0 zGI{qa`%p^tB@CH1utAFrAr%U)8rzMWDk#r1D_77x95Wz3E0)L{Wt)C3KXk=ZXVKTU zUJ>xixm83>(R3WaD0}vpSDl*(8U;TX1J}Wgb?v*vHL9tmfWY%euRxUSam;?6E$bB9WzOf}`-& znU^yfU?3=pkbAOh%WA~Hvqc%xPu|f|Zk|$WurWps5=a_Wheq_ zWoNy}R%jfZx?rvxGPcvGnCpV6U_m>a)R=?Hh%JyKpx9Vm#9v|GZ?N`MaM zmqrX>$U0!X-lT+vxpbS@68qb)c~n0=i?EZn1kRTudIv;6H%@fh27PD`{GW^LfGtNf z;>}H3k8Z@%FhM0~IuAdaKkndCNAP9XCPTQfd1;^p22_Di<#ga7FLr%X1Nvw@pWbvx5`1?CPu+06gHRIzuMu=3A#| z6*{h$troDO1u1AAym_o|CR!V#Nf zS8NUeboW+&F20u4Gr0tKATNr6vaPIDmber+`i5AJg|Q0P64-fF6(9eQZ)=2?)K zVGJA>?eFaAZlQKQElV+Mtr0ldY;>d;#3eJxdZR3JI8-X|0^!27&3caszz`(aWSoE~ z1OE42e!vxcJ4i7cy7juHycZfU=z-&pR@A+&RPvQ#4Ocxp_3pM{u8?ef+z0He+1Z1) zIdc`7Zn$gMT*!_`coqtIZt=`*5>XbLyc7p39Ca+PzSF>?l!%7YJMf5g%KB29pB!nU z1jg`A@Hz0{@pcRJMf#%&Q9O+j%jKiIGmcB{*;<{;H z`K1ETPph#dLMpsA8BfdGztVniDBw#cm8T!KzE>o1IzW;D<|A{iS%atAZk2Un-f*zU ztF+w`KIaou%o10uu~3NAFgQG_rLk+;>SF1s-H$8JR zyzHOe3*z-!DEeOc2x8-5tL}#2CUu^r?^FTm<=@Q??&Ev)>wccGTxvhVlMU#ED2Z4Z z7X%WK6|p4pd*%bP2j{g`L6G6+=i0S&5Y>yr_|5bxK{=F` z2hF``uB#KmI5G zZ0=OwiofYIt)AB=GDj+`TowiY#}B+arq;4XT6On>kI%iH}?x(`opXH1h8wHNuftN0>uUSj523z`*VVi(Ojf?(GwKxdEY%*40uwCw8EbL$h*Zh}IR&5w>NHQ3=~Siz5_|wLl{644cmciC)~1#fmf` z1v5ee<2Rq=o67a?|1={oNYR(YovodrC@m2NS(}6Z_uH<Ds9~fph}K2X(1v))fkPq@13{+V`w}%bxZ{GLcvJTQ8?{aP@Nqj+AxdXy9d)cKqrQ&!#(oY7OtB1O$>oTty#@Xsuc^Vh z`*wNt>r{4jf3)|4c+cOW0c&gCV5@$mPT(3k7gHK&vq(XhgQ~X?l#b zO8IoCb&FGq#bY#>6NI_Ri(6gCcJszCfCvv+MMXodal!f_{;kJoyley62IZjuik&HO zT!?~#5~8;kU?mm7UkA>ocojOUwAmp|DWEtIQqjAuBvc{+7$OpQnDG#SES5+e)3tEE5d2 zl4K|t2ZJen`?pHmC%?NJb;`3CMW;@A6N6z|F5;+>WXfyg!|Jo?HZADArTzZzy}FX_ z$JZGVVYH%Rf~&|>fmo4%SEF(rS7l?B!nTf1by{{$Bv^J~rE!=ri%W{@bYKU?)$!e( z&WA~jqVV%Y>n&*P`Xp!Fuq{6(hy)sN_W`j+hfv^Q9wfVKAlzC^pa_JuuH4II!+{~t zIrDGS@(TXpX=(a@y{d)L58v0cleWje(;J5RazWsmXEX8PY2IF;dySc&nlVG!V}&fD zXtg{1+W%}uGRNI&6B@m6j!TuI8VLcw+)iPFC;%!h(j4a75WImvQF$FXQ8CKFFQWs0 z(?%B&YC58oRH)|O>^XiC2Hn|Gus4$51YbCkSKPVp%viw4VLExleWjpSSG&;4&8%GY z73~X}U4vDor<#6iv$|WRuc{QOF!FZ$ZQs04mr#N)d{L zE?0$>bWbsvz)5dsCPnBaUK1zwPmtFbvLOUxBeSWsCc6!PRjg824q9nWij#71tvh-m z6lqM+2k3i`(9M_U#isD}Guc@``~fFSpS+wcko(_hFhbQw(9On3zH}-r=C6OoK72&j zYq0^6IplI)tcN4lpmDlRoS(0k9`aTht;(2Urf8+5>s;L#*7R9wNenCqK*)qBVkFxQ zEKVW(iFRn=;B)s~cGb3D7Mt^g4Yvi7m8=Wy`?Nz=)am+Wl{no@h%*E{%M0JS5FbrDmNq2s` z)xQzTAvoCbRH-RbB4PIi+zu8c45){E%Y11sfhq|~a701YcK`6|FP;W_)jX%19~2@% zCd1W&t>ih(_YCl}4TYgIw?(^2g@lX&EugR+Lkop!L!0M!ZEb$YIT#G~C6qR1{ILlFPretxR9s-EXY=IIt{e(CXQd8Qi=iJbba32PV0^+DR zYMBbxp)HRJcxj}I-iBjb7oa!#XvvEp!9xeB3Ov~~9K9<{=LyNo9j^XXb+!=;JdGgF z?n*@phgQ9w#_T_k*3)#J>~)-MbX7YE|IMIwi~i9`=FF!0)LL8i_4sC7saR=U9l!_@3}&8C&XGlEh4iZT9EjmugrTxXvTo%jq~HY* z2sE&uZS*wE0KI@bQ!7#67)IxV6&YWZn=7(m-wIXhIl}KqCILA_db_oDj900#lq(Hny<1V-9CafC0MLFOo+&_50yxFjZ7y(n6`G(40Sb*C7my>nsbq4 zp?Epp*=OCCy~B6%(Tw9Z;KxX?kV}D)xN^l4>b-9T)`fHFNGTV6=l1hN@QAYO332Sr z#Rh6mm;yKIqj?+$0wQ5!ceNBqtdzzS-@#rwEqt0rD~kzzMy#q|5DyE_+;@MMTdE

1fKeQ|5*LhJzm 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%0A}`)=u2Zx!+X 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 diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.generate.sh b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.generate.sh deleted file mode 100644 index 3484ffb0..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.generate.sh +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -nim_workspace=/tmp/nim/generator/cv_nim -nim_generate_manifest --profiles-file model_manifest.profile.yaml --manifest-file model_manifest.yaml --nim-workspace $nim_workspace diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.profile.yaml b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.profile.yaml deleted file mode 100644 index ffde05a2..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.profile.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - ---- -schema_version: '1.0' -model: "eevaigoeixww/dev/tao_cv" -release: 'rc1' -simple: - profiles: - - model_version: seg.cradiov2_b.engine_b1_fp16_A6000_tao2_trt10.9 - tags: - gpu: a6000 diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.yaml b/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.yaml deleted file mode 100644 index 31398c30..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/seg/model_manifest.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -schema_version: '2.0' -profile_selection_criteria: auto -model: eevaigoeixww/dev/tao_cv -release: rc1 -profiles: -- id: 425dcb3ef646e497d5a50bbd1eb1169c9f33f4253f36669bb428ef250e2447cd - tags: - gpu: a6000 - workspace: - files: - nvdsinfer_config.yaml: - uri: ngc://eevaigoeixww/dev/tao_cv:seg.cradiov2_b.engine_b1_fp16_A6000_tao2_trt10.9?file=nvdsinfer_config.yaml - checksum: blake3:8e479d4f7fc8ac37b0b690040213f4cde8ac7c279ba120fa316e36d9d40ab41e - segformer.onnx_b1_gpu0_fp16.engine: - uri: ngc://eevaigoeixww/dev/tao_cv:seg.cradiov2_b.engine_b1_fp16_A6000_tao2_trt10.9?file=segformer.onnx_b1_gpu0_fp16.engine - checksum: blake3:13ce94093ac0f2365ccacc2ccc7fbf6be1aba981a2f3eed0422606346db6af3d diff --git a/tools/inference_builder/builder/samples/tao/validation/seg/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/tao/validation/seg/nvdsinfer_config.yaml deleted file mode 100644 index fbfb7172..00000000 --- a/tools/inference_builder/builder/samples/tao/validation/seg/nvdsinfer_config.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - gie-unique-id: 6 - process-mode: 1 - infer-dims: 3;224;224 - maintain-aspect-ratio: 1 - net-scale-factor: 0.007843137255 # 1 / (0.5 x 255) - offsets: 127.5;127.5;127.5 # 0.5 x 255 - network-mode: 2 - network-type: 2 # seg - num-detected-classes: 2 - onnx-file: segformer.onnx - model-engine-file: ./segformer.onnx_b1_gpu0_fp16.engine - output-blob-names: output - # output-tensor-meta: 1 - segmentation-output-order: 1 - workspace-size: 1048576 - parse-segmentation-func-name: NvDsInferParseCustomSegformerTAO2 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so diff --git a/tools/inference_builder/builder/samples/vllm/Dockerfile b/tools/inference_builder/builder/samples/vllm/Dockerfile deleted file mode 100644 index 27d932c1..00000000 --- a/tools/inference_builder/builder/samples/vllm/Dockerfile +++ /dev/null @@ -1,88 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: LicenseRef-NvidiaProprietary -# -# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual -# property and proprietary rights in and to this material, related -# documentation and any modifications thereto. Any use, reproduction, -# disclosure or distribution of this material and related documentation -# without an express license agreement from NVIDIA CORPORATION or -# its affiliates is strictly prohibited. - -# Sample Dockerfile for a vLLM-based vision-language pipeline using a -# Triton-enabled DeepStream base image for accelerated video decoding. -# This is specific to the vllm sample in this repository. -# Stage 1: pull in DeepStream libraries, binaries, and sample assets. -FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS ds_stage - -FROM nvcr.io/nvidia/vllm:26.02-py3 AS inference_base - -ENV NVIDIA_DRIVER_CAPABILITIES $NVIDIA_DRIVER_CAPABILITIES,video - -# Install GStreamer plugins and DeepStream runtime dependencies needed -# for hardware-accelerated decoding and RTSP support. -RUN apt update && apt install -y --no-install-recommends gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ - libyaml-cpp-dev libgstrtspserver-1.0-0 libjsoncpp25 libgles2 pkg-config - -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/lib /opt/nvidia/deepstream/deepstream-9.0/lib -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/bin /opt/nvidia/deepstream/deepstream-9.0/bin -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.sh /opt/nvidia/deepstream/deepstream-9.0/ -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.txt /opt/nvidia/deepstream/deepstream-9.0/ -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/README* /opt/nvidia/deepstream/deepstream-9.0/ -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/*.pdf /opt/nvidia/deepstream/deepstream-9.0/ -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/service-maker /opt/nvidia/deepstream/deepstream-9.0/service-maker -COPY --from=ds_stage /opt/nvidia/deepstream/deepstream-9.0/samples/streams/* /opt/nvidia/deepstream/deepstream-9.0/samples/streams/ - -# Copy CUDA NPP and nvjpeg libraries required by DeepStream GStreamer -# plugins (nvvideoconvert, nvdsgst_image, etc.) that are absent from -# the vLLM base image. -COPY --from=ds_stage /usr/local/cuda-13.1/targets/x86_64-linux/lib/libnpp*.so* /usr/local/lib/ -COPY --from=ds_stage /usr/local/cuda-13.1/targets/x86_64-linux/lib/libnvjpeg*.so* /usr/local/lib/ -RUN ldconfig - -RUN /opt/nvidia/deepstream/deepstream-9.0/install.sh -RUN ln -sf deepstream-9.0 /opt/nvidia/deepstream/deepstream || true - -# Install Python dependencies required by THIS Qwen sample. These -# versions are pinned for reproducibility and can be adjusted for -# other pipelines or environments. -RUN --mount=type=cache,target=/root/.cache/pip pip install qwen-vl-utils[decord]==0.0.8 \ - python-multipart==0.0.9 \ - aiofiles==23.2.1 \ - aiohttp==3.11.0 \ - annotated-types==0.7.0 \ - python-magic==0.4.27 \ - numpy==1.26.4 \ - omegaconf==2.3.0 - -WORKDIR /workspace - -# Copy the inference flow package generated by Inference Builder. -# This tarball (here: vllm.tgz) is typically produced when running the -# builder with tarball output enabled, and its name should match the -# generated pipeline artifact you want to deploy. -ADD vllm.tgz /workspace - -## Set Environment variables required for DeepStream+vLLM runtime. -# Ensure DeepStream libraries are on the library path and enable -# adaptive batching and appropriate CUDA architectures. -ENV LD_LIBRARY_PATH /opt/nvidia/deepstream/deepstream/lib -ENV NVSTREAMMUX_ADAPTIVE_BATCHING yes -ENV NVIDIA_DRIVER_CAPABILITIES=$NVIDIA_DRIVER_CAPABILITIES,video -ENV TORCH_CUDA_ARCH_LIST "7.5 8.0 8.6 9.0 10.0" -ENV CUDA_CACHE_DISABLE 0 - -# Create the entrypoint script that runs the Inference Builder-generated -# /workspace/__main__.py for this vLLM pipeline. -RUN touch /workspace/start_server.sh && \ - chmod a+rx /workspace/start_server.sh && \ - cat > /workspace/start_server.sh <<-EOF - #!/usr/bin/env bash - set -eu - # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. - # SPDX-License-Identifier: LicenseRef-NvidiaProprietary - python3 /workspace/__main__.py -# while true; do sleep 5; done -EOF - -ENTRYPOINT ["/workspace/start_server.sh"] -CMD [] diff --git a/tools/inference_builder/builder/samples/vllm/README.md b/tools/inference_builder/builder/samples/vllm/README.md deleted file mode 100644 index de346aba..00000000 --- a/tools/inference_builder/builder/samples/vllm/README.md +++ /dev/null @@ -1,131 +0,0 @@ -## Introduction - -This example demonstrates how to build an inference pipeline with Nvidia Deepstream MediaExtractor and vLLM Inference backends - -## Prerequisites - -The sample models including `Cosmos-Reason2-2B` and `Qwen3-VL-2B-Instruct` can all be downloaded from huggingface (Be sure to have git-lfs installed): - -```bash -git clone https://huggingface.co/nvidia/Cosmos-Reason2-2B ~/.cache/model-repo/Cosmos -``` - -or - -```bash -git clone https://huggingface.co/Qwen/Qwen3-VL-2B-Instruct ~/.cache/model-repo/Qwen3-VL -``` - -## Generate the Inference Package - - -### Cosmos-Reason2-2B - -```bash -python builder/main.py builder/samples/vllm/vllm_nvdec_cosmos.yaml --api-spec builder/samples/vllm/openapi.yaml \ --o builder/samples/vllm/ -c builder/samples/qwen/processors.py -t -``` - -### Qwen3-VL-2B-Instruct - -```bash -python builder/main.py builder/samples/vllm/vllm_nvdec_qwen3_vl.yaml --api-spec builder/samples/vllm/openapi.yaml \ --o builder/samples/vllm/ -c builder/samples/qwen/processors.py -t -``` - -## Build and Start the Inference Microservice: - -The sample folder already contains all the ingredients for building the microservice, all you need is to run the command: - -```bash -cd builder/samples -docker compose up ms-vllm --build -``` - -## Test the model with a client - -There is an OpenAI client included in the sample for testing, and for image input, you can directly run the client with image path: - -```bash -cd builder/samples/qwen -python client.py --images -``` - -For video input, you need to first upload a test video file. - -**⚠️ Important:** **replace the placeholder in below command with an actual file path in your system**. - -```bash -export VIDEO_FILE= -curl -X "POST" \ - "http://localhost:8800/v1/files" \ - -H "accept: application/json" \ - -H "Content-Type: multipart/form-data" \ - -F "file=@$VIDEO_FILE;type=video/mp4" -``` - -You'll get a response 200 with a json body: -{ - "data": { - "id": "577a9f11-2b24-4db8-82c8-2601e0c2b6e4", - "path": "/tmp/assets/577a9f11-2b24-4db8-82c8-2601e0c2b6e4/its_1920_30s.mp4", - "size": 3472221, - "duration": 30000000000, - "contentType": "video/mp4" - } -} - -Similarly, for live stream input, you need to first add a live stream as an asset. - -**⚠️ Important:** **replace the placeholder in below command with an actual RTSP address**. - -```bash -export LIVE_STREAM= -curl -X "POST" \ - "http://localhost:8800/v1/streams" \ - -H "accept: application/json" \ - -H "Content-Type: application/json" \ - -d "{\"url\": \"$LIVE_STREAM\", \"name\": \"my-stream\"}" -``` - -Run the client.py with the returned asset id and specify the frames per chunk and number of chunks to extract: - -```bash -cd builder/samples/qwen -python client.py --videos "577a9f11-2b24-4db8-82c8-2601e0c2b6e4?frames=8&chunks=1" -``` - -You can also optionally specify the frame interval and scaling parameters: - -```bash -# Extract 1 chunk with 8 frames at the interval of 0.5s, and resize it to 640x260, then do summarization -python client.py --videos "577a9f11-2b24-4db8-82c8-2601e0c2b6e4?frames=8&chunks=1&interval=500000000&scaling=640x360" -``` - -Or use raw json payload with curl to get the result of all the chunks using "x-ndjson": - -```bash -curl -X 'POST' \ - 'http://localhost:8800/v1/chat/completions' \ - -H 'accept: application/x-ndjson' \ - -H 'Content-Type: application/json' \ - -d '{ - "model": "qwen3_vl", - "messages": [ - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Please describe the video in detail." - }, - { - "type": "video", - "video": "577a9f11-2b24-4db8-82c8-2601e0c2b6e4?frames=8" - } - ] - } - ], - "max_tokens": 200 -}' -``` diff --git a/tools/inference_builder/builder/samples/vllm/openapi.yaml b/tools/inference_builder/builder/samples/vllm/openapi.yaml deleted file mode 100644 index 8f444d5f..00000000 --- a/tools/inference_builder/builder/samples/vllm/openapi.yaml +++ /dev/null @@ -1,1367 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -openapi: 3.1.0 -info: - title: NVIDIA NIM for VLMs - summary: Accelerated VLM inference for NVIDIA GPUs. - version: 1.1.2 -paths: - /v1/health/ready: - get: - tags: - - Health - summary: Health Ready - description: Provide your implementation of readiness to know when container ready to accept traffic - operationId: health_ready_v1_health_ready_get - responses: - '200': - description: Successful Response - content: - application/json: - schema: {} - /v1/chat/completions: - post: - summary: OpenAI-compatible chat endpoint - operationId: create_chat_completion_v1_chat_completions_post - parameters: - - name: content-type - in: header - required: false - schema: - anyOf: - - type: string - - type: 'null' - title: Content-Type - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NIMLLMChatCompletionRequest' - responses: - '200': - description: Successful Response - content: - application/json: - schema: - anyOf: - - $ref: '#/components/schemas/NIMLLMChatCompletionResponse' - - $ref: '#/components/schemas/NIMLLMChatCompletionStreamResponse' - title: Response Create Chat Completion V1 Chat Completions Post - '400': - description: Received an invalid request possibly containing unsupported - or out-of-range parameter values. - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - '404': - description: The requested model does not exist. - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - '500': - description: Internal Server Error - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - '415': - description: Unsupported Media Type - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorResponse' - '422': - description: Validation Error - content: - application/json: - schema: - $ref: '#/components/schemas/HTTPValidationError' - /v1/files: - post: - tags: - - Files - summary: Upload a media file that can be used as inference input. - description: Upload media files to be used as inference input. Currently, only images upto 50 MB are supported. - operationId: add_media_file - requestBody: - required: true - content: - multipart/form-data: - schema: - $ref: '#/components/schemas/AddFileRequest' - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/AddFileResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - get: - tags: - - Files - summary: Returns a list of the uploaded files. - description: Returns a list that includes ID, file name, size, purpose, file size, and media type for the uploaded files. - operationId: list_media_files - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/ListFilesResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - /v1/files/{file_id}: - delete: - tags: - - Files - summary: Delete a uploaded file. - description: Deletes an uploaded file based on ID. - operationId: delete_media_file - parameters: - - name: file_id - in: path - required: true - schema: - type: string - maxLength: 36 - pattern: '[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?4[0-9a-fA-F]{3}-?[89abAB][0-9a-fA-F]{3}-?[0-9a-fA-F]{12}' - description: File having 'file_id' to be deleted. - title: File Id - description: File having 'file_id' to be deleted. - responses: - "200": - description: Successful Response. - content: - application/json: - schema: - $ref: '#/components/schemas/DeleteFileResponse' - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' -components: - schemas: - BaseModel: - properties: {} - type: object - title: BaseModel - ChatCompletionLogProb: - properties: - token: - type: string - title: Token - logprob: - type: number - title: Logprob - default: -9999.0 - bytes: - anyOf: - - items: - type: integer - type: array - - type: 'null' - title: Bytes - additionalProperties: false - type: object - required: - - token - title: ChatCompletionLogProb - ChatCompletionLogProbs: - properties: - content: - anyOf: - - items: - $ref: '#/components/schemas/ChatCompletionLogProbsContent' - type: array - - type: 'null' - title: Content - additionalProperties: false - type: object - title: ChatCompletionLogProbs - ChatCompletionLogProbsContent: - properties: - token: - type: string - title: Token - logprob: - type: number - title: Logprob - default: -9999.0 - bytes: - anyOf: - - items: - type: integer - type: array - - type: 'null' - title: Bytes - top_logprobs: - items: - $ref: '#/components/schemas/ChatCompletionLogProb' - type: array - title: Top Logprobs - additionalProperties: false - type: object - required: - - token - title: ChatCompletionLogProbsContent - ChatCompletionNamedFunction: - properties: - name: - type: string - title: Name - additionalProperties: false - type: object - required: - - name - title: ChatCompletionNamedFunction - ChatCompletionNamedToolChoiceParam: - properties: - function: - $ref: '#/components/schemas/ChatCompletionNamedFunction' - type: - type: string - const: function - title: Type - default: function - additionalProperties: false - type: object - required: - - function - title: ChatCompletionNamedToolChoiceParam - ChatCompletionResponseChoice: - properties: - index: - type: integer - title: Index - message: - $ref: '#/components/schemas/ChatMessage' - logprobs: - anyOf: - - $ref: '#/components/schemas/ChatCompletionLogProbs' - - type: 'null' - finish_reason: - anyOf: - - type: string - enum: - - stop - - length - - tool_calls - - type: 'null' - title: Finish Reason - default: stop - stop_reason: - anyOf: - - type: integer - - type: string - - type: 'null' - title: Stop Reason - additionalProperties: false - type: object - required: - - index - - message - title: ChatCompletionResponseChoice - ChatCompletionResponseStreamChoice: - properties: - index: - type: integer - title: Index - delta: - $ref: '#/components/schemas/DeltaMessage' - logprobs: - anyOf: - - $ref: '#/components/schemas/ChatCompletionLogProbs' - - type: 'null' - finish_reason: - anyOf: - - type: string - enum: - - stop - - length - - tool_calls - - type: 'null' - title: Finish Reason - stop_reason: - anyOf: - - type: integer - - type: string - - type: 'null' - title: Stop Reason - additionalProperties: false - type: object - required: - - index - - delta - title: ChatCompletionResponseStreamChoice - ChatCompletionToolsParam: - properties: - type: - type: string - const: function - title: Type - default: function - function: - $ref: '#/components/schemas/FunctionDefinition' - additionalProperties: false - type: object - required: - - function - title: ChatCompletionToolsParam - ChatMessage: - properties: - role: - type: string - title: Role - content: - anyOf: - - type: string - - type: 'null' - title: Content - tool_calls: - anyOf: - - items: - $ref: '#/components/schemas/ToolCall' - type: array - - type: 'null' - title: Tool Calls - additionalProperties: false - type: object - required: - - role - title: ChatMessage - DeltaMessage: - properties: - role: - anyOf: - - type: string - - type: 'null' - title: Role - content: - anyOf: - - type: string - - type: 'null' - title: Content - tool_calls: - anyOf: - - items: - $ref: '#/components/schemas/ToolCall' - type: array - - type: 'null' - title: Tool Calls - additionalProperties: false - type: object - title: DeltaMessage - ErrorResponse: - properties: - object: - type: string - title: Object - default: error - message: - type: string - title: Message - type: - type: string - title: Type - param: - anyOf: - - type: string - - type: 'null' - title: Param - code: - type: integer - title: Code - additionalProperties: false - type: object - required: - - message - - type - - code - title: ErrorResponse - FunctionCall: - properties: - name: - anyOf: - - type: string - - type: 'null' - title: Name - default: '' - arguments: - anyOf: - - type: string - - type: 'null' - title: Arguments - default: '' - additionalProperties: false - type: object - title: FunctionCall - FunctionDefinition: - properties: - name: - type: string - title: Name - description: - anyOf: - - type: string - - type: 'null' - title: Description - parameters: - anyOf: - - type: object - - type: 'null' - title: Parameters - additionalProperties: false - type: object - required: - - name - title: FunctionDefinition - HTTPValidationError: - properties: - detail: - items: - $ref: '#/components/schemas/ValidationError' - type: array - title: Detail - type: object - title: HTTPValidationError - ImageURL: - properties: - url: - type: string - title: Url - type: object - required: - - url - title: ImageURL - Logprob: - properties: - logprob: - type: number - title: Logprob - rank: - anyOf: - - type: integer - - type: 'null' - title: Rank - decoded_token: - anyOf: - - type: string - - type: 'null' - title: Decoded Token - type: object - required: - - logprob - title: Logprob - NIMLLMChatCompletionMessage: - properties: - role: - $ref: '#/components/schemas/Role' - description: The role of the message's author. - content: - anyOf: - - type: string - minLength: 1 - - items: - anyOf: - - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartImage' - - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartText' - - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartVideo' - - $ref: '#/components/schemas/NIMVLMChatCompletionContentPartVideoStreaming' - type: array - title: Content - description: "The contents of the message.\n
To pass images (only\ - \ with role=`user`):\n
- When content is a string, image\ - \ can be passed together with the text with `img` HTML tags that wraps\n\ - \ an image URL (``),\n base64 encoded\ - \ image data (``),\n or an NVCF asset ID (``)\n when the container is hosted in NVCF and the payload exceeds\ - \ 200KB.\n or http link (`https:{image_link}`)\n
\ - \ - When content is a list of objects, images can be passed as objects\ - \ with type=`image_url`.\n
- In both cases, images can\ - \ be PNG, JPG or JPEG.\n
To pass videos (only with role=`user`):\n\ - \
- When content is a string, video can be passed together\ - \ with the text with `video` HTML tags that wraps\n a video URL\ - \ (`

xWLH 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 diff --git a/tools/inference_builder/builder/samples/changenet/ib_client.py b/tools/inference_builder/builder/samples/changenet/ib_client.py deleted file mode 100644 index 163a50e3..00000000 --- a/tools/inference_builder/builder/samples/changenet/ib_client.py +++ /dev/null @@ -1,84 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import argparse -import requests, base64 -import time -import numpy as np -import os -import io -from PIL import Image - -API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC="shfklsjlfjsljgl" - - -def main(host , port, files, out_format): - if not files: - print("Need the file path for inference") - return - - # invoke_url = "http://localhost:8001/inference" - invoke_url = "http://" + host + ":" + port + "/v1/infer" - - file_exts = [] - b64_images = [] - for file in files: - file_exts.append(os.path.splitext(file)[1][1:]) - with open(file, "rb") as f: - b64_images.append(base64.b64encode(f.read()).decode()) - -# assert len(image_b64) < 180_000, \ -# "To upload larger images, use the assets API (see docs)" - - headers = { - "Authorization": "Bearer $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC", - "Accept": "application/json", - # "NVCF-ASSET-DIR": "some-temp-dir", - # "NVCF-FUNCTION-ASSET-IDS": "udjflsjo-jfoisjof-lsdfjofdj" - } - - payload = { - "input": [f"data:image/{e};base64,{i}" for e, i in zip(file_exts, b64_images)], - "model": "nvidia/changenet" - } - start_time = time.time() - response = requests.post(invoke_url, headers=headers, json=payload) - infer_time = time.time() - start_time - print(response) - print(infer_time) - - if response.status_code == 200: - output = response.json() - print(f"Usage: num_images= {output['usage']['num_images']}") - mask = base64.b64decode(output["data"]) - image_buffer = io.BytesIO(mask) - image = Image.open(image_buffer) - image.show() - - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - - parser.add_argument("--host", type=str, - help= "Server IP Address", default="0.0.0.0") - parser.add_argument("--port", type=str, - help="Server port", default="8000") - parser.add_argument("--file", type=str, help="File to send for inference", nargs='*', default=None) - parser.add_argument("--format", type=str, help="Output embedding format, integer or base64", - default="integer") - - args = parser.parse_args() - main(args.host, args.port, args.file, args.format) diff --git a/tools/inference_builder/builder/samples/changenet/openapi.yaml b/tools/inference_builder/builder/samples/changenet/openapi.yaml deleted file mode 100644 index 8f35e32c..00000000 --- a/tools/inference_builder/builder/samples/changenet/openapi.yaml +++ /dev/null @@ -1,248 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -openapi: 3.1.0 -info: - title: NVIDIA INFERENCE SERVICE API for nvidia/changenet - description: NVIDIA INFERENCE SERVICE API - version: 1.0.0 - termsOfService: https://nvidia.com/legal/terms-of-use - contact: - name: NVIDIA Support - url: https://help.nvidia.com/ - license: - name: NVIDIA AI Foundation Models Community License - url: https://docs.nvidia.com/ai-foundation-models-community-license.pdf -tags: - - name: "NVIDIA CHANGENET API" - description: Get a segmentation representation for the difference between two pictures. - - name: "Health" - description: Health check endpoints -paths: - "/v1/health/ready": - get: - tags: - - Health - summary: Health Ready - description: Provide your implementation of readiness to know when container ready to accept traffic - operationId: health_ready_v1_health_ready_get - responses: - '200': - description: Successful Response - content: - application/json: - schema: {} - "/v1/infer": - post: - tags: - - "NVIDIA ChangeNet API" - summary: Change detection on images. - description: "Invokes inference for the input images." - operationId: inference - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DetectionRequest' - required: true - responses: - "200": - description: Invocation is fulfilled. - content: - application/json: - schema: - $ref: '#/components/schemas/DetectionResponse' - "202": - description: Result is pending. Client should poll using the requestId. - content: - application/json: - example: {} - schema: {} - headers: - NVCF-REQID: - description: requestId required for pooling. - schema: - type: string - format: uuid - maxLength: 36 - NVCF-STATUS: - description: Invocation status. - schema: - type: string - format: ^[a-zA-Z-]{1,64}$ - maxLength: 64 - "402": - description: Payment Required. - content: - application/json: - schema: - properties: - detail: - type: string - maxLength: 256 - format: ^[a-zA-Z-]{1,64}$ - description: Contains specific information related to the error and why it occurred. - example: You have reached your limit of credits. - type: object - title: PaymentRequiredError - "422": - description: Validation failed, provided entity could not be processed. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - example: - type: urn:nvcf-worker-service:problem-details:unprocessable-entity - title: Unprocessable Entity - status: 422 - detail: string - instance: /v2/nvcf/pexec/functions/9446dad0-ff4f-46d1-89f4-726e113cfca0 - requestId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - "500": - description: The invocation ended with an error. - content: - application/json: - schema: - $ref: '#/components/schemas/Errors' - example: - type: urn:nvcf-worker-service:problem-details:internal-server-error - title: Internal Server Error - status: 500 - detail: string - instance: /v2/nvcf/pexec/functions/9446dad0-ff4f-46d1-89f4-726e113cfca0 - requestId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 -security: - - Token: [] -components: - securitySchemes: - Token: - type: http - scheme: bearer - schemas: - DetectionRequest: - additionalProperties: false - properties: - input: - type: array - items: - type: string - pattern: ^.*$ - maxLength: 4294967296 - maxItems: 2 - minItems: 2 - title: Input - description: 'The two of images that you want to detect change - for. Images should be in form of `data:image/{format};base64,{base64encodedimage}`. - For NVCF deployment, if the size of an image is more than 200KB, it needs to be uploaded to - a presigned S3 bucket using NVCF Asset APIs. Once uploaded you can refer - to it using the following format: ``. Accepted formats are `jpg`, `png` and `jpeg`.' - model: - type: string - enum: [nvidia/changenet] - title: Model - description: ID of the mask model. - examples: - - nvidia/changenet - type: object - required: - - input - - model - title: DetectionRequest - description: Input images for the inference request. - DetectionResponse: - type: object - properties: - data: - type: string - description: base64 encoded image for change representation - pattern: ^.*$ - maxLength: 4294967296 - model: - type: string - description: Model used to generate masks. - example: nvidia/changenet - title: Model - const: nvidia/changenet - usage: - $ref: '#/components/schemas/Usage' - description: Usage statistics for the masks request. - examples: - - num_images: 1 - additionalProperties: false - required: - - data - - usage - - model - title: DetectionResponse - description: Response schema for the inference request. - Usage: - properties: - num_images: - type: integer - format: int32 - title: Num Images - minimum: 0 - maximum: 64 - description: Number of images processed. - additionalProperties: false - type: object - required: - - num_images - title: Usage - description: Usage information for the inference request. - Errors: - properties: - type: - type: string - format: "^.{1, 128}$" - maxLength: 128 - description: Error type - title: - type: string - format: "^.{1, 128}$" - maxLength: 128 - description: Error title - status: - type: integer - format: int32 - minimum: 100 - maximum: 999 - description: Error status code - detail: - type: string - format: "^.{1, 1024}$" - maxLength: 1024 - description: Detailed information about the error - instance: - type: string - format: "^.{1, 256}$" - maxLength: 256 - description: Function instance used to invoke the request - requestId: - type: string - format: uuid - maxLength: 36 - description: UUID of the request - type: object - required: - - type - - title - - status - - detail - - instance - - requestId - title: InvokeError diff --git a/tools/inference_builder/builder/samples/changenet/payloads/payloads.jsonl b/tools/inference_builder/builder/samples/changenet/payloads/payloads.jsonl deleted file mode 100644 index 76efd9cd..00000000 --- a/tools/inference_builder/builder/samples/changenet/payloads/payloads.jsonl +++ /dev/null @@ -1 +0,0 @@ -{"input": ["data:image/jpeg;base64,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", "data:image/jpeg;base64,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"], "model": "nvidia/changenet"} diff --git a/tools/inference_builder/builder/samples/changenet/processors.py b/tools/inference_builder/builder/samples/changenet/processors.py deleted file mode 100644 index e0b1104c..00000000 --- a/tools/inference_builder/builder/samples/changenet/processors.py +++ /dev/null @@ -1,107 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import numpy as np -import cvcuda -import torch -from PIL import Image -from io import BytesIO -import base64 - -class PreprocessorCvcuda: - """This module converts the input RGB frame into the format expected by the model.""" - name = "changenet-normalizer" - def __init__(self, config): - self.device_id = config["device_id"] - self.network_size = config['network_size'] - self.mean_tensor = torch.Tensor([0.5, 0.5, 0.5]) - self.mean_tensor = self.mean_tensor.reshape(1, 1, 1, 3).cuda(self.device_id) - self.mean_tensor = cvcuda.as_tensor(self.mean_tensor, "NHWC") - self.stddev_tensor = torch.Tensor([0.5, 0.5, 0.5]) - self.stddev_tensor = self.stddev_tensor.reshape(1, 1, 1, 3).cuda(self.device_id) - self.stddev_tensor = cvcuda.as_tensor(self.stddev_tensor, "NHWC") - - def __call__(self, *args): - images = [arg for arg in args] - frame_nhwc = torch.stack(images) - resized = cvcuda.resize( - cvcuda.as_tensor(frame_nhwc, "NHWC"), - ( - frame_nhwc.shape[0], - self.network_size[1], - self.network_size[0], - frame_nhwc.shape[3], - ), - cvcuda.Interp.LINEAR, - ) - - # Convert to floating point range 0-1. - normalized = cvcuda.convertto(resized, np.float32, scale=1 / 255) - - # Normalize with mean and std-dev. - normalized = cvcuda.normalize( - normalized, - base=self.mean_tensor, - scale=self.stddev_tensor, - flags=cvcuda.NormalizeFlags.SCALE_IS_STDDEV, - ) - - # Convert it to NCHW layout and return it. - normalized = cvcuda.reformat(normalized, "NCHW") - result = torch.as_tensor(normalized.cuda(), device=f"cuda:{self.device_id}") - result = list(torch.unbind(result, dim=0)) - - return tuple(result) - -class PostprocessorCvcuda: - name = "changenet-masking" - def __init__(self, config): - self.color_map = { - "0": torch.ByteTensor([255, 255, 255]), - "1": torch.ByteTensor([255, 165, 0]), - "2": torch.ByteTensor([230, 30, 100]), - "3": torch.ByteTensor([70, 140, 0]), - "4": torch.ByteTensor([218, 112, 214]), - "5": torch.ByteTensor([0, 170, 240]), - "6": torch.ByteTensor([127, 235, 170]), - "7": torch.ByteTensor([230, 80, 0]), - "8": torch.ByteTensor([205, 220, 57]), - "9": torch.ByteTensor([218, 165, 32]), - } - self.network_size = config['network_size'] - self.n_class = config['n_class'] - - def get_color_coded_img(self, vis, num_class=10): - color_coded = torch.ones( - (self.network_size[1], self.network_size[0], 3), - dtype=torch.uint8, - ) - for idx in range(num_class): - filtered_indices = vis == idx - color_coded[filtered_indices] = self.color_map[str(idx)] - return color_coded - - def __call__(self, *args): - if not (isinstance(args[0], torch.Tensor) or isinstance(args[0], np.ndarray)): - raise Exception(f"Unsupported type {type(args[0])}") - output = args[0] if isinstance(args[0], torch.Tensor) else torch.from_numpy(args[0]) - pred = torch.argmax(output, dim=0, keepdim=True) - pred = pred.squeeze(0) - image_tensor = self.get_color_coded_img(pred, self.n_class) - buffer = BytesIO() - image = Image.fromarray(image_tensor.numpy()) - image.save(buffer, format="JPEG") - return np.array([base64.b64encode(buffer.getvalue())]) diff --git a/tools/inference_builder/builder/samples/changenet/test_0.jpg b/tools/inference_builder/builder/samples/changenet/test_0.jpg deleted file mode 100644 index f99d78af18e3d81bdc3842cd3cd3ebd1fcb89506..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32942 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 WX#n400NO$gV~9})I`{DJ;{O4gREF39 diff --git a/tools/inference_builder/builder/samples/changenet/test_config.json b/tools/inference_builder/builder/samples/changenet/test_config.json deleted file mode 100644 index 5748c00d..00000000 --- a/tools/inference_builder/builder/samples/changenet/test_config.json +++ /dev/null @@ -1,58 +0,0 @@ -[ - { - "name": "changenet_inference", - "description": "Test ChangeNet inference for change detection on images", - "build_args": { - "TEST_APP_NAME": "changenet", - "CACHE_BUSTER": "changenet_test", - "APP_YAML_PATH": "trt_changenet.yaml", - "OUTPUT_DIR": ".", - "PROCESSORS_PATH": "processors.py", - "SERVER_TYPE": "fastapi", - "OPENAPI_SPEC": "openapi.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 600, - "env": { - "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", - "MODEL_REPO": "/workspace/model_repo", - "HTTP_PORT": "8003" - }, - "volumes": { - "/tmp/model-repo/visual_changenet": "/workspace/model_repo/visual_changenet/1" - }, - "test_requests": [ - { - "payload_path": "payloads/payloads.jsonl", - "method": "POST", - "headers": { - "Content-Type": "application/json" - } - } - ], - "endpoint": "/v1/infer", - "error_detection": { - "enabled": true, - "patterns": [ - "ERROR", - "Exception:", - "Traceback", - "Fatal error", - "CRITICAL" - ] - }, - "prerequisite_script": null, - "models": { - "visual_changenet": { - "source": "NGC", - "target": "/tmp/model-repo", - "path": "nvidia/tao/visual_changenet_segmentation_landsatscd", - "version": "deployable_v1.2", - "post_script": "docker run --rm --gpus all -v $(pwd):/changenet nvcr.io/nvidia/tensorrt:25.12-py3 trtexec --onnx=/changenet/changenet_768.onnx --saveEngine=/changenet/model.plan --fp16" - } - } - } - } -] - diff --git a/tools/inference_builder/builder/samples/changenet/trt_changenet.yaml b/tools/inference_builder/builder/samples/changenet/trt_changenet.yaml deleted file mode 100644 index c1efecd1..00000000 --- a/tools/inference_builder/builder/samples/changenet/trt_changenet.yaml +++ /dev/null @@ -1,109 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -name: "changenet" -model_repo: /workspace/model_repo/ - -input: - - name: "reference_image" - data_type: TYPE_CUSTOM_IMAGE_BASE64 - dims: [ -1 ] - optional: false - - - name: "test_image" - data_type: TYPE_CUSTOM_IMAGE_BASE64 - dims: [ -1 ] - optional: false - -output: - - name: "output" - data_type: TYPE_STRING - dims: [ -1 ] - -server: - responders: - infer: - operation: inference - requests: - DetectionRequest: > - { - "reference_image": [{{ request.input[0]|tojson }}], - "test_image": [{{ request.input[1]|tojson }}] - } - responses: - DetectionResponse: > - { - "data": {{ response.output[0]|tojson }}, - "usage": { "num_images": 1}, - "model": "nvidia/changenet" - } - healthy_ready: - operation: health_ready_v1_health_ready_get - -models: -- name: visual_changenet - backend: "triton/tensorrt" - max_batch_size: 1 - parameters: - FORCE_CPU_ONLY_INPUT_TENSORS: "no" - input: - - name: input0 - data_type: TYPE_FP32 - dims: [3, 768, 768] - - name: input1 - data_type: TYPE_FP32 - dims: [3, 768, 768] - output: - - name: output_final - data_type: TYPE_FP32 - dims: [10,768, 768] - - name: output0 - data_type: TYPE_FP32 - dims: [10, 48, 48] - - name: output1 - data_type: TYPE_FP32 - dims: [10, 48, 48] - - name: output2 - data_type: TYPE_FP32 - dims: [10, 96, 96] - - name: output3 - data_type: TYPE_FP32 - dims: [10, 192, 192] - preprocessors: - - kind: "custom" - name: "changenet-normalizer" - input: ["reference_image", "test_image"] - output: ["input0", "input1"] - config: - network_size: [768, 768] - postprocessors: - - kind: "custom" - name: "changenet-masking" - input: ["output_final"] - output: ["output_final"] - config: - network_size: [768, 768] - n_class: 10 - -# route map -# A route is defined as -# Source and destination should be defined as -# Model name is optional, so <:["TENSOR_NAME1", "TENSOR_NAME2", ...]> is valid -# Tensor list is optional too and is valid -routes: { - ':["reference_image", "test_image"]': 'visual_changenet', - 'visual_changenet:["output_final"]': ':["output"]', -} diff --git a/tools/inference_builder/builder/samples/cradio/Dockerfile b/tools/inference_builder/builder/samples/cradio/Dockerfile deleted file mode 100644 index de47c315..00000000 --- a/tools/inference_builder/builder/samples/cradio/Dockerfile +++ /dev/null @@ -1,102 +0,0 @@ -# Dockerfile for ds-cradio: PeopleNet Transformer + C-RADIOv3-H pipeline -# Uses DeepStream/nvinfer for detection and polygraphy (TensorRT) for embeddings - -FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS inference_base - -# Install Python dependencies required by this pipeline. -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install \ - torch==2.7.0 \ - numpy==1.26.4 \ - omegaconf==2.3.0 \ - transformers==4.54.1 \ - opencv-python - -# Build TensorRT OSS to provide customized plugins (e.g. for PeopleNet -# Transformer ONNX model) and the trtexec tool. -ARG TRT_VERSION_MAJOR=10 -ARG TRT_VERSION_MINOR=14 -ARG TRT_VERSION_PATCH=1 -ARG TRT_VERSION_BUILD=48 - -ARG TRT_VERSION_MAJOR_MINOR=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR -ARG TRT_VERSION_MAJOR_MINOR_PATCH=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR.$TRT_VERSION_PATCH -ARG TRT_VERSION_FULL=$TRT_VERSION_MAJOR_MINOR_PATCH.$TRT_VERSION_BUILD - -ARG CUDA_VERSION_MAJOR=13 -ARG CUDA_VERSION_MINOR=1 -ARG CUDA_VERSION_PATCH=80 -ARG CUDA_VERSION_BUILD=36836380_0 -ARG CUDA_VERSION_MAJOR_MINOR=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR -ARG CUDA_VERSION_FULL=$CUDA_VERSION_MAJOR_MINOR.$CUDA_VERSION_PATCH.$CUDA_VERSION_BUILD -ARG CUDNN_VERSION=9.17.0.29 - -ENV TRT_VERSION=$TRT_VERSION_FULL+cuda$CUDA_VERSION_FULL - -WORKDIR /tmp -ENV TRT_TAG="release/$TRT_VERSION_MAJOR_MINOR" -RUN mkdir trt_oss_src && \ - cd trt_oss_src && \ - echo "$PWD Building TRT OSS..." && \ - git clone -b $TRT_TAG https://github.com/nvidia/TensorRT TensorRT && \ - cd TensorRT && \ - git submodule update --init --recursive && \ - mkdir -p build && cd build && \ - cmake .. \ - -DGPU_ARCHS="80;86;90;100;120" \ - -DTRT_LIB_DIR=/usr/lib/x86_64-linux-gnu \ - -DTRT_OUT_DIR=/tmp/out \ - -DCUDA_VERSION=$CUDA_VERSION_MAJOR_MINOR \ - -DCUDNN_VERSION=$CUDNN_VERSION \ - && for i in {1..50}; do make -j 12 && break; done -RUN cp /tmp/out/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/x86_64-linux-gnu/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ - cp /tmp/out/libnvinfer_plugin_static.a /usr/lib/x86_64-linux-gnu/libnvinfer_plugin_static.a && \ - cp /tmp/out/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/x86_64-linux-gnu/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ - cp /tmp/out/trtexec /usr/local/bin/ && \ - cd ../../../ && \ - rm -rf trt_oss_src - -# Build DeepStream TAO app post-processors (provides NvDsInferParseCustomDDETRTAO -# for PeopleNet Transformer). -ENV DS_TAO_APPS_REPO=https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git -ENV DS_TAO_APPS_TAG="master" -ARG CACHE_BUSTER=unique_value_to_bypass_docker_cache -RUN mkdir ds_tao_apps_src && \ - cd ds_tao_apps_src && \ - echo "$PWD Pulling DS TAO apps repo..." && \ - git clone -b $DS_TAO_APPS_TAG $DS_TAO_APPS_REPO ds_tao_apps && \ - cd ds_tao_apps/post_processor && \ - echo "$PWD Building DS TAO apps post processing..." && \ - CUDA_MODULE_LOADING=LAZY CUDA_VER=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR make && \ - [ -f libnvds_infercustomparser_tao.so ] && echo "$PWD post processing build successful" || echo "$PWD post processing build failed" && \ - cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib && \ - cd ../../../ && \ - rm -rf ds_tao_apps_src - -# Install Python dependencies for the polygraphy backend -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install --extra-index-url https://pypi.nvidia.com \ - Pillow==11.1.0 \ - timm \ - torchvision \ - einops \ - onnx \ - onnxscript \ - tensorrt==10.14.1.48.post1 \ - polygraphy==0.49.24 - -WORKDIR /workspace - -# Copy the generated inference pipeline -ADD ds-cradio.tgz /workspace - -# Copy the ONNX export script (for model preparation inside container) -COPY export_onnx.py /workspace/export_onnx.py - -# Set environment variables required for DeepStream runtime -ENV GST_PLUGIN_PATH=/opt/nvidia/deepstream/deepstream/lib/gst-plugins -ENV LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream/lib:$LD_LIBRARY_PATH -ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes - -ENTRYPOINT ["python3", "/workspace/__main__.py"] -CMD [] diff --git a/tools/inference_builder/builder/samples/cradio/README.md b/tools/inference_builder/builder/samples/cradio/README.md deleted file mode 100644 index 11b097f2..00000000 --- a/tools/inference_builder/builder/samples/cradio/README.md +++ /dev/null @@ -1,255 +0,0 @@ -# PeopleNet Transformer + C-RADIOv3-H Pipeline - -A two-stage serverless inference pipeline that detects people/objects in images using PeopleNet Transformer (DeepStream/nvinfer), then generates per-detection embeddings using C-RADIOv3-H (TensorRT/polygraphy). The pipeline runs as a CLI application (serverless, no HTTP server). - -We provide a sample Dockerfile for the example, which you can use to build a Docker image and run inference on any x86 system with an NVIDIA Ampere, Hopper, or Blackwell GPU. - -## Pipeline Structure - -``` -Input (image path + MIME) - | - v - +--------------+ - | PeopleNet | DeepStream/nvinfer backend - | Transformer | - Decodes image (DS_IMAGE) - | | - Runs detection (DS_METADATA) - | | - C++ parser: NvDsInferParseCustomDDETRTAO - +--------------+ - | | - | +---> detections (direct to output) - | {shape, bboxes, probs, labels, ...} - v - BboxCropPostprocessor - - Crops each bbox from decoded frame - - Resizes to 256x256 (bicubic) - - CLIP mean/std normalization - - Returns N [3, 256, 256] crops (batched by model operator) - | - v - +--------------+ - | C-RADIOv3-H | polygraphy/TensorRT backend - | | - Batch up to 16 crops - +--------------+ - | - v - Output: - - detections: {shape, bboxes, probs, labels, seg_maps, objects, timestamp} - - summary: [N, 3840] per-detection embeddings - - spatial_features: [N, 256, 1280] per-detection spatial tokens -``` - -### Data Flow - -``` -route: input[media_url, mime] --> peoplenet -route: peoplenet[pixel_values] --> cradio_v3_h -route: peoplenet[detections] --> output -route: cradio_v3_h[summary, spatial_features] --> output -``` - -### Custom Processors - -- **BboxCropPostprocessor** (postprocessor on peoplenet): Crops detected bounding boxes from the decoded frame, resizes/normalizes for C-RADIO input, and returns a list of `[3, 256, 256]` tensors. The model operator batches them into `[N, 3, 256, 256]` for the TRT engine. - -# Prerequisites - -**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. - -Refer to the [top-level README](../../../README.md#getting-started) for base setup (virtual environment, protobuf, etc.). - -Before downloading the model files, set up your model repository: - -```bash -mkdir -p ~/.cache/model-repo && chmod 777 ~/.cache/model-repo -export MODEL_REPO=~/.cache/model-repo -``` - -# Download Models - -## PeopleNet Transformer (NGC) - -The PeopleNet Transformer model is available from NGC: https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/peoplenet_transformer - -Download using the NGC CLI and move the files into the expected model directory: - -```bash -ngc registry model download-version \ - nvidia/tao/peoplenet_transformer:deployable_v1.1 \ - --dest /tmp -mv /tmp/peoplenet_transformer_vdeployable_v1.1 $MODEL_REPO/peoplenet -``` - -Run `ls $MODEL_REPO/peoplenet/` and verify you have `resnet50_peoplenet_transformer_op17.onnx`. - -Copy the nvinfer config and labels file to the model directory: - -```bash -cp builder/samples/ds_app/detection/peoplenet_transformer/nvdsinfer_config.yaml \ - builder/samples/ds_app/detection/peoplenet_transformer/labels.txt \ - $MODEL_REPO/peoplenet/ -``` - -**Note:** The ONNX model uses custom TensorRT plugins. The Dockerfile builds TRT OSS from source to provide these plugins. The TensorRT engine is built automatically by DeepStream on first run. - -**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model. - -## C-RADIOv3-H (HuggingFace) - -Make sure you have the HuggingFace CLI installed and are logged in: - -```bash -pip install huggingface_hub -hf auth login -``` - -Or set the `HF_TOKEN` environment variable: - -```bash -export HF_TOKEN= -``` - -Then download the model: - -```bash -git lfs install -git clone https://huggingface.co/nvidia/C-RADIOv3-H $MODEL_REPO/cradio_v3_h -``` - -**Note:** ONNX export and TRT engine build for this model happen after the Docker image is built, since they require the GPU and container environment. See [Export C-RADIOv3-H ONNX & Build TRT Engine](#export-c-radiov3-h-onnx--build-trt-engine) below. - -# Build the Inference Pipeline - -```bash -source .venv/bin/activate -python builder/main.py builder/samples/cradio/ds_cradio.yaml \ - -c builder/samples/cradio/processors.py \ - -o builder/samples/cradio \ - --server-type serverless -t -``` - -The `-t` flag creates `ds-cradio.tgz` in the output directory (from the `name` in `ds_cradio.yaml`). The Dockerfile expects this tarball. - -# Build the Docker Image - -```bash -docker build -f builder/samples/cradio/Dockerfile -t cradio:latest builder/samples/cradio -``` - -# Export C-RADIOv3-H ONNX & Build TRT Engine - -## Export to ONNX - -Run the export script inside the container (requires GPU): - -```bash -docker run --rm --gpus all \ - -v $MODEL_REPO:/models \ - -v $MODEL_REPO/cradio_v3_h:/root/.cache/huggingface/modules/transformers_modules/cradio_v3_h \ - --entrypoint python3 \ - cradio:latest /workspace/export_onnx.py \ - --output-dir /models/cradio_v3_h \ - --resolution 256 \ - --model-path /models/cradio_v3_h -``` - -## Build TensorRT Engine - -Build the TensorRT engine with polygraphy: - -```bash -docker run --rm --gpus all \ - -v $MODEL_REPO:/models \ - --entrypoint polygraphy \ - cradio:latest convert /models/cradio_v3_h/model.onnx \ - --fp16 \ - --trt-min-shapes pixel_values:[1,3,256,256] \ - --trt-opt-shapes pixel_values:[8,3,256,256] \ - --trt-max-shapes pixel_values:[16,3,256,256] \ - -o /models/cradio_v3_h/model.plan -``` - -Run `ls $MODEL_REPO/cradio_v3_h/model.plan` to verify the engine was created. - -## Automated Script - -Alternatively, `prepare_engine.sh` automates both steps (skips if outputs already exist): - -```bash -bash builder/samples/cradio/prepare_engine.sh cradio:latest $MODEL_REPO -``` - -This is the same script used by the CI test via `prerequisite_script` in `test_config.json`. - -# Run Inference - -Run inference on a single image (output to stdout): - -```bash -docker run --rm --gpus all \ - -v $MODEL_REPO:/models \ - -e MODEL_REPO=/models \ - cradio:latest \ - --media-url --mime image/jpeg -s stdout -``` - -To save the output to a file: - -```bash -docker run --rm --gpus all \ - -v $MODEL_REPO:/models \ - -e MODEL_REPO=/models \ - cradio:latest \ - --media-url --mime image/jpeg -s /models/output.json -``` - -**Important:** Replace `` with an actual image path accessible inside the container (e.g., mount a volume or use a path already in the image such as `/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg`). - -## Expected Output Format - -```json -{ - "detections": { - "shape": [544, 960], - "bboxes": [[x1, y1, x2, y2], ...], - "probs": [0.977, 0.953, ...], - "labels": [["Person"], ["Person"], ...], - "seg_maps": [], - "objects": [], - "timestamp": 1234567890 - }, - "summary": [[...3840 floats...], ...], - "spatial_features": [[[...1280 floats...] x 256], ...] -} -``` - -- `detections`: PeopleNet bounding boxes, labels, and probabilities -- `summary`: `[N, 3840]` per-detection embeddings (N = number of detections, max 16) -- `spatial_features`: `[N, 256, 1280]` per-detection spatial tokens -- When no objects are detected, N=1 with a dummy zero-crop embedding - -# Model Repository Layout - -``` -$MODEL_REPO/ - peoplenet/ - resnet50_peoplenet_transformer_op17.onnx - nvdsinfer_config.yaml - labels.txt - cradio_v3_h/ - model.plan # TensorRT engine (built from ONNX) - model.onnx # Exported ONNX model - ... # HuggingFace model files (used for ONNX export) -``` - -# Project Files - -| File | Description | -|------|-------------| -| `ds_cradio.yaml` | Pipeline configuration (models, routes, I/O types) | -| `processors.py` | Custom postprocessor (BboxCropPostprocessor) | -| `Dockerfile` | Docker build (DeepStream base + TRT OSS + TAO parser + pipeline) | -| `export_onnx.py` | C-RADIOv3-H ONNX export script | -| `prepare_engine.sh` | Automated ONNX export + TRT engine build (used by CI) | -| `nvdsinfer_config.yaml` | PeopleNet nvinfer runtime config (copy from `ds_app/detection/peoplenet_transformer/` to `$MODEL_REPO/peoplenet/`) | -| `test_config.json` | Test configuration for CI | diff --git a/tools/inference_builder/builder/samples/cradio/ds_cradio.yaml b/tools/inference_builder/builder/samples/cradio/ds_cradio.yaml deleted file mode 100644 index 4a235135..00000000 --- a/tools/inference_builder/builder/samples/cradio/ds_cradio.yaml +++ /dev/null @@ -1,85 +0,0 @@ -name: ds-cradio -model_repo: /models - -# Top-level input: image URL/path + MIME type. -input: - - name: "media_url" - data_type: TYPE_STRING - dims: [ -1 ] - - name: "mime" - data_type: TYPE_STRING - dims: [ -1 ] - -# Top-level output: detections + per-detection embeddings -output: - - name: "detections" - data_type: TYPE_CUSTOM_OBJECT - dims: [ -1 ] - - name: "summary" - data_type: TYPE_FP32 - dims: [-1, -1] - - name: "spatial_features" - data_type: TYPE_FP32 - dims: [-1, -1, -1] - -models: - # Stage 1: PeopleNet Transformer (object detection via DeepStream) - - name: peoplenet - backend: "deepstream/nvinfer" - max_batch_size: 1 - input: - - name: "image_bytes" - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [ -1 ] - - name: "media_url" - data_type: TYPE_CUSTOM_DS_MEDIA_URL - dims: [ -1 ] - - name: "mime" - data_type: TYPE_CUSTOM_DS_MIME - dims: [1] - output: - - name: "detections" - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - - name: "decoded_frames" - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [-1, 3] - parameters: - infer_config_path: - - nvdsinfer_config.yaml - inference_timeout: 10 - postprocessors: - # After DS inference: crop each detected bbox from decoded_frames, - # resize+normalize for C-RADIO, and return a stacked [N,3,256,256] - # tensor. Because peoplenet is on the implicit path the tensor - # flows directly to cradio via kwargs (no stack_tensors_in_dict). - - kind: "custom" - name: "bbox-crop-postprocessor" - input: ["detections", "decoded_frames"] - output: ["pixel_values", "detections"] - config: - max_crops: 16 # must match cradio_v3_h max_batch_size below - - # Stage 2: C-RADIOv3-H (per-crop embedding via TensorRT) - - name: cradio_v3_h - backend: "polygraphy" - max_batch_size: 16 - input: - - name: "pixel_values" - data_type: TYPE_FP32 - dims: [3, 256, 256] - output: - - name: "summary" - data_type: TYPE_FP32 - dims: [-1, -1] - - name: "spatial_features" - data_type: TYPE_FP32 - dims: [-1, -1, -1] - parameters: - tensorrt_engine: "model.plan" - -routes: - ':[\"media_url\", \"mime\"]': 'peoplenet' - 'peoplenet:[\"pixel_values\"]': 'cradio_v3_h' - 'peoplenet:[\"detections\"]': ':' - 'cradio_v3_h:[\"summary\", \"spatial_features\"]': ':' diff --git a/tools/inference_builder/builder/samples/cradio/export_onnx.py b/tools/inference_builder/builder/samples/cradio/export_onnx.py deleted file mode 100644 index 57dd58a1..00000000 --- a/tools/inference_builder/builder/samples/cradio/export_onnx.py +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -""" -Export C-RADIOv3-H model from HuggingFace to ONNX format. - -Usage: - python export_onnx.py --output-dir /models/cradio_v3_h --resolution 256 - -After export, build a TensorRT engine: - polygraphy convert /models/cradio_v3_h/model.onnx \ - --fp16 \ - -o /models/cradio_v3_h/model.plan -""" - -import argparse -import os -import sys -import torch - - -def validate_directory_path(dir_path): - """ - Validate directory path to prevent OS access violations. - Args: - dir_path: Directory path to validate - Returns: - str: Validated and sanitized directory path - Raises: - ValueError: If path is invalid or potentially dangerous - """ - if not dir_path: - raise ValueError("Directory path cannot be empty") - - try: - abs_path = os.path.abspath(dir_path) - resolved_path = os.path.realpath(abs_path) - except (OSError, ValueError) as e: - raise ValueError(f"Invalid directory path: {e}") - - if ".." in os.path.normpath(dir_path): - raise ValueError("Path traversal detected in directory path") - - invalid_chars = ['<', '>', ':', '"', '|', '?', '*'] - if any(char in dir_path for char in invalid_chars): - raise ValueError("Invalid characters in directory path") - - system_dirs = ['/etc', '/sys', '/proc', '/dev', '/boot', '/usr/bin', '/usr/sbin'] - for sys_dir in system_dirs: - if resolved_path.startswith(sys_dir): - raise ValueError(f"Access to system directory {sys_dir} is not allowed") - - return resolved_path - - -def export_onnx(output_dir: str, resolution: int = 256, model_path: str = None): - from transformers import AutoModel - - output_dir = validate_directory_path(output_dir) - if model_path is not None: - model_path = validate_directory_path(model_path) - if not isinstance(resolution, int) or resolution <= 0: - raise ValueError(f"Resolution must be a positive integer, got: {resolution}") - - os.makedirs(output_dir, exist_ok=True) - onnx_path = os.path.join(output_dir, "model.onnx") - - source = model_path or "nvidia/C-RADIOv3-H" - print(f"Loading C-RADIOv3-H model from {source}...") - # trust_remote_code=True is required by the C-RADIOv3-H architecture; - # model_path is sanitized by validate_directory_path() above. - model = AutoModel.from_pretrained( - source, trust_remote_code=True # nosec - required by model, path is validated - ) - model.train(False).cuda() - - dummy_input = torch.randn(1, 3, resolution, resolution, device="cuda") - - print(f"Exporting to ONNX: {onnx_path}") - torch.onnx.export( - model, - dummy_input, - onnx_path, - input_names=["pixel_values"], - output_names=["summary", "spatial_features"], - dynamic_axes={ - "pixel_values": {0: "batch_size"}, - "summary": {0: "batch_size"}, - "spatial_features": {0: "batch_size"}, - }, - opset_version=17, - ) - print(f"ONNX model saved to {onnx_path}") - print( - f"\nNext step - build TensorRT engine:\n" - f" polygraphy convert {onnx_path} --fp16 -o {os.path.join(output_dir, 'model.plan')}" - ) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Export C-RADIOv3-H to ONNX") - parser.add_argument( - "--output-dir", - default="/models/cradio_v3_h", - help="Directory for output ONNX and TensorRT engine files", - ) - parser.add_argument( - "--resolution", - type=int, - default=256, - help="Input image resolution (default: 256)", - ) - parser.add_argument( - "--model-path", - default=None, - help="Local path to the model directory (skips HF download)", - ) - try: - args = parser.parse_args() - except Exception as e: - print(f"Error: Argument parsing failed: {str(e)}") - sys.exit(1) - - try: - export_onnx(args.output_dir, args.resolution, args.model_path) - except ValueError as e: - print(f"Security validation failed: {e}") - sys.exit(1) diff --git a/tools/inference_builder/builder/samples/cradio/prepare_engine.sh b/tools/inference_builder/builder/samples/cradio/prepare_engine.sh deleted file mode 100644 index e774b933..00000000 --- a/tools/inference_builder/builder/samples/cradio/prepare_engine.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Prepare C-RADIOv3-H TensorRT engine: export ONNX and build engine. -# Usage: prepare_engine.sh -# -# Requires: model files at /cradio_v3_h (from HuggingFace) -# Produces: /cradio_v3_h/model.plan (TensorRT FP16 engine) - -set -e - -IMAGE="$1" -MODEL_REPO="${2:-/tmp/model-repo}" -MODEL_DIR="$MODEL_REPO/cradio_v3_h" -RESOLUTION=256 - -if [ -z "$IMAGE" ]; then - echo "Usage: $0 [model_repo]" - exit 1 -fi - -# Skip if engine already exists -if [ -f "$MODEL_DIR/model.plan" ]; then - echo "TensorRT engine already exists at $MODEL_DIR/model.plan, skipping" - exit 0 -fi - -# Check that model files exist -if [ ! -d "$MODEL_DIR" ]; then - echo "Error: Model directory not found: $MODEL_DIR" - exit 1 -fi - -echo "=== Step 1: Export ONNX ===" -if [ ! -f "$MODEL_DIR/model.onnx" ]; then - docker run --rm --gpus all \ - -v "$MODEL_REPO:/models" \ - -v "$MODEL_DIR:/root/.cache/huggingface/modules/transformers_modules/cradio_v3_h" \ - --entrypoint python3 \ - "$IMAGE" /workspace/export_onnx.py \ - --output-dir /models/cradio_v3_h \ - --resolution "$RESOLUTION" \ - --model-path /models/cradio_v3_h - echo "ONNX export complete: $MODEL_DIR/model.onnx" -else - echo "ONNX model already exists at $MODEL_DIR/model.onnx, skipping export" -fi - -echo "=== Step 2: Build TensorRT Engine ===" -docker run --rm --gpus all \ - -v "$MODEL_REPO:/models" \ - --entrypoint polygraphy \ - "$IMAGE" convert /models/cradio_v3_h/model.onnx \ - --fp16 \ - --trt-min-shapes "pixel_values:[1,3,${RESOLUTION},${RESOLUTION}]" \ - --trt-opt-shapes "pixel_values:[8,3,${RESOLUTION},${RESOLUTION}]" \ - --trt-max-shapes "pixel_values:[16,3,${RESOLUTION},${RESOLUTION}]" \ - -o /models/cradio_v3_h/model.plan - -echo "TensorRT engine built: $MODEL_DIR/model.plan" diff --git a/tools/inference_builder/builder/samples/cradio/processors.py b/tools/inference_builder/builder/samples/cradio/processors.py deleted file mode 100644 index 533aff9f..00000000 --- a/tools/inference_builder/builder/samples/cradio/processors.py +++ /dev/null @@ -1,97 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -import torch -import torch.nn.functional as F - - -class BboxCropPostprocessor: - """Postprocessor on PeopleNet: crop detected bboxes for C-RADIO. - - Runs after DeepStream inference on peoplenet. Receives the - DS_METADATA ``detections`` dict and the DS_IMAGE - ``decoded_frames`` (RGB uint8 HWC tensor extracted from the - DeepStream pipeline). - - For each detected bounding box the processor: - 1. Crops the bbox region from ``decoded_frames``. - 2. Resizes to 256x256 (bicubic). - 3. Normalises with CLIP mean/std. - - Returns: - * ``pixel_values`` — list of N ``[3, 256, 256]`` float32 tensors - * ``detections`` — the original detection dict (passthrough) - - The list of crops is passed to the cradio ModelOperator, which - batches them via ``stack_tensors_in_dict`` so the TRT engine - receives ``[N, 3, 256, 256]``. - - If no bboxes are detected a single dummy crop is produced so the - downstream model always receives a valid batch. - """ - name = "bbox-crop-postprocessor" - - def __init__(self, config): - # must not exceed cradio max_batch_size - self._max_crops = int(config.get("max_crops", 16)) - self._mean = torch.tensor([0.48145466, 0.4578275, 0.40821073]).view(3, 1, 1) - self._std = torch.tensor([0.26862954, 0.26130258, 0.27577711]).view(3, 1, 1) - - def __call__(self, detections, decoded_frames): - # decoded_frames is an RGB uint8 HWC tensor from DS_IMAGE output - if decoded_frames is None: - raise ValueError("decoded_frames is None") - if not isinstance(decoded_frames, torch.Tensor): - try: - decoded_frames = torch.as_tensor(decoded_frames) - except (TypeError, ValueError) as e: - raise ValueError(f"decoded_frames could not be converted to tensor: {e}") from e - if decoded_frames.ndim != 3: - raise ValueError( - f"decoded_frames must be 3D (HWC or CHW), got ndim={decoded_frames.ndim}, shape={decoded_frames.shape}" - ) - if decoded_frames.ndim == 3 and decoded_frames.shape[0] == 3: - decoded_frames = decoded_frames.permute(1, 2, 0) # CHW → HWC - # Expect HWC: (height, width, 3) - if decoded_frames.shape[2] != 3: - raise ValueError( - f"decoded_frames must have 3 channels (RGB), got shape={decoded_frames.shape}" - ) - frame_h, frame_w = decoded_frames.shape[0], decoded_frames.shape[1] - # -- Crop each bbox --------------------------------------------------- - bboxes = detections.get("bboxes", []) - meta_shape = detections.get("shape", [frame_h, frame_w]) - scale_y = frame_h / meta_shape[0] if meta_shape[0] > 0 else 1.0 - scale_x = frame_w / meta_shape[1] if meta_shape[1] > 0 else 1.0 - - crops = [] - for bbox in bboxes[: self._max_crops]: - left, top, right, bottom = bbox - left = int(left * scale_x) - top = int(top * scale_y) - right = int(right * scale_x) - bottom = int(bottom * scale_y) - - left = max(0, min(left, frame_w - 1)) - top = max(0, min(top, frame_h - 1)) - right = max(left + 1, min(right, frame_w)) - bottom = max(top + 1, min(bottom, frame_h)) - - crop = decoded_frames[top:bottom, left:right, :] # HWC - crop = crop.permute(2, 0, 1).float() / 255.0 # CHW [0,1] - crop = F.interpolate( - crop.unsqueeze(0), size=(256, 256), - mode="bicubic", align_corners=False, - ).squeeze(0) # [3, 256, 256] - - mean = self._mean.to(crop.device) - std = self._std.to(crop.device) - crop = (crop - mean) / std - crops.append(crop) - - if len(crops) == 0: - crops = [torch.zeros(3, 256, 256)] - - # Return list of [3, 256, 256] crops — the model operator will - # batch them via stack_tensors_in_dict into [N, 3, 256, 256]. - return (crops, detections) diff --git a/tools/inference_builder/builder/samples/cradio/test_config.json b/tools/inference_builder/builder/samples/cradio/test_config.json deleted file mode 100644 index 4296b97c..00000000 --- a/tools/inference_builder/builder/samples/cradio/test_config.json +++ /dev/null @@ -1,47 +0,0 @@ -[ - { - "name": "cradio_peoplenet_inference", - "description": "Test PeopleNet Transformer + C-RADIOv3-H sequential multi-model pipeline", - "build_args": { - "TEST_APP_NAME": "ds-cradio", - "CACHE_BUSTER": "cradio_peoplenet_test", - "APP_YAML_PATH": "ds_cradio.yaml", - "OUTPUT_DIR": ".", - "PROCESSORS_PATH": "processors.py", - "SERVER_TYPE": "serverless" - }, - "test_config": { - "default_enable": false, - "timeout": 1000, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", - "NVIDIA_DRIVER_CAPABILITIES": "compute,utility,video,graphics", - "MODEL_REPO": "/models" - }, - "volumes": { - "/tmp/model-repo": "/models" - }, - "cmd": [ - "--media-url", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg", - "--mime", - "image/jpeg" - ], - "prerequisite_script": "bash prepare_engine.sh {image_name} /tmp/model-repo", - "models": { - "peoplenet": { - "source": "NGC", - "target": "/tmp/model-repo", - "path": "nvidia/tao/peoplenet_transformer", - "version": "deployable_v1.1", - "configs": "../ds_app/detection/peoplenet_transformer" - }, - "cradio_v3_h": { - "source": "HF", - "target": "/tmp/model-repo", - "path": "nvidia/C-RADIOv3-H" - } - } - } - } -] diff --git a/tools/inference_builder/builder/samples/docker-compose.yml b/tools/inference_builder/builder/samples/docker-compose.yml deleted file mode 100644 index 01271415..00000000 --- a/tools/inference_builder/builder/samples/docker-compose.yml +++ /dev/null @@ -1,155 +0,0 @@ -################################################################################ -# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: LicenseRef-NvidiaProprietary -# -# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual -# property and proprietary rights in and to this material, related -# documentation and any modifications thereto. Any use, reproduction, -# disclosure or distribution of this material and related documentation -# without an express license agreement from NVIDIA CORPORATION or -# its affiliates is strictly prohibited. -################################################################################ - -services: - ms-nvclip: - build: - context: nvclip - target: builder_base - dockerfile: Dockerfile - image: ms-nvclip - volumes: - - '~/.cache/model-repo/:/workspace/model-repo' - ipc: host - # init: true - ports: - - "8800-8803:8000-8003" - deploy: - resources: - reservations: - devices: - - driver: nvidia - #count: 1 - device_ids: ['0'] - capabilities: [gpu] - environment: - NGC_API_KEY: "" -# DEBUG: 1 - ms-changenet: - build: - context: changenet - target: builder_base - dockerfile: Dockerfile - image: ms-changenet - volumes: - - '~/.cache/model-repo/visual_changenet:/workspace/model_repo/visual_changenet/1' - ipc: host - # init: true - ports: - - "8800-8803:8000-8003" - deploy: - resources: - reservations: - devices: - - driver: nvidia - #count: 1 - device_ids: ['0'] - capabilities: [gpu] - environment: - HTTP_PORT: 8003 - DEBUG: 0 - tao-cv: - user: nvs:1000 - build: - context: tao - target: cv_tao_base - dockerfile: Dockerfile - image: tao-cv - # entrypoint: ["/bin/bash"] - # # Keep container running - # command: ["-c", "sleep infinity"] - volumes: - - '~/.cache/model-repo/:/workspace/.cache/model-repo' - ipc: host - # init: true - ports: - - "8800-8803:8000-8003" - deploy: - resources: - reservations: - devices: - - driver: nvidia - #count: 1 - device_ids: ['0'] - capabilities: [gpu] - environment: - DEBUG: 0 - TAO_MODEL_NAME: rtdetr - dry-run: - user: nvs:1000 - build: - context: dummy - target: inference_base - dockerfile: Dockerfile - image: dry-run - volumes: - - '~/.cache:/workspace/.cache' - ipc: host - # init: true - ports: - - "8800-8803:8000-8003" - deploy: - resources: - reservations: - devices: - - driver: nvidia - #count: 1 - device_ids: ['0'] - capabilities: [gpu] - environment: - DEBUG: 1 - ms-qwen: - build: - context: qwen - target: inference_base - dockerfile: Dockerfile - image: ms-qwen - volumes: - - '~/.cache/model-repo:/workspace/model-repo' - ipc: host - # init: true - ports: - - "8800-8803:8000-8003" - deploy: - resources: - reservations: - devices: - - driver: nvidia - #count: 1 - device_ids: ['0'] - capabilities: [gpu] - environment: - DEBUG: 0 - ms-vllm: - build: - context: vllm - target: inference_base - dockerfile: Dockerfile - image: ms-vllm - volumes: - - '~/.cache/model-repo:/workspace/model-repo' - ipc: host - # init: true - ports: - - "8800-8803:8000-8003" - deploy: - resources: - reservations: - devices: - - driver: nvidia - device_ids: ['0'] - #count: 1 - capabilities: [gpu] - environment: - DEBUG: 0 - # number of codec instances based on the hardware specification - N_CODEC_INSTANCES: 7 diff --git a/tools/inference_builder/builder/samples/ds_app/Dockerfile b/tools/inference_builder/builder/samples/ds_app/Dockerfile deleted file mode 100644 index 43363aba..00000000 --- a/tools/inference_builder/builder/samples/ds_app/Dockerfile +++ /dev/null @@ -1,130 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -# Sample Dockerfile for a DeepStream TAO ds_app-style pipeline using -# a Triton-enabled DeepStream base image. -# -# Target platform: x86_64 (amd64) -# Intended for standard datacenter/workstation GPUs (e.g. A100, H100, B200, -# RTX series) running Linux on x86_64. Uses pre-built PyTorch wheels from -# PyTorch's CUDA index and links against x86_64 system libraries. -FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS inference_base - -# Install Python dependencies required by THIS ds_app sample. These -# versions are pinned for reproducibility and can be adjusted for -# other pipelines or environments. -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install \ - --extra-index-url https://download.pytorch.org/whl/cu130 \ - torch==2.9.0+cu130 \ - numpy==1.26.4 \ - omegaconf==2.3.0 \ - transformers==4.54.1 \ - opencv-python - -# Build TensorRT OSS to provide customized plugins (e.g. for ONNX) and -# the trtexec tool. The version and GPU architectures are controlled -# by the ARGs below; update them if you target different CUDA/TRT -# versions or GPU architectures. -ARG TRT_VERSION_MAJOR=10 -ARG TRT_VERSION_MINOR=14 -ARG TRT_VERSION_PATCH=1 -ARG TRT_VERSION_BUILD=48 - -ARG TRT_VERSION_MAJOR_MINOR=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR -ARG TRT_VERSION_MAJOR_MINOR_PATCH=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR.$TRT_VERSION_PATCH -ARG TRT_VERSION_FULL=$TRT_VERSION_MAJOR_MINOR_PATCH.$TRT_VERSION_BUILD - -ARG CUDA_VERSION_MAJOR=13 -ARG CUDA_VERSION_MINOR=1 -ARG CUDA_VERSION_PATCH=80 -ARG CUDA_VERSION_BUILD=36836380_0 -ARG CUDA_VERSION_MAJOR_MINOR=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR -ARG CUDA_VERSION_FULL=$CUDA_VERSION_MAJOR_MINOR.$CUDA_VERSION_PATCH.$CUDA_VERSION_BUILD -ARG CUDNN_VERSION=9.17.0.29 - -ENV TRT_VERSION=$TRT_VERSION_FULL+cuda$CUDA_VERSION_FULL - -WORKDIR /tmp -ENV TRT_TAG="release/$TRT_VERSION_MAJOR_MINOR" -RUN mkdir trt_oss_src && \ - cd trt_oss_src && \ - echo "$PWD Building TRT OSS..." && \ - git clone -b $TRT_TAG https://github.com/nvidia/TensorRT TensorRT && \ - cd TensorRT && \ - git submodule update --init --recursive && \ - mkdir -p build && cd build && \ - cmake .. \ - -DGPU_ARCHS="80;86;90;100;120" \ - -DTRT_LIB_DIR=/usr/lib/x86_64-linux-gnu \ - -DTRT_OUT_DIR=/tmp/out \ - -DCUDA_VERSION=$CUDA_VERSION_MAJOR_MINOR \ - -DCUDNN_VERSION=$CUDNN_VERSION \ - && for i in {1..50}; do make -j 12 && break; done -RUN cp /tmp/out/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/x86_64-linux-gnu/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ - cp /tmp/out/libnvinfer_plugin_static.a /usr/lib/x86_64-linux-gnu/libnvinfer_plugin_static.a && \ - cp /tmp/out/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/x86_64-linux-gnu/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ - cp /tmp/out/trtexec /usr/local/bin/ && \ - cd ../../../ && \ - rm -rf trt_oss_src - - -# Build DeepStream TAO app post-processors. This must come AFTER the -# DeepStream SDK is installed in the base image. The resulting -# libnvds_infercustomparser_tao.so is copied into the DeepStream lib -# directory for use by ds_app pipelines. Adjust the repo/tag or CUDA -# version if you use different DS/TAO releases. -ENV DS_TAO_APPS_REPO=https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git -ENV DS_TAO_APPS_TAG="master" -ENV DS_SRC_PATH=/opt/nvidia/deepstream/deepstream -ARG CACHE_BUSTER=unique_value_to_bypass_docker_cache -RUN mkdir ds_tao_apps_src && \ - cd ds_tao_apps_src && \ - echo "$PWD Pulling DS TAO apps repo..." && \ - git clone -b $DS_TAO_APPS_TAG $DS_TAO_APPS_REPO ds_tao_apps && \ - cd ds_tao_apps/post_processor && \ - echo "$PWD Building DS TAO apps post processing..." && \ - CUDA_MODULE_LOADING=LAZY CUDA_VER=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR make DS_SRC_PATH=$DS_SRC_PATH && \ - [ -f libnvds_infercustomparser_tao.so ] && echo "$PWD post processing build successful" || echo "$PWD post processing build failed" && \ - cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib && \ - cd ../../../ && \ - rm -rf ds_tao_apps_src - -WORKDIR /workspace - -# Copy the inference flow package generated by Inference Builder. -# This tarball (here: deepstream-app.tgz) is typically produced when -# running the builder with tarball output enabled, and its name should -# match the generated pipeline artifact you want to deploy. -ADD deepstream-app.tgz /workspace - -# Copy test data for CI/regression testing of this sample pipeline. -# This is optional and specific to the ds_app sample setup. -COPY test_data/* /workspace/test_data/ - -## Set Environment variables required for DeepStream runtime. -# Make sure DeepStream GStreamer plugins and libraries are discoverable. -ENV GST_PLUGIN_PATH=/opt/nvidia/deepstream/deepstream/lib/gst-plugins -ENV LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream/lib:$LD_LIBRARY_PATH -# Enable adaptive batching in nvstreammux for better GPU utilization. -ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes -# Optional: enable detailed latency measurement if needed. -#ENV NVDS_ENABLE_LATENCY_MEASUREMENT=1 -#ENV NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 - -ENTRYPOINT ["python3", "/workspace/__main__.py"] -#ENTRYPOINT ["/bin/bash"] -CMD [] diff --git a/tools/inference_builder/builder/samples/ds_app/Dockerfile.dgxspark b/tools/inference_builder/builder/samples/ds_app/Dockerfile.dgxspark deleted file mode 100644 index 267c98d4..00000000 --- a/tools/inference_builder/builder/samples/ds_app/Dockerfile.dgxspark +++ /dev/null @@ -1,149 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Sample Dockerfile for a DeepStream TAO ds_app-style pipeline on DGX -# with Spark, using a Triton-enabled DeepStream base image and a PyTorch -# source image for copying Python packages. -# -# Target platform: aarch64 / NVIDIA server-grade ARM64 (GB300, DGX Spark) -# Intended for NVIDIA ARM64 server systems such as GB300 NVL and DGX Spark -# that run the arm-sbsa DeepStream variant. Like the Tegra variant, PyTorch -# packages are copied from the NGC pytorch image. Unlike Tegra, this targets -# high-performance datacenter ARM64 hardware (SBSA) rather than embedded -# Jetson devices. -FROM "nvcr.io/nvidia/pytorch:25.08-py3" AS pytorch_src - -FROM "nvcr.io/nvidia/deepstream:9.0-triton-sbsa-dgx-spark" AS inference_base - -RUN --mount=type=cache,target=/root/.cache/pip \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ - apt-get update && apt-get install -y --no-install-recommends libyaml-cpp-dev pkg-config cmake - -RUN --mount=type=bind,from=pytorch_src,source=/usr/local/lib/python3.12/dist-packages,target=/tmp/pytorch_src \ - cp -r /tmp/pytorch_src/{torch,functorch,torchgen,torch-*,torchvision*,flash_attn*,tensorrt*} \ - /usr/local/lib/python3.12/dist-packages/ && \ - cp -r /tmp/pytorch_src/triton /usr/local/lib/python3.12/dist-packages/ && \ - sed -i '/self.capability = target.arch/a\ if self.capability == 121: self.capability = 120' /usr/local/lib/python3.12/dist-packages/triton/backends/nvidia/compiler.py -COPY --from=pytorch_src /usr/local/lib/libnvpl* /usr/local/lib/ - -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install \ - jinja2==3.1.6 \ - numpy==1.26.4 \ - omegaconf==2.3.0 \ - networkx==3.5 \ - sympy==1.14.0 \ - pillow==11.3 \ - transformers==4.54.1 \ - opencv-python - -# Build TensorRT OSS to provide customized plugins (e.g. for ONNX) and -# the trtexec tool. The version and GPU architectures are controlled -# by the ARGs below; update them if you target different CUDA/TRT -# versions or GPU architectures. -ARG TRT_VERSION_MAJOR=10 -ARG TRT_VERSION_MINOR=13 -ARG TRT_VERSION_PATCH=0 -ARG TRT_VERSION_BUILD=0 - -ARG TRT_VERSION_MAJOR_MINOR=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR -ARG TRT_VERSION_MAJOR_MINOR_PATCH=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR.$TRT_VERSION_PATCH -ARG TRT_VERSION_FULL=$TRT_VERSION_MAJOR_MINOR_PATCH.$TRT_VERSION_BUILD - -ARG CUDA_VERSION_MAJOR=13 -ARG CUDA_VERSION_MINOR=0 -ARG CUDA_VERSION_PATCH=0 -ARG CUDA_VERSION_BUILD=1 -ARG CUDA_VERSION_MAJOR_MINOR=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR -ARG CUDA_VERSION_FULL=$CUDA_VERSION_MAJOR_MINOR.$CUDA_VERSION_PATCH.$CUDA_VERSION_BUILD -ARG CUDNN_VERSION=9.12.0.46-1 - -ENV TRT_VERSION=$TRT_VERSION_FULL+cuda$CUDA_VERSION_FULL - -WORKDIR /tmp -ENV TRT_TAG="release/$TRT_VERSION_MAJOR_MINOR" -RUN mkdir trt_oss_src && \ - cd trt_oss_src && \ - echo "$PWD Building TRT OSS..." && \ - git clone -b $TRT_TAG https://github.com/nvidia/TensorRT TensorRT && \ - cd TensorRT && \ - git submodule update --init --recursive && \ - mkdir -p build && cd build && \ - cmake .. \ - -DGPU_ARCHS="110;120;121" \ - -DTRT_LIB_DIR=/usr/lib/aarch64-linux-gnu \ - -DTRT_OUT_DIR=/tmp/out \ - -DCUDA_VERSION=$CUDA_VERSION_MAJOR_MINOR \ - -DCUDNN_VERSION=$CUDNN_VERSION \ - -DCMAKE_C_COMPILER=/usr/bin/gcc \ - && for i in {1..50}; do make -j 12 && break; done -RUN echo "Listing /tmp/out:" && ls -l /tmp/out/libnvinfer_plugin.so.* -RUN cp /tmp/out/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ - cp /tmp/out/libnvinfer_plugin_static.a /usr/lib/aarch64-linux-gnu/libnvinfer_plugin_static.a && \ - cp /tmp/out/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/aarch64-linux-gnu/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ - cp /tmp/out/trtexec /usr/local/bin/ && \ - cd ../../../ && \ - rm -rf trt_oss_src - - -# Build DeepStream TAO app post-processors. This must come AFTER the -# DeepStream SDK is installed in the base image. The resulting -# libnvds_infercustomparser_tao.so is copied into the DeepStream lib -# directory for use by ds_app pipelines. Adjust the repo/tag or CUDA -# version if you use different DS/TAO releases. -ENV DS_TAO_APPS_REPO=https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git -ENV DS_TAO_APPS_TAG="master" -ENV DS_SRC_PATH=/opt/nvidia/deepstream/deepstream -ARG CACHE_BUSTER=unique_value_to_bypass_docker_cache -RUN mkdir ds_tao_apps_src && \ - cd ds_tao_apps_src && \ - echo "$PWD Pulling DS TAO apps repo..." && \ - git clone -b $DS_TAO_APPS_TAG $DS_TAO_APPS_REPO ds_tao_apps && \ - cd ds_tao_apps/post_processor && \ - echo "$PWD Building DS TAO apps post processing..." && \ - CUDA_MODULE_LOADING=LAZY CUDA_VER=$CUDA_VERSION_MAJOR_MINOR make DS_SRC_PATH=$DS_SRC_PATH && \ - [ -f libnvds_infercustomparser_tao.so ] && echo "$PWD post processing build successful" || echo "$PWD post processing build falied" && \ - cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib && \ - cd ../../../ && \ - rm -rf ds_tao_apps_src - -RUN rm -rf ~/.cache/gstreamer-1.0 - -WORKDIR /workspace - -# Copy the inference flow package generated by Inference Builder. -# This tarball (here: deepstream-app.tgz) is typically produced when -# running the builder with tarball output enabled, and its name should -# match the generated pipeline artifact you want to deploy. -ADD deepstream-app.tgz /workspace - -# Copy test data for CI/regression testing of this sample pipeline. -# This is optional and specific to the ds_app sample setup. -COPY test_data/* /workspace/test_data/ - -## Set Environment variables required for DeepStream runtime. -# Make sure DeepStream GStreamer plugins and libraries are discoverable. -ENV GST_PLUGIN_PATH=/opt/nvidia/deepstream/deepstream/lib/gst-plugins -ENV LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream/lib:$LD_LIBRARY_PATH -# Enable adaptive batching in nvstreammux for better GPU utilization. -ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes -# Optional: enable detailed latency measurement if needed. -#ENV NVDS_ENABLE_LATENCY_MEASUREMENT=1 -#ENV NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 - -ENTRYPOINT ["python3", "/workspace/__main__.py"] -#ENTRYPOINT ["/bin/bash"] -CMD [] diff --git a/tools/inference_builder/builder/samples/ds_app/Dockerfile.tegra b/tools/inference_builder/builder/samples/ds_app/Dockerfile.tegra deleted file mode 100644 index a1d593c1..00000000 --- a/tools/inference_builder/builder/samples/ds_app/Dockerfile.tegra +++ /dev/null @@ -1,147 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Sample Dockerfile for a DeepStream TAO ds_app-style pipeline on Tegra -# (Jetson), using a Triton-enabled DeepStream base image and a PyTorch -# source image for copying Python packages for aarch64. -# -# Target platform: aarch64 / NVIDIA Tegra (Jetson) -# Intended for Jetson devices (e.g. Orin, AGX Orin, Thor) running JetPack / -# Tegra Linux. PyTorch and related packages are copied from the NGC -# pytorch image rather than installed via pip, since Tegra-compatible -# wheels are not available on the standard PyTorch index. -FROM "nvcr.io/nvidia/pytorch:25.08-py3" AS pytorch_src - -# Pull the base image from Deepstream Triton multiarch image. -FROM "nvcr.io/nvidia/deepstream:9.0-triton-multiarch" AS inference_base - -RUN --mount=type=cache,target=/root/.cache/pip \ - --mount=type=cache,target=/var/cache/apt,sharing=locked \ - --mount=type=cache,target=/var/lib/apt,sharing=locked \ - apt-get update && apt-get install -y --no-install-recommends libyaml-cpp-dev pkg-config cmake - -RUN --mount=type=bind,from=pytorch_src,source=/usr/local/lib/python3.12/dist-packages,target=/tmp/pytorch_src \ - cp -r /tmp/pytorch_src/{torch,functorch,torchgen,torch-*,torchvision*,flash_attn*,tensorrt*} \ - /usr/local/lib/python3.12/dist-packages/ && \ - cp -r /tmp/pytorch_src/triton /usr/local/lib/python3.12/dist-packages/ && \ - sed -i '/self.capability = target.arch/a\ if self.capability == 121: self.capability = 120' /usr/local/lib/python3.12/dist-packages/triton/backends/nvidia/compiler.py -COPY --from=pytorch_src /usr/local/lib/libnvpl* /usr/local/lib/ - -RUN --mount=type=cache,target=/root/.cache/pip \ - pip install \ - jinja2==3.1.6 \ - numpy==1.26.4 \ - omegaconf==2.3.0 \ - networkx==3.5 \ - sympy==1.14.0 \ - pillow==11.3 \ - transformers==4.54.1 \ - opencv-python - -# Build TensorRT OSS to provide customized plugins (e.g. for ONNX) and -# the trtexec tool. The version and GPU architectures are controlled -# by the ARGs below; update them if you target different CUDA/TRT -# versions or GPU architectures. -ARG TRT_VERSION_MAJOR=10 -ARG TRT_VERSION_MINOR=13 -ARG TRT_VERSION_PATCH=0 -ARG TRT_VERSION_BUILD=0 - -ARG TRT_VERSION_MAJOR_MINOR=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR -ARG TRT_VERSION_MAJOR_MINOR_PATCH=$TRT_VERSION_MAJOR.$TRT_VERSION_MINOR.$TRT_VERSION_PATCH -ARG TRT_VERSION_FULL=$TRT_VERSION_MAJOR_MINOR_PATCH.$TRT_VERSION_BUILD - -ARG CUDA_VERSION_MAJOR=13 -ARG CUDA_VERSION_MINOR=0 -ARG CUDA_VERSION_PATCH=0 -ARG CUDA_VERSION_BUILD=1 -ARG CUDA_VERSION_MAJOR_MINOR=$CUDA_VERSION_MAJOR.$CUDA_VERSION_MINOR -ARG CUDA_VERSION_FULL=$CUDA_VERSION_MAJOR_MINOR.$CUDA_VERSION_PATCH.$CUDA_VERSION_BUILD -ARG CUDNN_VERSION=9.12.0.46-1 - -ENV TRT_VERSION=$TRT_VERSION_FULL+cuda$CUDA_VERSION_FULL - -WORKDIR /tmp -ENV TRT_TAG="release/$TRT_VERSION_MAJOR_MINOR" -RUN mkdir trt_oss_src && \ - cd trt_oss_src && \ - echo "$PWD Building TRT OSS..." && \ - git clone -b $TRT_TAG https://github.com/nvidia/TensorRT TensorRT && \ - cd TensorRT && \ - git submodule update --init --recursive && \ - mkdir -p build && cd build && \ - cmake .. \ - -DGPU_ARCHS="110;120;121" \ - -DTRT_LIB_DIR=/usr/lib/aarch64-linux-gnu \ - -DTRT_OUT_DIR=/tmp/out \ - -DCUDA_VERSION=$CUDA_VERSION_MAJOR_MINOR \ - -DCUDNN_VERSION=$CUDNN_VERSION \ - -DCMAKE_C_COMPILER=/usr/bin/gcc \ - && for i in {1..50}; do make -j 12 && break; done -RUN echo "Listing /tmp/out:" && ls -l /tmp/out/libnvinfer_plugin.so.* -RUN cp /tmp/out/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ - cp /tmp/out/libnvinfer_plugin_static.a /usr/lib/aarch64-linux-gnu/libnvinfer_plugin_static.a && \ - cp /tmp/out/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH /usr/lib/aarch64-linux-gnu/libnvonnxparser.so.$TRT_VERSION_MAJOR_MINOR_PATCH && \ - cp /tmp/out/trtexec /usr/local/bin/ && \ - cd ../../../ && \ - rm -rf trt_oss_src - - -# Build DeepStream TAO app post-processors. This must come AFTER the -# DeepStream SDK is installed in the base image. The resulting -# libnvds_infercustomparser_tao.so is copied into the DeepStream lib -# directory for use by ds_app pipelines. Adjust the repo/tag or CUDA -# version if you use different DS/TAO releases. -ENV DS_TAO_APPS_REPO=https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git -ENV DS_TAO_APPS_TAG="master" -ENV DS_SRC_PATH=/opt/nvidia/deepstream/deepstream -ARG CACHE_BUSTER=unique_value_to_bypass_docker_cache -RUN mkdir ds_tao_apps_src && \ - cd ds_tao_apps_src && \ - echo "$PWD Pulling DS TAO apps repo..." && \ - git clone -b $DS_TAO_APPS_TAG $DS_TAO_APPS_REPO ds_tao_apps && \ - cd ds_tao_apps/post_processor && \ - echo "$PWD Building DS TAO apps post processing..." && \ - CUDA_MODULE_LOADING=LAZY CUDA_VER=$CUDA_VERSION_MAJOR_MINOR make DS_SRC_PATH=$DS_SRC_PATH && \ - [ -f libnvds_infercustomparser_tao.so ] && echo "$PWD post processing build successful" || echo "$PWD post processing build falied" && \ - cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib && \ - cd ../../../ && \ - rm -rf ds_tao_apps_src - -WORKDIR /workspace - -# Copy the inference flow package generated by Inference Builder. -# This tarball (here: deepstream-app.tgz) is typically produced when -# running the builder with tarball output enabled, and its name should -# match the generated pipeline artifact you want to deploy. -ADD deepstream-app.tgz /workspace - -# Copy test data for CI/regression testing of this sample pipeline. -# This is optional and specific to the ds_app sample setup. -COPY test_data/* /workspace/test_data/ - -## Set Environment variables required for DeepStream runtime. -# Make sure DeepStream GStreamer plugins and libraries are discoverable. -ENV GST_PLUGIN_PATH=/opt/nvidia/deepstream/deepstream/lib/gst-plugins -ENV LD_LIBRARY_PATH=/opt/nvidia/deepstream/deepstream/lib:$LD_LIBRARY_PATH -# Enable adaptive batching in nvstreammux for better GPU utilization. -ENV NVSTREAMMUX_ADAPTIVE_BATCHING=yes -# Optional: enable detailed latency measurement if needed. -#ENV NVDS_ENABLE_LATENCY_MEASUREMENT=1 -#ENV NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 - -ENTRYPOINT ["python3", "/workspace/__main__.py"] -#ENTRYPOINT ["/bin/bash"] -CMD [] diff --git a/tools/inference_builder/builder/samples/ds_app/README.md b/tools/inference_builder/builder/samples/ds_app/README.md deleted file mode 100644 index ff66dedc..00000000 --- a/tools/inference_builder/builder/samples/ds_app/README.md +++ /dev/null @@ -1,251 +0,0 @@ -# DeepStream Application Samples - -This directory contains sample configurations demonstrating how to build DeepStream applications using Inference Builder. - -While the samples support Ampere, Hopper, and Blackwell architectures, the model and the backend set the real hardware requirements. - -**Platform Support:** All ds_app samples are compatible with both x86-64 systems and NVIDIA Jetson Thor device. - -## Models used in the samples - -All the models can be downloaded from NGC and certain models need active subscription. - -If you don't have NGC CLI installed, please download and install it from [this page](https://org.ngc.nvidia.com/setup/installers/cli). - -### Image Classification -- **PCB Classification**: [PCB Classification Model](https://catalog.ngc.nvidia.com/orgs/nvaie/models/pcbclassification) - -### Visual Change Detection -- **Visual Changenet Classification**: [Visual Changenet Classification Model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/visual_changenet_classification) - -### Semantic Segmentation -- **CitySemSegFormer**: [CitySemSegFormer Model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/citysemsegformer) - -### Instance Segmentation -- **Mask2Fomer**: [Masked-attention Mask Transformer](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/mask2former) - -### Grounding Dino -- **Grounding DINO**: [Grounding DINO Model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/grounding_dino) -- **Mask Grounding DINO**: [Mask Grounding DINO Model](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/mask_grounding_dino) - -### RT-DETR Detector -- **RT-DETR**: [TrafficCamNet Lite](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/trafficcamnet_transformer_lite) -- **RT-DETR**: [PeopleNet Transformer](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/peoplenet_transformer) - -## Getting Started - -Each sample includes its own README with specific instructions for building and running the DeepStream application. Please refer to the individual sample directories for detailed setup and usage instructions. - -The provided samples can serve as references for creating inference pipelines across a wide range of TAO computer vision models. Each model falls into one of the following categories, with corresponding instructions available: - -- classification -- detection -- segmentation -- GDINO (Open vocabulary detection and segmentation) - -Required model files including the onnx, nvinfer configuration, preprocess configuration can be found from NGC model repository or exported through TAO Finetune Microservice. - -## Configurable Parameters for the DeepStream Backend - -You can enable these features under the [`parameters section of the configuration file`](#complete-configuration-example). - -### Inference Configuration - -The core inference configuration that specifies the model and inference parameters. - -```yaml -parameters: - infer_config_path: - - nvdsinfer_config.yaml # Path to the nvinfer configuration file -``` - -### Preprocess Configuration - -Used to define preprocessing operations that run before inference. This is required when non-image tensors must be injected into the pipeline (e.g., for models that require additional metadata or custom tensor inputs). Refer to [nvdspreprocess plugin documentation](https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdspreprocess.html) for more details. - -```yaml -parameters: - preprocess_config_path: - - nvdspreprocess_config.yaml # Path to the nvdspreprocess configuration file -``` - -### Tracker Configuration - -Used for object tracking along with inference using nvtracker. This enables multi-object tracking across frames. - -```yaml -tracker_config: - ll_lib_file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so # Path to the tracker library - ll_config_file: /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_IOU.yml # Path to tracker configuration file - width: 1920 # Tracker width - height: 1088 # Tracker height - display_tracking_id: true # Display tracking id in object text -``` - -### Analytics Configuration - -Used for object activity analysis such as line-crossing, ROI enetering/exiting, crowding and direction detection. - -```yaml -analytics_config: - config_file_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-nvdsanalytics-test/config_nvdsanalytics.txt # Path to the nvdsanalytics configuration file - gpu_id: 0 # GPU core id for analytics running -``` - - -### Message Broker Configuration - -Used to send inference data over the cloud using nvmsgbroker and nvmsgconverter. Supports various message brokers like Kafka, MQTT, etc. - -> **Note:** To use message broker functionality, you need to set up a broker service first and then update the parameters below accordingly. - -```yaml -msgbroker_config: - msgbroker_proto_lib_path: /opt/nvidia/deepstream/deepstream/lib/libnvds_kafka_proto.so # Path to the message broker protocol library - msgbroker_conn_str: localhost:9092 # Message broker connection string (host:port) - msgbroker_topic: ds_app # Topic name for publishing inference results - msgconv_config_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5/configs/dstest5_msgconv_sample_config.txt # Path to message converter configuration - msgconv_payload_type: 2 # Payload type for message conversion (0=DeepStream JSON, 1=DeepStream Minimal JSON, 2=DeepStream Protobuf) - msgconv_msg2p_new_api: false # Use new API which supports publishing multiple payloads using NvDsFrameMeta - msgconv_frame_interval: 1 # Frame interval at which payload is generated (every Nth frame) - msgconv_msg2p_lib: /opt/nvidia/deepstream/deepstream/lib/libnvds_msgconv.so # Path to the message converter library -``` - -### Render Configuration - -To visually see the inference output, you have two options: - -#### 1. Display on Host Machine Terminal - -```yaml -render_config: - enable_display: true # Enable display output on host machine - enable_osd: true # Enable on-screen display with bounding boxes and metadata using nvdsosd -``` - -#### 2. Stream to RTSP Port - -```yaml -render_config: - enable_stream: true # Enable RTSP streaming output - enable_osd: true # Enable on-screen display with bounding boxes and metadata using nvdsosd - rtsp_mount_point: /ds_app # RTSP mount point for the stream - rtsp_port: 8554 # RTSP server port number -``` - -This will start RTSP streaming at `rtsp://localhost:8554/ds_app` - -### Performance Measurement Configuration - -Used to monitor the performance of the inference pipeline and individual components. - -```yaml -perf_config: - enable_fps_logs: true # Enable FPS logging for each source on the host machine terminal - enable_latency_logs: true # Enable element-specific latency logging on host machine terminal -``` - ->**Note:** For latency measurements to work properly, make sure to export these environment variables: - -```bash -export NVDS_ENABLE_LATENCY_MEASUREMENT=1 -export NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 -``` - -### KITTI Data Configuration - -When enabled, this configuration dumps inference and tracking data in KITTI format to the specified directories. - -```yaml -kitti_output_path: - infer: /workspace/models/infer-kitti-dump/ # Directory for inference KITTI data - tracker: /workspace/models/tracker-kitti-dump/ # Directory for tracking KITTI data -``` - -> **Note:** Make sure to create the directories mentioned above before running the application to ensure proper KITTI data dumping. - -### Resolution Configuration - -When specified in the configuration, the input stream will be resized to the specified dimensions before processing. - -```yaml -resize_video: [height, width] # Format: [height, width] -resize_video: [1080, 1920] # Example: Resize to 1080p (1920x1080) -``` - -### Timeout Configuration - -Inference timeout ensures the inference process completes within a specified time limit. The timeout value is specified in seconds. - -```yaml -parameters: - inference_timeout: 5 # Timeout in seconds for inference operations -``` - -Batch timeout specifies the time in microseconds to wait for batched buffers to be sent out after the first buffer is available. - -- **Default value:** `1000 * max_batch_size` microseconds -- **Set to -1:** Wait infinitely for batch formation - -> **Warning:** If your `max_batch_size` in the models section is greater than the number of streams you're running, do not set the timeout to -1. This will cause the pipeline to wait infinitely for batch formation and become unresponsive. In such scenarios, set an appropriate timeout value. - -```yaml -parameters: - batch_timeout: 33000 # Timeout in microseconds for batching -``` - -### [Complete Configuration Example](#complete-configuration-example) - -Here's a complete example showing all the features enabled: - -```yaml -parameters: - # Core inference configuration - infer_config_path: - - nvdsinfer_config.yaml # Path to nvinfer configuration file - - # Resolution configuration - resize_video: [1080, 1920] # Resize input stream to 1080p (1920x1080) - - # Object tracking configuration - tracker_config: - ll_lib_file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so # Tracker library path - ll_config_file: /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_IOU.yml # Tracker config path - - # Message broker configuration for cloud integration - # Note: To use message broker functionality, you need to set up a broker service first and then update the parameters below accordingly. - msgbroker_config: - msgbroker_proto_lib_path: /opt/nvidia/deepstream/deepstream/lib/libnvds_kafka_proto.so # Protocol library - msgbroker_conn_str: localhost:9092 # Broker connection string - msgbroker_topic: ds_app # Topic for publishing results - msgconv_config_path: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5/configs/dstest5_msgconv_sample_config.txt # Message converter config - msgconv_payload_type: 2 # Payload type for message conversion (0=DeepStream JSON, 1=DeepStream Minimal JSON, 2=DeepStream Protobuf) - msgconv_msg2p_new_api: false # Use new API which supports publishing multiple payloads using NvDsFrameMeta - msgconv_frame_interval: 1 # Frame interval at which payload is generated (every Nth frame) - msgconv_msg2p_lib: /opt/nvidia/deepstream/deepstream/lib/libnvds_msgconv.so # Path to the message converter library - - # Rendering and display configuration - # Choose your output method: enable_display (local display), enable_stream (RTSP streaming), or both - render_config: - enable_display: true # Enable display output - enable_osd: true # Enable on-screen display with metadata - enable_stream: true # Enable RTSP streaming - rtsp_mount_point: /ds_app # RTSP mount point - rtsp_port: 8554 # RTSP server port - - # Performance monitoring configuration - perf_config: - enable_fps_logs: true # Enable FPS logging - enable_latency_logs: true # Enable latency logging - - # KITTI dump configuration - kitti_output_path: - infer: /workspace/models/infer-kitti-dump/ # Directory for inference KITTI data - tracker: /workspace/models/tracker-kitti-dump/ # Directory for tracking KITTI data - - # Inference timeout configuration - inference_timeout: 5 # Timeout in seconds for inference operations - - # Batch timeout configuration - batch_timeout: 33000 # Timeout in microseconds to wait for batching operation -``` diff --git a/tools/inference_builder/builder/samples/ds_app/classification/README.md b/tools/inference_builder/builder/samples/ds_app/classification/README.md deleted file mode 100644 index 83f75a8b..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/README.md +++ /dev/null @@ -1,201 +0,0 @@ -## Introduction - -This sample demonstrates how to build a deepstream application with Inference Builder using classification models: -1. changenet-classify: visual_changenet_nvpcb_deployable_v1.0 from https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/visual_changenet_classification -2. pcbclassification: deployable_v1.1 from https://catalog.ngc.nvidia.com/orgs/nvaie/models/pcbclassification - -## Prerequisites - -**Note:** Make sure you are in the root directory (`path/to/inference_builder`) to execute the commands in this README. All relative paths and commands assume you are running from the inference_builder root directory. Also ensure that your virtual environment is activated before running any commands. - -Model files are loaded from '/workspace/models/{MODEL_NAME}' within the container, thus the volume must be correctly mapped from the host. -You need to export MODEL_REPO environment variable to the path where you want to store the model files. - -```bash -mkdir ~/.cache/model-repo/ -sudo chmod -R 777 ~/.cache/model-repo/ -export MODEL_REPO=~/.cache/model-repo -``` - -You need first download the model files from the NGC catalog and put them in the $MODEL_REPO/{model-name}/ directory, then copy the other required configurations to the same directory: - -**Note:** If NGC commands fail, make sure you have access to the models you are trying to download. Some models require an active subscription. Ensure NGC is set up properly, or alternatively try using the NGC web UI to directly download the model from the links provided [here](../README.md#models-used-in-the-samples) - -### For pcbclassification sample - -Please use `pcbclassification` as the directory: - -```bash -ngc registry model download-version "nvaie/pcbclassification:deployable_v1.1" -# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default -mv pcbclassification_vdeployable_v1.1 $MODEL_REPO/pcbclassification -chmod 777 $MODEL_REPO/pcbclassification -cp -r builder/samples/ds_app/classification/pcbclassification/* $MODEL_REPO/pcbclassification/ -``` - -### For changenet-classify sample - -Please use `changenet-classify` as the directory: - -```bash -ngc registry model download-version "nvidia/tao/visual_changenet_classification:visual_changenet_nvpcb_deployable_v1.0" -mv visual_changenet_classification_vvisual_changenet_nvpcb_deployable_v1.0 $MODEL_REPO/changenet-classify/ -# Move the folder to the model-repo directory, and the sample uses ~/.cache/model-repo by default -chmod 777 $MODEL_REPO/changenet-classify -cp -r builder/samples/ds_app/classification/changenet-classify/* $MODEL_REPO/changenet-classify/ -``` - -## Generate the DeepStream Application Package and Build Container Image - -Assume you've followed the [top level instructions](../../../README.md#getting-started) to set up the environment and be sure you're in the inference_builder folder, then activate your virtual environment: - -```bash -source .venv/bin/activate -``` - -### For pcbclassification sample - -Please use ds_pcb.yaml as the configuration: - -#### For x86 Architecture - -```bash -python builder/main.py builder/samples/ds_app/classification/ds_pcb.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build -t deepstream-app builder/samples/ds_app -``` - -#### For Tegra Architecture - -```bash -python builder/main.py builder/samples/ds_app/classification/ds_pcb.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build -t deepstream-app \ - -f builder/samples/ds_app/Dockerfile.tegra \ - builder/samples/ds_app -``` - -#### For Dgx Spark - -```bash -python builder/main.py builder/samples/ds_app/classification/ds_pcb.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build \ - -t deepstream-app \ - -f builder/samples/ds_app/Dockerfile.dgxspark \ - builder/samples/ds_app -``` - -### For changenet-classify sample - -Please use ds_changenet.yaml as the configuration: - -#### For x86 Architecture - -```bash -python builder/main.py builder/samples/ds_app/classification/ds_changenet.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build -t deepstream-app builder/samples/ds_app -``` - -#### For Tegra Architecture - -```bash -python builder/main.py builder/samples/ds_app/classification/ds_changenet.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build \ - -t deepstream-app \ - -f builder/samples/ds_app/Dockerfile.tegra \ - builder/samples/ds_app -``` - -#### For Dgx Spark - -```bash -python builder/main.py builder/samples/ds_app/classification/ds_changenet.yaml \ - -o builder/samples/ds_app \ - --server-type serverless \ - -t \ -&& docker build \ - -t deepstream-app \ - -f builder/samples/ds_app/Dockerfile.dgxspark \ - builder/samples/ds_app -``` - -## Run the deepstream app with image inputs: - -**Note:** The TensorRT engine is generated during the first time run and it takes several minutes. - -**Note:** You can optionally set the `$SAMPLE_INPUT` environment variable to point to your input media directory if you want to perform inference on media files stored on your host machine. - -**Note:** To save the inference results, append the `-s result.json` option to your `docker run` command. - -```bash -# Update this with your actual samples directory path -export SAMPLE_INPUT=/path/to/your/samples/directory -``` - -### For pcbclassification sample - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). -export SAMPLE_INPUT=$(realpath builder/samples/ds_app/classification/sample-inputs/) -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $SAMPLE_INPUT:/sample_input \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url /sample_input/IMG_0002_C71.png \ - --mime image/png -``` - -### For changenet-classify sample - -**Note:** For changenet classification model, it requires two images as input. Sample test images (`pass_0.png` and `pass_1.png`) are embedded in the Docker image at `/workspace/test_data/` for testing purposes. - -**Using embedded test images (recommended for testing):** - -```bash -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url /workspace/test_data/pass_0.png /workspace/test_data/pass_1.png \ - --mime image/png image/png -``` - -**Using your own images from host:** - -```bash -# media-url: the path or URL to the input media. -# mime: the media type (e.g., "video/mp4" or "image/jpeg"). -export SAMPLE_INPUT=/path/to/your/images -docker run --rm --network=host --gpus all --privileged --runtime=nvidia \ - -v $SAMPLE_INPUT:/sample_input \ - -v $MODEL_REPO:/workspace/models \ - -v /tmp/.X11-unix/:/tmp/.X11-unix \ - -e DISPLAY=$DISPLAY \ - -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \ - deepstream-app \ - --media-url /sample_input/ /sample_input/ \ - --mime image/png image/png -``` - -For classification samples, the output is a list of labels defined in labels.txt. e.g, for pcbclassification model, the output label will be "missing" if there is a part missing from the input image. - -**Note:** You may see `pybind11::handle::dec_ref()` related errors after the inference is completed. This is a known issue and will be fixed in the next release. \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/labels.txt b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/labels.txt deleted file mode 100644 index 8be0ce5e..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/labels.txt +++ /dev/null @@ -1,2 +0,0 @@ -notdefect -defect diff --git a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdsinfer_config.yaml deleted file mode 100644 index e7a51da0..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdsinfer_config.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - gie-unique-id: 1 - net-scale-factor: 0.00392156862745098 - onnx-file: changenet-classify.onnx - model-engine-file: changenet-classify.onnx_b2_gpu0_fp16.engine - network-mode: 2 - network-type: 1 - offsets: 127.5;127.5;127.5 - num-detected-classes: 2 - input-tensor-from-meta: 1 - infer-dims: 3;512;128 - classifier-threshold: 0 - labelfile-path: labels.txt - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so diff --git a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_0.yaml b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_0.yaml deleted file mode 100644 index 1d3d860f..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_0.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - tensor-name: input_1 - processing-width: 128 - processing-height: 512 - network-input-shape: 2;3;512;128 - network-color-format: 0 - network-input-order: 0 - tensor-data-type: 0 - maintain-aspect-ratio: 1 - symmetric-padding: 1 - scaling-pool-memory-type: 0 - scaling-pool-compute-hw: 0 - scaling-filter: 0 - scaling-buf-pool-size: 6 - tensor-buf-pool-size: 6 - target-unique-ids: 1 - process-on-frame: 1 - unique-id: 5 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so - custom-tensor-preparation-function: CustomTensorPreparation - enable: 1 - -user-configs: - pixel-normalization-factor: 0.007843137 - offsets: 127.5;127.5;127.5 - -group: - - src-ids: 0;2;4;6;8;10;12;14 - custom-input-transformation-function: CustomAsyncTransformation - process-on-roi: 0 - diff --git a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_1.yaml b/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_1.yaml deleted file mode 100644 index c700c9b6..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/changenet-classify/nvdspreprocess_config_1.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - tensor-name: input_2 - processing-width: 128 - processing-height: 512 - network-input-shape: 2;3;512;128 - network-color-format: 0 - network-input-order: 0 - tensor-data-type: 0 - maintain-aspect-ratio: 1 - symmetric-padding: 1 - scaling-pool-memory-type: 0 - scaling-pool-compute-hw: 0 - scaling-filter: 0 - scaling-buf-pool-size: 6 - tensor-buf-pool-size: 6 - target-unique-ids: 1 - process-on-frame: 1 - unique-id: 5 - custom-lib-path: /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libcustom2d_preprocess.so - custom-tensor-preparation-function: CustomTensorPreparation - enable: 1 - -user-configs: - pixel-normalization-factor: 0.007843137 - offsets: 127.5;127.5;127.5 - -group: - - src-ids: 1;3;5;7;9;11;13;15 - custom-input-transformation-function: CustomAsyncTransformation - process-on-roi: 0 - diff --git a/tools/inference_builder/builder/samples/ds_app/classification/ds_changenet.yaml b/tools/inference_builder/builder/samples/ds_app/classification/ds_changenet.yaml deleted file mode 100644 index c43b2d04..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/ds_changenet.yaml +++ /dev/null @@ -1,59 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -name: "deepstream-app" -model_repo: "/workspace/models" - -input: -- name: media_url - data_type: TYPE_CUSTOM_LIST - dims: [ -1 ] -- name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - -output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - -models: -- name: changenet-classify - backend: deepstream/nvinfer - max_batch_size: 2 - input: - - name: images - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [-1, -1, 3] - optional: true - - name: media_url - data_type: TYPE_CUSTOM_DS_MEDIA_URL - dims: [ -1 ] - - name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - optional: false - output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - parameters: - infer_config_path: - - nvdsinfer_config.yaml - preprocess_config_path: - - nvdspreprocess_config_0.yaml - - nvdspreprocess_config_1.yaml - inference_timeout: "$INFERENCE_TIMEOUT|3" diff --git a/tools/inference_builder/builder/samples/ds_app/classification/ds_pcb.yaml b/tools/inference_builder/builder/samples/ds_app/classification/ds_pcb.yaml deleted file mode 100644 index caf2e051..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/ds_pcb.yaml +++ /dev/null @@ -1,55 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -name: "deepstream-app" -model_repo: "/workspace/models" - -input: -- name: media_url - data_type: TYPE_CUSTOM_LIST - dims: [ -1 ] -- name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - -output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - -models: -- name: pcbclassification - backend: deepstream/nvinfer - max_batch_size: 1 - input: - - name: images - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [-1, -1, 3] - optional: true - - name: media_url - data_type: TYPE_CUSTOM_DS_MEDIA_URL - dims: [ -1 ] - - name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - parameters: - infer_config_path: - - nvdsinfer_config.yaml - inference_timeout: 5 \ No newline at end of file diff --git a/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/labels.txt b/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/labels.txt deleted file mode 100644 index 33e45d56..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/labels.txt +++ /dev/null @@ -1 +0,0 @@ -missing diff --git a/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/nvdsinfer_config.yaml b/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/nvdsinfer_config.yaml deleted file mode 100644 index 6ed69a4a..00000000 --- a/tools/inference_builder/builder/samples/ds_app/classification/pcbclassification/nvdsinfer_config.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -property: - gie-unique-id: 1 - infer-dims: 3;224;224 - maintain-aspect-ratio: 1 - # 0.226 - net-scale-factor: 0.0173520735728 - network-mode: 2 - network-type: 1 # classification - onnx-file: pcbclassification.onnx - model-engine-file: ./pcbclassification.onnx_b1_gpu0_fp16.engine - workspace-size: 1048576 - classifier-threshold: 0 - scaling-filter: 1 - scaling-compute-hw: 1 - labelfile-path: labels.txt diff --git a/tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C71.png b/tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C71.png deleted file mode 100644 index 8e1389cbdd30fe550037d6a26f12737c4a204f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21907 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 diff --git a/tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C75.png b/tools/inference_builder/builder/samples/ds_app/classification/sample-inputs/IMG_0002_C75.png deleted file mode 100644 index db3e9010d507609c449ff4d112fac55dc9b51a9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23923 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

gP@it+=Gpr_;WP0x7`a9)wUyp4W5f!5^J+&RH{! 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ⅆ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 diff --git a/tools/inference_builder/builder/tests/frame_sampling/app.yaml b/tools/inference_builder/builder/tests/frame_sampling/app.yaml deleted file mode 100644 index 2fba2217..00000000 --- a/tools/inference_builder/builder/tests/frame_sampling/app.yaml +++ /dev/null @@ -1,42 +0,0 @@ -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "video_files" - data_type: TYPE_CUSTOM_VIDEO_CHUNK_ASSETS - dims: [ -1 ] - optional: true - - name: "video_streams" - data_type: TYPE_CUSTOM_LONG_VIDEO_ASSETS - dims: [ -1 ] - optional: true - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: media_frames - data_type: TYPE_FP32 - dims: [ -1, -1, -1, -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - preprocessors: - - kind: "custom" - name: "frame-picker" - input: ["video_streams"] - output: ["media_frames"] - config: { "num_frames": 10 } - - kind: "custom" - name: "frame-picker" - input: ["video_files"] - output: ["media_frames"] - config: { "num_frames": 10 } - -routes: { - ':["video_files"]': 'dummy', - ':["video_streams"]': 'dummy', - 'dummy:["output"]': ':' -} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/frame_sampling/processors.py b/tools/inference_builder/builder/tests/frame_sampling/processors.py deleted file mode 100644 index 07d5b12e..00000000 --- a/tools/inference_builder/builder/tests/frame_sampling/processors.py +++ /dev/null @@ -1,36 +0,0 @@ -import torch -import logging - -logger = logging.getLogger(__name__) - -class FramePickerProcessor: - name = "frame-picker" - - def __init__(self, config): - self.num_frames = config['num_frames'] - # Eagerly initialize CUDA to avoid GIL deadlock with GStreamer threads - torch.cuda.init() - - def __call__(self, *args, **kwargs): - if len(args) != 1: - raise ValueError( - "FramePickerProcessor expects exactly one argument" - ) - frame_list = args[0] - if len(frame_list) != self.num_frames: - raise ValueError( - f"FramePickerProcessor expects a list of " - f"{self.num_frames} frames, while got {len(frame_list)}" - ) - torch_tensors = [ - torch.utils.dlpack.from_dlpack(frame.tensor) - for frame in frame_list - ] - - # Log frame dimensions for verification - if torch_tensors: - # Tensor shape is typically (H, W, C) from MediaExtractor - h, w = torch_tensors[0].shape[0], torch_tensors[0].shape[1] - logger.info(f"FramePickerProcessor: received {len(torch_tensors)} frames with dimensions {w}x{h}") - - return torch.stack(torch_tensors) diff --git a/tools/inference_builder/builder/tests/negative/df_1.yaml b/tools/inference_builder/builder/tests/negative/df_1.yaml deleted file mode 100644 index 824be9c9..00000000 --- a/tools/inference_builder/builder/tests/negative/df_1.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "base64" - data_type: TYPE_CUSTOM_BINARY_BASE64 - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -server: - responders: - healthy_ready: - operation: health_ready_v1_health_ready_get - infer: - operation: inference - requests: - InferenceRequest: > - { - "base64": ["hello"] - } - responses: - InferenceResponse: > - { - "data": {{ response.outputs | tojson }} - } - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - -routes: { - ':["base64"]': 'dummy:["inputs"]', - 'dummy:["output"]': ':' -} diff --git a/tools/inference_builder/builder/tests/negative/df_2.yaml b/tools/inference_builder/builder/tests/negative/df_2.yaml deleted file mode 100644 index 76db5efe..00000000 --- a/tools/inference_builder/builder/tests/negative/df_2.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "base64" - data_type: TYPE_CUSTOM_BINARY_BASE64 - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -server: - responders: - healthy_ready: - operation: health_ready_v1_health_ready_get - infer: - operation: inference - requests: - InferenceRequest: > - { - "base64": [1, 2] - } - responses: - InferenceResponse: > - { - "data": {{ response.outputs | tojson }} - } - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - -routes: { - ':["base64"]': 'dummy:["inputs"]', - 'dummy:["output"]': ':' -} diff --git a/tools/inference_builder/builder/tests/negative/df_3 copy.yaml b/tools/inference_builder/builder/tests/negative/df_3 copy.yaml deleted file mode 100644 index 4b3d5cf7..00000000 --- a/tools/inference_builder/builder/tests/negative/df_3 copy.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - postprocessors: - - kind: "custom" - name: "pp-output-2" - input: ["output"] - output: ["output_1", "output_2"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/df_3.yaml b/tools/inference_builder/builder/tests/negative/df_3.yaml deleted file mode 100644 index a83bc7e8..00000000 --- a/tools/inference_builder/builder/tests/negative/df_3.yaml +++ /dev/null @@ -1,44 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "video" - data_type: TYPE_CUSTOM_LONG_VIDEO_ASSETS - dims: [ -1 ] - optional: true - - name: "image" - data_type: TYPE_CUSTOM_IMAGE_ASSETS - dims: [ -1 ] - optional: true - - name: "video_chunk" - data_type: TYPE_CUSTOM_VIDEO_CHUNK_ASSETS - dims: [ -1 ] - optional: true - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1 ] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - -routes: { - ':["video"]': 'dummy:["inputs"]', - ':["image"]': 'dummy:["inputs"]', - ':["video_chunk"]': 'dummy:["inputs"]', - 'dummy:["output"]': ':' -} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/image.yaml b/tools/inference_builder/builder/tests/negative/image.yaml deleted file mode 100644 index d9a4f0e6..00000000 --- a/tools/inference_builder/builder/tests/negative/image.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "image" - data_type: TYPE_CUSTOM_IMAGE_BASE64 - dims: [ -1 ] - optional: true - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: image - data_type: TYPE_UINT8 - dims: [ -1, -1, -1, -1 ] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] diff --git a/tools/inference_builder/builder/tests/negative/mo_1.yaml b/tools/inference_builder/builder/tests/negative/mo_1.yaml deleted file mode 100644 index 4b3d5cf7..00000000 --- a/tools/inference_builder/builder/tests/negative/mo_1.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - postprocessors: - - kind: "custom" - name: "pp-output-2" - input: ["output"] - output: ["output_1", "output_2"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/mo_2.yaml b/tools/inference_builder/builder/tests/negative/mo_2.yaml deleted file mode 100644 index f20dc58a..00000000 --- a/tools/inference_builder/builder/tests/negative/mo_2.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -server: - responders: - healthy_ready: - operation: health_ready_v1_health_ready_get - infer: - operation: inference - requests: - InferenceRequest: > - { - "inputs_not_found": ["hello"] - } - responses: - InferenceResponse: > - { - "output": {{ response.outputs | tojson }} - } -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/model.yaml b/tools/inference_builder/builder/tests/negative/model.yaml deleted file mode 100644 index ce03f7ca..00000000 --- a/tools/inference_builder/builder/tests/negative/model.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] diff --git a/tools/inference_builder/builder/tests/negative/payloads/payloads.jsonl b/tools/inference_builder/builder/tests/negative/payloads/payloads.jsonl deleted file mode 100644 index 63702345..00000000 --- a/tools/inference_builder/builder/tests/negative/payloads/payloads.jsonl +++ /dev/null @@ -1 +0,0 @@ -{"text": ["hello"]} diff --git a/tools/inference_builder/builder/tests/negative/pp_1.yaml b/tools/inference_builder/builder/tests/negative/pp_1.yaml deleted file mode 100644 index 698a2950..00000000 --- a/tools/inference_builder/builder/tests/negative/pp_1.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - postprocessors: - - kind: "custom" - name: "pp-output-2" - input: ["output"] - output: ["output"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/pp_2.yaml b/tools/inference_builder/builder/tests/negative/pp_2.yaml deleted file mode 100644 index 2c1d58cb..00000000 --- a/tools/inference_builder/builder/tests/negative/pp_2.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - preprocessors: - - kind: "custom" - name: "pp-output-2" - input: ["inputs"] - output: ["inputs"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/pp_3.yaml b/tools/inference_builder/builder/tests/negative/pp_3.yaml deleted file mode 100644 index fa869b99..00000000 --- a/tools/inference_builder/builder/tests/negative/pp_3.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - preprocessors: - - kind: "custom" - name: "pp-nonexist" - input: ["inputs"] - output: ["inputs"] \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/processors.py b/tools/inference_builder/builder/tests/negative/processors.py deleted file mode 100644 index 9a35c1ab..00000000 --- a/tools/inference_builder/builder/tests/negative/processors.py +++ /dev/null @@ -1,32 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class InvalidProcessor1: - name = "pp-output-2" - - def __init__(self, config): - pass - - def __call__(self, *args, **kwargs): - return 0, 1 - -class InvalidProcessor2: - name = "pp-output-int" - - def __init__(self, config): - pass - - def __call__(self, *args, **kwargs): - return 0 diff --git a/tools/inference_builder/builder/tests/negative/route_1.yaml b/tools/inference_builder/builder/tests/negative/route_1.yaml deleted file mode 100644 index 465caf3e..00000000 --- a/tools/inference_builder/builder/tests/negative/route_1.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - -routes: { - ':["inputs"]:': 'dummy::', - 'dummy:["output"]': ':' -} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/route_2.yaml b/tools/inference_builder/builder/tests/negative/route_2.yaml deleted file mode 100644 index 4123eb75..00000000 --- a/tools/inference_builder/builder/tests/negative/route_2.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - -routes: { - ':["inputs"]': 'dummy:', - 'dummy:"output"': ':' -} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/route_3.yaml b/tools/inference_builder/builder/tests/negative/route_3.yaml deleted file mode 100644 index 8b18d7b8..00000000 --- a/tools/inference_builder/builder/tests/negative/route_3.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - -routes: { - ':["inputs"]': 'dummy:"inputs"', - 'dummy:["output"]': ':' -} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/route_4.yaml b/tools/inference_builder/builder/tests/negative/route_4.yaml deleted file mode 100644 index 71029f9b..00000000 --- a/tools/inference_builder/builder/tests/negative/route_4.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - -routes: { - ':["inputs"]': 'dummy2', - 'dummy:["output"]': ':' -} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/route_5.yaml b/tools/inference_builder/builder/tests/negative/route_5.yaml deleted file mode 100644 index 803c66c6..00000000 --- a/tools/inference_builder/builder/tests/negative/route_5.yaml +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "inputs" - data_type: TYPE_STRING - dims: [ -1 ] - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: inputs - data_type: TYPE_STRING - dims: [ -1] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] - -routes: { - ':["inputs"]': 'dummy', - 'dummy2:["output"]': ':' -} \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/negative/video.yaml b/tools/inference_builder/builder/tests/negative/video.yaml deleted file mode 100644 index c0987670..00000000 --- a/tools/inference_builder/builder/tests/negative/video.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -input: - - name: "video_chunk" - data_type: TYPE_CUSTOM_VIDEO_CHUNK_ASSETS - dims: [ -1 ] - optional: true - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [ 1 ] - -models: -- name: dummy - backend: dummy - max_batch_size: 1 - input: - - name: video_chunk - data_type: TYPE_UINT8 - dims: [ -1, -1, -1, -1 ] - output: - - name: output - data_type: TYPE_FP32 - dims: [ 1 ] diff --git a/tools/inference_builder/builder/tests/output_types/app.yaml b/tools/inference_builder/builder/tests/output_types/app.yaml deleted file mode 100644 index 9759e4c5..00000000 --- a/tools/inference_builder/builder/tests/output_types/app.yaml +++ /dev/null @@ -1,110 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: "test-app" -model_repo: "/workspace/models" - -# Input specification for testing various input types -input: - - name: "text" - data_type: TYPE_STRING - dims: [ -1 ] - optional: true - -# Output specification with multiple numpy array types -output: - - name: "outputs" - data_type: TYPE_STRING - dims: [ -1 ] - -server: - responders: - healthy_ready: - operation: health_ready_v1_health_ready_get - infer: - operation: inference - requests: - InferenceRequest: > - { - {% if request.text is not none %} - "text": [ - {% for item in request.text %} - {{ item|tojson }}{% if not loop.last %}, {% endif %} - {% endfor %} - ] - {% endif %} - } - responses: - InferenceResponse: > - { - "data": {{ response.outputs | tojson }} - } - -models: - - name: output_types_dummy - backend: "dummy" - max_batch_size: 1 - parameters: {} - input: - - name: text - data_type: TYPE_STRING - dims: [ -1 ] - output: - - name: int8_output - data_type: TYPE_INT8 - dims: [5, 4] - - name: int16_output - data_type: TYPE_INT16 - dims: [5, 4] - - name: int32_output - data_type: TYPE_INT32 - dims: [5, 4] - - name: int64_output - data_type: TYPE_INT64 - dims: [5, 4] - - name: uint8_output - data_type: TYPE_UINT8 - dims: [5, 4] - - name: uint16_output - data_type: TYPE_UINT16 - dims: [5, 4] - - name: uint32_output - data_type: TYPE_UINT32 - dims: [5, 4] - - name: uint64_output - data_type: TYPE_UINT64 - dims: [5, 4] - - name: fp16_output - data_type: TYPE_FP16 - dims: [5, 4] - - name: fp32_output - data_type: TYPE_FP32 - dims: [5, 4] - - name: fp64_output - data_type: TYPE_FP64 - dims: [5, 4] - - name: bool_output - data_type: TYPE_BOOL - dims: [5, 4] - - name: string_output - data_type: TYPE_STRING - dims: [5] - postprocessors: - - kind: "custom" - name: "output-types-validator" - input: - - int8_output - - int16_output - - int32_output - - int64_output - - uint8_output - - uint16_output - - uint32_output - - uint64_output - - fp16_output - - fp32_output - - fp64_output - - bool_output - - string_output - output: - - outputs diff --git a/tools/inference_builder/builder/tests/output_types/payloads/payloads.jsonl b/tools/inference_builder/builder/tests/output_types/payloads/payloads.jsonl deleted file mode 100644 index 79d79b3d..00000000 --- a/tools/inference_builder/builder/tests/output_types/payloads/payloads.jsonl +++ /dev/null @@ -1,4 +0,0 @@ -{"text": ["hello-1"]} -{"text": ["hello-2"]} -{"text": ["hello-3"]} - diff --git a/tools/inference_builder/builder/tests/output_types/processors.py b/tools/inference_builder/builder/tests/output_types/processors.py deleted file mode 100644 index dc977f08..00000000 --- a/tools/inference_builder/builder/tests/output_types/processors.py +++ /dev/null @@ -1,68 +0,0 @@ -from numpy import int64, uint, uint8 -import numpy as np - - -class Validator: - name = "output-types-validator" - - def __init__(self, config): - pass - - def __call__(self, *args): - int8_outputs = args[0] - int16_outputs = args[1] - int32_outputs = args[2] - int64_outputs = args[3] - uint8_outputs = args[4] - uint16_outputs = args[5] - uint32_outputs = args[6] - uint64_outputs = args[7] - fp16_outputs = args[8] - fp32_outputs = args[9] - fp64_outputs = args[10] - bool_outputs = args[11] - string_outputs = args[12] - - # Type assertions - assert isinstance(int8_outputs, np.ndarray), f"int8_outputs should be ndarray, got {type(int8_outputs)}" - assert int8_outputs.dtype == np.int8, f"int8_outputs should have dtype int8, got {int8_outputs.dtype}" - - assert isinstance(int16_outputs, np.ndarray), f"int16_outputs should be ndarray, got {type(int16_outputs)}" - assert int16_outputs.dtype == np.int16, f"int16_outputs should have dtype int16, got {int16_outputs.dtype}" - - assert isinstance(int32_outputs, np.ndarray), f"int32_outputs should be ndarray, got {type(int32_outputs)}" - assert int32_outputs.dtype == np.int32, f"int32_outputs should have dtype int32, got {int32_outputs.dtype}" - - assert isinstance(int64_outputs, np.ndarray), f"int64_outputs should be ndarray, got {type(int64_outputs)}" - assert int64_outputs.dtype == np.int64, f"int64_outputs should have dtype int64, got {int64_outputs.dtype}" - - assert isinstance(uint8_outputs, np.ndarray), f"uint8_outputs should be ndarray, got {type(uint8_outputs)}" - assert uint8_outputs.dtype == np.uint8, f"uint8_outputs should have dtype uint8, got {uint8_outputs.dtype}" - - assert isinstance(uint16_outputs, np.ndarray), f"uint16_outputs should be ndarray, got {type(uint16_outputs)}" - assert uint16_outputs.dtype == np.uint16, f"uint16_outputs should have dtype uint16, got {uint16_outputs.dtype}" - - assert isinstance(uint32_outputs, np.ndarray), f"uint32_outputs should be ndarray, got {type(uint32_outputs)}" - assert uint32_outputs.dtype == np.uint32, f"uint32_outputs should have dtype uint32, got {uint32_outputs.dtype}" - - assert isinstance(uint64_outputs, np.ndarray), f"uint64_outputs should be ndarray, got {type(uint64_outputs)}" - assert uint64_outputs.dtype == np.uint64, f"uint64_outputs should have dtype uint64, got {uint64_outputs.dtype}" - - assert isinstance(fp16_outputs, np.ndarray), f"fp16_outputs should be ndarray, got {type(fp16_outputs)}" - assert fp16_outputs.dtype == np.float16, f"fp16_outputs should have dtype float16, got {fp16_outputs.dtype}" - - assert isinstance(fp32_outputs, np.ndarray), f"fp32_outputs should be ndarray, got {type(fp32_outputs)}" - assert fp32_outputs.dtype == np.float32, f"fp32_outputs should have dtype float32, got {fp32_outputs.dtype}" - - assert isinstance(fp64_outputs, np.ndarray), f"fp64_outputs should be ndarray, got {type(fp64_outputs)}" - assert fp64_outputs.dtype == np.float64, f"fp64_outputs should have dtype float64, got {fp64_outputs.dtype}" - - assert isinstance(bool_outputs, np.ndarray), f"bool_outputs should be ndarray, got {type(bool_outputs)}" - assert bool_outputs.dtype == np.bool_, f"bool_outputs should have dtype bool_, got {bool_outputs.dtype}" - - assert isinstance(string_outputs, np.ndarray), f"string_outputs should be ndarray, got {type(string_outputs)}" - # String arrays can be np.bytes_ (|S*), np.str_ (U*), or np.object_ - assert np.issubdtype(string_outputs.dtype, np.bytes_) or np.issubdtype(string_outputs.dtype, np.str_) or string_outputs.dtype == np.object_, \ - f"string_outputs should have string-like dtype, got {string_outputs.dtype}" - - return [], diff --git a/tools/inference_builder/builder/tests/run_tests.sh b/tools/inference_builder/builder/tests/run_tests.sh deleted file mode 100644 index 8ecb80e4..00000000 --- a/tools/inference_builder/builder/tests/run_tests.sh +++ /dev/null @@ -1,194 +0,0 @@ -#!/bin/bash - -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -# Test script wrapper for Docker container builds -# This script provides easy-to-use commands for testing Docker builds - -set -e - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -TEST_SCRIPT="$SCRIPT_DIR/test_docker_builds.py" - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Function to print colored output -print_info() { - echo -e "${BLUE}[INFO]${NC} $1" -} - -print_success() { - echo -e "${GREEN}[SUCCESS]${NC} $1" -} - -print_warning() { - echo -e "${YELLOW}[WARNING]${NC} $1" -} - -print_error() { - echo -e "${RED}[ERROR]${NC} $1" -} - -# Function to show usage -show_usage() { - cat << EOF -Usage: $0 [OPTIONS] - -Run Docker build tests using a configuration file (defaults to test_configs.json). - -Options: - --no-cleanup Don't cleanup Docker images after testing - --output FILE Save test report to specified file - -c, --config FILE Use configuration file (optional, defaults to test_configs.json) - --log-dir DIR Directory to save container logs (default: logs) - -t, --test-case NAME Run only test cases matching this name (partial match). Use '*' for all. - --gpus DEVICES GPU devices to use (default: 'all'). Examples: 'all', 'device=0', 'device=0,1' - -Examples: - $0 - $0 -c my_config.json --output results.json - $0 --no-cleanup --output full_results.json --log-dir test_logs - $0 -t "Frame Sampling" - $0 -t "*" - $0 --test-case "FastAPI" - $0 --gpus "device=0" - $0 --gpus "device=0,1" -t "*" - -EOF -} - -# Function to check prerequisites -check_prerequisites() { - print_info "Checking prerequisites..." - - # Check if Docker is installed and running - if ! command -v docker &> /dev/null; then - print_error "Docker is not installed or not in PATH" - exit 1 - fi - - if ! docker info &> /dev/null; then - print_error "Docker is not running or you don't have permissions" - exit 1 - fi - - # Check if Python script exists - if [ ! -f "$TEST_SCRIPT" ]; then - print_error "Test script not found: $TEST_SCRIPT" - exit 1 - fi - - # Check if Python script is executable - if [ ! -x "$TEST_SCRIPT" ]; then - print_warning "Making test script executable..." - chmod +x "$TEST_SCRIPT" - fi - - print_success "Prerequisites check passed" -} - -# Parse command line arguments -NO_CLEANUP="false" -OUTPUT_FILE="" -CONFIG_FILE="" -LOG_DIR="logs" -TEST_CASE="" -GPUS="all" - -while [[ $# -gt 0 ]]; do - case $1 in - -h|--help) - show_usage - exit 0 - ;; - --no-cleanup) - NO_CLEANUP="true" - shift - ;; - --output) - OUTPUT_FILE="$2" - shift 2 - ;; - -c|--config) - CONFIG_FILE="$2" - shift 2 - ;; - --log-dir) - LOG_DIR="$2" - shift 2 - ;; - -t|--test-case) - TEST_CASE="$2" - shift 2 - ;; - --gpus) - GPUS="$2" - shift 2 - ;; - *) - print_error "Unknown option: $1" - show_usage - exit 1 - ;; - esac -done - -# Change to script directory -cd "$SCRIPT_DIR" - -# Check prerequisites -check_prerequisites - -# Determine configuration file (default to test_configs.json) -if [ -z "$CONFIG_FILE" ]; then - CONFIG_FILE="test_configs.json" - print_info "No configuration file provided, using default: $CONFIG_FILE" -fi - -if [ ! -f "$CONFIG_FILE" ]; then - print_error "Configuration file not found: $CONFIG_FILE" - exit 1 -fi - -print_info "Running tests with configuration: $CONFIG_FILE" - -args=("--dockerfile" "Dockerfile" "--base-dir" "." "--config-file" "$CONFIG_FILE" "--log-dir" "$LOG_DIR") - -if [ "$NO_CLEANUP" = "true" ]; then - args+=("--no-cleanup") -fi - -if [ -n "$OUTPUT_FILE" ]; then - args+=("--output" "$OUTPUT_FILE") -fi - -if [ -n "$TEST_CASE" ]; then - args+=("--test-case" "$TEST_CASE") -fi - -if [ -n "$GPUS" ]; then - args+=("--gpus" "$GPUS") -fi - -python3 "$TEST_SCRIPT" "${args[@]}" - -print_success "Test execution completed" \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/setup_rtsp_server.sh b/tools/inference_builder/builder/tests/setup_rtsp_server.sh deleted file mode 100644 index 6f359e5b..00000000 --- a/tools/inference_builder/builder/tests/setup_rtsp_server.sh +++ /dev/null @@ -1,376 +0,0 @@ -#!/bin/bash - -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -# RTSP Server Setup Script for Testing -# This script sets up an RTSP server using cvlc to stream MP4 videos for testing -# Supports both MP4 files directly and JPEG images (transcoded to MP4) - -set -e - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Function to print colored output -print_info() { - echo -e "${BLUE}[INFO]${NC} $1" -} - -print_success() { - echo -e "${GREEN}[SUCCESS]${NC} $1" -} - -print_warning() { - echo -e "${YELLOW}[WARNING]${NC} $1" -} - -print_error() { - echo -e "${RED}[ERROR]${NC} $1" -} - -# Default configuration -RTSP_PORT=8554 -RTSP_MOUNT_POINT="video-stream" -INPUT_FILE="" -CACHE_TIME=1500 -FRAME_RATE=1 -DURATION=5 -TEMP_DIR="/tmp/rtsp_server" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PID_FILE="${SCRIPT_DIR}/logs/rtsp_server.pid" -LOG_FILE="${SCRIPT_DIR}/logs/rtsp_server.log" - -# Function to show usage -show_usage() { - cat << EOF -Usage: $0 [OPTIONS] - -Options: - -p, --port PORT RTSP port (default: 8554) - -m, --mount MOUNT_POINT RTSP mount point (default: video-stream) - -c, --cache CACHE_TIME Network caching time in ms (default: 1500) - -f, --fps FRAME_RATE Frame rate for JPEG transcoding (default: 1) - -d, --duration DURATION Duration per frame in seconds for JPEG (default: 5) - --daemon Run as daemon in background - -k, --kill Kill existing RTSP server - -s, --status Check RTSP server status - -h, --help Show this help message - -Examples: - $0 sample_video.mp4 - $0 sample_image.jpg - $0 -p 8555 -m test-stream sample_image.jpg - $0 --daemon -f 2 -d 3 sample_image.jpg - $0 --kill - $0 --status - -Environment Variables: - RTSP_PORT Default RTSP port - RTSP_MOUNT_POINT Default mount point - INPUT_FILE Default input file path - FRAME_RATE Default frame rate for JPEG transcoding - DURATION Default duration per frame for JPEG - -EOF -} - -# Function to check prerequisites -check_prerequisites() { - print_info "Checking prerequisites..." - - # Check if cvlc is installed - if ! command -v cvlc &> /dev/null; then - print_error "cvlc (VLC command line) is not installed" - print_info "Install VLC: sudo apt-get install vlc" - exit 1 - fi - - # Check if ffmpeg is installed (for JPEG transcoding) - if ! command -v ffmpeg &> /dev/null; then - print_error "ffmpeg is not installed" - print_info "Install ffmpeg: sudo apt-get install ffmpeg" - exit 1 - fi - - # Check if port is available - if netstat -tuln 2>/dev/null | grep -q ":$RTSP_PORT "; then - print_warning "Port $RTSP_PORT is already in use" - print_info "Use --kill to stop existing server or specify different port" - fi - - # Create temp directory - mkdir -p "$TEMP_DIR" - - print_success "Prerequisites check passed" -} - -# Function to transcode JPEG to MP4 -transcode_jpeg_to_mp4() { - local jpeg_file="$1" - local output_mp4="$2" - local frame_rate="$3" - local duration="$4" - - print_info "Transcoding JPEG to MP4..." - print_info "Input: $jpeg_file" - print_info "Output: $output_mp4" - print_info "Frame rate: $frame_rate fps" - print_info "Duration per frame: $duration seconds" - - # Create a video from JPEG image with specified frame rate and duration - ffmpeg -loop 1 -i "$jpeg_file" -c:v libx264 -tune stillimage -crf 18 -preset ultrafast \ - -r "$frame_rate" -t "$duration" -y "$output_mp4" > /dev/null 2>&1 - - if [ $? -eq 0 ] && [ -f "$output_mp4" ]; then - print_success "JPEG transcoded to MP4 successfully" - return 0 - else - print_error "Failed to transcode JPEG to MP4" - return 1 - fi -} - -# Function to get file type -get_file_type() { - local file="$1" - local file_info=$(file "$file" 2>/dev/null) - - if echo "$file_info" | grep -q "JPEG\|JFIF"; then - echo "jpeg" - elif echo "$file_info" | grep -q "MP4\|MPEG\|AVI\|MOV\|WebM\|video"; then - echo "video" - else - echo "unknown" - fi -} - -# Function to kill existing RTSP server -kill_rtsp_server() { - if [ -f "$PID_FILE" ]; then - local pid=$(cat "$PID_FILE") - if kill -0 "$pid" 2>/dev/null; then - print_info "Killing existing RTSP server (PID: $pid)" - kill "$pid" - sleep 2 - if kill -0 "$pid" 2>/dev/null; then - print_warning "Server still running, force killing..." - kill -9 "$pid" - fi - print_success "RTSP server stopped" - else - print_warning "PID file exists but process not running" - fi - rm -f "$PID_FILE" - else - print_info "No RTSP server PID file found" - fi -} - -# Function to check server status -check_status() { - if [ -f "$PID_FILE" ]; then - local pid=$(cat "$PID_FILE") - if kill -0 "$pid" 2>/dev/null; then - print_success "RTSP server is running (PID: $pid)" - print_info "RTSP URL: rtsp://localhost:$RTSP_PORT/$RTSP_MOUNT_POINT" - return 0 - else - print_warning "PID file exists but process not running" - rm -f "$PID_FILE" - return 1 - fi - else - print_info "RTSP server is not running" - return 1 - fi -} - -# Function to cleanup temp files -cleanup_temp_files() { - if [ -d "$TEMP_DIR" ]; then - rm -rf "$TEMP_DIR" - print_info "Cleaned up temporary files" - fi -} - -# Function to start RTSP server -start_rtsp_server() { - local input_file="$1" - local daemon_mode="$2" - - # Validate input file - if [ ! -f "$input_file" ]; then - print_error "Input file not found: $input_file" - exit 1 - fi - - # Get file type - local file_type=$(get_file_type "$input_file") - local video_file="$input_file" - - if [ "$file_type" = "jpeg" ]; then - print_info "JPEG file detected, transcoding to MP4..." - local output_mp4="$TEMP_DIR/transcoded_$(basename "$input_file" .jpg).mp4" - - if ! transcode_jpeg_to_mp4 "$input_file" "$output_mp4" "$FRAME_RATE" "$DURATION"; then - exit 1 - fi - - video_file="$output_mp4" - print_info "Using transcoded MP4: $video_file" - elif [ "$file_type" = "video" ]; then - print_info "Video file detected, using directly" - else - print_warning "Unknown file type: $input_file" - print_info "Attempting to use as video file..." - fi - - # Kill existing server - kill_rtsp_server - - # Create cvlc command for video streaming - # Use loop to continuously stream the video - # Add headless flags for Docker/CI environments - local cvlc_cmd="vlc-wrapper -I dummy --no-video-title-show --no-xlib --loop \"$video_file\" \":sout=#gather:rtp{sdp=rtsp://:$RTSP_PORT/$RTSP_MOUNT_POINT}\" :network-caching=$CACHE_TIME :sout-all :sout-keep" - - print_info "Starting RTSP server..." - print_info "Input file: $input_file" - print_info "Video file: $video_file" - print_info "RTSP URL: rtsp://localhost:$RTSP_PORT/$RTSP_MOUNT_POINT" - print_info "Command: $cvlc_cmd" - - if [ "$daemon_mode" = "true" ]; then - # Run as daemon - print_info "Running in daemon mode" - nohup bash -c "$cvlc_cmd" > "$LOG_FILE" 2>&1 & - local pid=$! - echo "$pid" > "$PID_FILE" - sleep 2 - - if kill -0 "$pid" 2>/dev/null; then - print_success "RTSP server started in background (PID: $pid)" - print_info "Log file: $LOG_FILE" - print_info "PID file: $PID_FILE" - else - print_error "Failed to start RTSP server" - if [ -f "$LOG_FILE" ]; then - print_error "Log file contents:" - cat "$LOG_FILE" - fi - exit 1 - fi - else - # Run in foreground - print_info "Running in foreground mode (Ctrl+C to stop)" - print_info "RTSP server will be available at: rtsp://localhost:$RTSP_PORT/$RTSP_MOUNT_POINT" - echo "$$" > "$PID_FILE" - - # Set up cleanup on exit - trap cleanup_temp_files EXIT - - exec bash -c "$cvlc_cmd" - fi -} - -# Parse command line arguments -DAEMON_MODE="false" -KILL_SERVER="false" -CHECK_STATUS="false" - -while [[ $# -gt 0 ]]; do - case $1 in - -p|--port) - RTSP_PORT="$2" - shift 2 - ;; - -m|--mount) - RTSP_MOUNT_POINT="$2" - shift 2 - ;; - -c|--cache) - CACHE_TIME="$2" - shift 2 - ;; - -f|--fps) - FRAME_RATE="$2" - shift 2 - ;; - -d|--duration) - DURATION="$2" - shift 2 - ;; - --daemon) - DAEMON_MODE="true" - shift - ;; - -k|--kill) - KILL_SERVER="true" - shift - ;; - -s|--status) - CHECK_STATUS="true" - shift - ;; - -h|--help) - show_usage - exit 0 - ;; - -*) - print_error "Unknown option: $1" - show_usage - exit 1 - ;; - *) - if [ -z "$INPUT_FILE" ]; then - INPUT_FILE="$1" - else - print_error "Multiple input files specified" - exit 1 - fi - shift - ;; - esac -done - -# Handle special commands -if [ "$KILL_SERVER" = "true" ]; then - kill_rtsp_server - cleanup_temp_files - exit 0 -fi - -if [ "$CHECK_STATUS" = "true" ]; then - check_status - exit $? -fi - -# Check if input file is provided -if [ -z "$INPUT_FILE" ]; then - print_error "Input file (JPEG or MP4) is required" - show_usage - exit 1 -fi - -# Check prerequisites -check_prerequisites - -# Start RTSP server -start_rtsp_server "$INPUT_FILE" "$DAEMON_MODE" \ No newline at end of file diff --git a/tools/inference_builder/builder/tests/test_configs.json b/tools/inference_builder/builder/tests/test_configs.json deleted file mode 100644 index a3e697a0..00000000 --- a/tools/inference_builder/builder/tests/test_configs.json +++ /dev/null @@ -1,504 +0,0 @@ -[ - { - "name": "frame_sampling_on_files", - "description": "Test with default TensorRT and CUDA versions", - "build_args": { - "TEST_APP_NAME": "frame_sampling", - "CACHE_BUSTER": "default_test" - }, - "test_config": { - "default_enable": true, - "timeout": 30, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes" - }, - "volumes": { - "frame_sampling/models": "/workspace/models" - }, - "cmd": [ - "--video-files", "file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=10&start=0&duration=10000000000" - ], - "prerequisite_script": null - } - }, - { - "name": "frame_sampling_on_streams", - "description": "Test with default TensorRT and CUDA versions", - "build_args": { - "TEST_APP_NAME": "frame_sampling", - "CACHE_BUSTER": "default_test" - }, - "test_config": { - "default_enable": false, - "timeout": 30, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes" - }, - "volumes": { - "frame_sampling/models": "/workspace/models" - }, - "cmd": [ - "--video-streams", "rtsp://localhost:8554/test?frames=10&interval=100000000&chunks=3&scale=640x360" - ], - "prerequisite_script": "./setup_rtsp_server.sh frame.jpg -m test -f 30 --daemon" - } - }, - { - "name": "asset_upload_test", - "description": "Test asset upload", - "build_args": { - "TEST_APP_NAME": "asset_management", - "CACHE_BUSTER": "asset_management", - "SERVER_TYPE": "fastapi", - "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 5, - "env": { - "MODEL_REPO": "/workspace/model-repo" - }, - "volumes": { - "asset_management/models": "/workspace/models" - }, - "ports": { - "8000": "8000" - }, - "test_requests": [ - { - "payload_path": "asset_management/payloads/assets.jsonl", - "method": "POST", - "headers": { - "Content-Type": "multipart/form-data" - } - }, - { - "method": "GET", - "headers": { - "Content-Type": "application/json" - } - } - ], - "endpoint": "/v1/files" - } - }, - { - "name": "Output Types Compatibility Test", - "description": "Test numpy array output type compatibility with simplified dummy backend", - "build_args": { - "TEST_APP_NAME": "output_types", - "CACHE_BUSTER": "output_types_simplified", - "SERVER_TYPE": "fastapi", - "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" - }, - - "test_config": { - "default_enable": true, - "timeout": 10, - "volumes": { - "output_types/models": "/workspace/models" - }, - "env": { - "DEBUG": "0" - }, - "cmd": [] - } - }, - { - "name": "fastapi_concurrency_test", - "description": "Build concurrency app and run threaded client", - "build_args": { - "TEST_APP_NAME": "concurrency", - "CACHE_BUSTER": "concurrency_fastapi", - "SERVER_TYPE": "fastapi", - "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 30, - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [] - } - }, - { - "name": "negative_invalid_route_config_1", - "description": "Negative test: Invalid route configuration should fail with proper error", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_route_test", - "APP_YAML_PATH": "./negative/route_1.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 5, - "expected_error": "ERR_ROUTE_001", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_invalid_route_config_2", - "description": "Negative test: Invalid route configuration should fail with proper error", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_route_test", - "APP_YAML_PATH": "./negative/route_2.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 5, - "expected_error": "ERR_ROUTE_001", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_invalid_route_config_3", - "description": "Negative test: Invalid route configuration should fail with proper error", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_route_test", - "APP_YAML_PATH": "./negative/route_3.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 5, - "expected_error": "ERR_ROUTE_001", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_invalid_route_config_4", - "description": "Negative test: Invalid route configuration should fail with proper error", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_route_test", - "APP_YAML_PATH": "./negative/route_4.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 5, - "expected_error": "ERR_ROUTE_002", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_invalid_route_config_5", - "description": "Negative test: Invalid route configuration should fail with proper error", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_route_test", - "APP_YAML_PATH": "./negative/route_5.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 5, - "expected_error": "ERR_ROUTE_002", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_invalid_model_repo", - "description": "Negative test: Invalid model repository", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_model_test", - "APP_YAML_PATH": "./negative/model.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 5, - "expected_error": "ERR_SYS_001", - "volumes": {}, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_invalid_processor_1", - "description": "Negative test: Invalid post-processor", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_pp_test", - "APP_YAML_PATH": "./negative/pp_1.yaml" - }, - "test_config": { - "default_enable": true, - "timeout":10, - "expected_error": "ERR_PROC_001", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_invalid_processor_2", - "description": "Negative test: Invalid post-processor", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_pp_test", - "APP_YAML_PATH": "./negative/pp_2.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 10, - "expected_error": "ERR_PROC_001", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_invalid_processor_3", - "description": "Negative test: Invalid post-processor", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_pp_test", - "APP_YAML_PATH": "./negative/pp_3.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 10, - "expected_error": "ERR_PROC_004", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_dataflow_test_1", - "description": "Negative test: Invalid base64 input", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_df_test", - "APP_YAML_PATH": "./negative/df_1.yaml", - "SERVER_TYPE": "fastapi", - "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" - }, - - "test_config": { - "default_enable": true, - "timeout": 5, - "volumes": { - "output_types/models": "/workspace/models" - }, - "expected_error": "ERR_DF_002", - "cmd": [] - } - }, - { - "name": "negative_dataflow_test_2", - "description": "Negative test: Invalid base64 input", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_df_test", - "APP_YAML_PATH": "./negative/df_2.yaml", - "SERVER_TYPE": "fastapi", - "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" - }, - - "test_config": { - "default_enable": true, - "timeout": 5, - "volumes": { - "output_types/models": "/workspace/models" - }, - "expected_error": "ERR_DF_002", - "cmd": [] - } - }, - { - "name": "negative_dataflow_test_3", - "description": "Negative test: Invalid asset", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_df_test", - "APP_YAML_PATH": "./negative/df_3.yaml" - }, - - "test_config": { - "default_enable": true, - "timeout": 10, - "volumes": { - "output_types/models": "/workspace/models" - }, - "expected_error": "ERR_DF_003", - "cmd": [ "--video", "hello" ] - } - }, - { - "name": "negative_dataflow_test_4", - "description": "Negative test: Invalid video frame sampling parameters", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_df_test", - "APP_YAML_PATH": "./negative/video.yaml" - }, - - "test_config": { - "default_enable": true, - "timeout": 10, - "volumes": { - "output_types/models": "/workspace/models" - }, - "expected_error": "ERR_VIDEO_001", - "cmd": [ - "--video-chunk", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=10&duration=10000000000", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=10&duration=20000000000" - ] - } - }, - { - "name": "negative_dataflow_test_5", - "description": "Negative test: Invalid video frame sampling parameters", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_df_test", - "APP_YAML_PATH": "./negative/video.yaml" - }, - - "test_config": { - "default_enable": true, - "timeout": 10, - "volumes": { - "output_types/models": "/workspace/models" - }, - "expected_error": "ERR_VIDEO_001", - "cmd": [ - "--video-chunk", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=10&duration=10000000000", - "/opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h265.mp4?frames=1&duration=10000000000" - ] - } - }, - { - "name": "negative_dataflow_test_6", - "description": "Negative test: Invalid base64 string", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_df_test", - "APP_YAML_PATH": "./negative/image.yaml" - }, - - "test_config": { - "default_enable": true, - "timeout": 10, - "volumes": { - "output_types/models": "/workspace/models" - }, - "expected_error": "ERR_DF_002", - "cmd": [ "--image", "hello" ] - } - }, - { - "name": "negative_model_output_incomplete", - "description": "Negative test: Invalid model output", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_mo_test", - "APP_YAML_PATH": "./negative/mo_1.yaml" - }, - "test_config": { - "default_enable": true, - "timeout": 10, - "expected_error": "ERR_MO_002", - "volumes": { - "concurrency/models": "/workspace/models" - }, - "cmd": [ "--inputs", "string" ] - } - }, - { - "name": "negative_model_input_incomplete", - "description": "Negative test: Invalid base64 input", - "build_args": { - "TEST_APP_NAME": "negative", - "CACHE_BUSTER": "negative_df_test", - "APP_YAML_PATH": "./negative/mo_2.yaml", - "SERVER_TYPE": "fastapi", - "OPENAPI_SPEC": "builder/samples/dummy/openapi.yaml" - }, - - "test_config": { - "default_enable": true, - "timeout": 5, - "volumes": { - "output_types/models": "/workspace/models" - }, - "expected_error": "ERR_DF_006", - "cmd": [] - } - }, - { - "name": "live_stream_graceful_deletion_test", - "description": "Test graceful deletion of RTSP stream during processing", - "build_args": { - "TEST_APP_NAME": "asset_management", - "CACHE_BUSTER": "live_stream_deletion", - "SERVER_TYPE": "fastapi", - "OPENAPI_SPEC": "builder/tests/asset_management/openapi.yaml" - }, - "test_config": { - "default_enable": false, - "timeout": 120, - "env": { - "NVSTREAMMUX_ADAPTIVE_BATCHING": "yes", - "DEBUG": "0", - "HTTP_PORT": "8000" - }, - "volumes": { - "asset_management/models": "/workspace/models" - }, - "ports": { - "8000": "8000" - }, - "assets": [ - { - "assetId": "00000000-0000-4000-8000-000000000001", - "path": "rtsp://localhost:8554/test", - "fileName": "", - "mimeType": "", - "duration": 0, - "username": "", - "password": "", - "description": "Test RTSP stream for graceful deletion", - "size": 0, - "live": true - } - ], - "test_requests": [ - { - "scheduled_time": 10, - "method": "POST", - "endpoint": "/v1/inference", - "payload_path": "asset_management/payloads/start_stream.jsonl", - "async": true - }, - { - "scheduled_time": 15, - "method": "DELETE", - "endpoint": "/v1/live-streams/00000000-0000-4000-8000-000000000001" - } - ], - "prerequisite_script": "./setup_rtsp_server.sh frame.jpg -m test -f 30 --daemon" - } - } -] diff --git a/tools/inference_builder/builder/tests/test_docker_builds.py b/tools/inference_builder/builder/tests/test_docker_builds.py deleted file mode 100644 index fe2d6014..00000000 --- a/tools/inference_builder/builder/tests/test_docker_builds.py +++ /dev/null @@ -1,2971 +0,0 @@ -#!/usr/bin/env python3 - -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -""" -Test script for Docker container builds with different arguments. -This script tests the Dockerfile in the tests directory with various configurations. - -Security Features: -- Input validation for app names and script commands to prevent command injection -- File path validation to prevent directory traversal attacks -- Safe subprocess calls using argument lists instead of shell string interpolation -- Logging of all executed commands for audit trails -""" - -import subprocess -import sys -import os -import json -import time -import argparse -from pathlib import Path -import shutil -import socket -from typing import Dict, List, Optional, Tuple -import logging -import re -import urllib.request -import urllib.error -from huggingface_hub import snapshot_download - -# Set up logging -logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') -logger = logging.getLogger(__name__) - - -def validate_app_name(app_name: str) -> bool: - """Validate app name to prevent command injection.""" - # Allow only alphanumeric characters, underscores, and hyphens - return bool(re.match(r'^[a-zA-Z0-9_-]+$', app_name)) - - -def validate_script_command(script_command: str) -> bool: - """Validate script command using a flexible approach that allows legitimate arguments.""" - if not isinstance(script_command, str) or not script_command.strip(): - return False - - script_command = script_command.strip() - - # Split command into parts for analysis - try: - import shlex - parts = shlex.split(script_command) - except ValueError: - # Invalid shell syntax - return False - - if not parts: - return False - - # Check the main command/script - main_command = parts[0] - - # Allow specific known scripts - allowed_script_names = [ - "setup_rtsp_server.sh", - "./setup_rtsp_server.sh", - "prepare_engine.sh", - "./prepare_engine.sh", - ] - - allowed_shell_commands = ["bash", "sh"] - - # Validate main command - if main_command not in allowed_script_names and main_command not in allowed_shell_commands: - return False - - # If it's a shell command, check the script being executed - if main_command in allowed_shell_commands and len(parts) > 1: - script_name = parts[1] - if script_name not in allowed_script_names: - return False - - # Validate all arguments - for arg in parts[1:]: - if not validate_script_arg(arg): - return False - - # Check for dangerous patterns in the full command - dangerous_patterns = [ - r'[;&|`]', # Shell metacharacters (but allow some like spaces) - r'\$\(', # Command substitution - r'`', # Backticks - r'>>?', # Redirections - r'\|\|', # OR operator - r'&&', # AND operator - r'<', # Input redirection - r'\x00', # Null bytes - ] - - for pattern in dangerous_patterns: - if re.search(pattern, script_command): - return False - - return True - - -def validate_script_arg(arg: str) -> bool: - """Validate individual script argument.""" - if not isinstance(arg, str): - return False - - # Check for null bytes and control characters - if '\x00' in arg or any(ord(c) < 32 for c in arg if c not in ['\t']): - return False - - # Allow common script arguments - dangerous_chars = ['`', '$', ';', '|', '>', '<', '(', ')'] - if any(char in arg for char in dangerous_chars): - return False - - # Allow legitimate flags and file arguments - if arg.startswith('-'): - # Allow common flag patterns - if not re.match(r'^-{1,2}[a-zA-Z0-9][a-zA-Z0-9_-]*$', arg): - return False - - # Prevent excessively long arguments - if len(arg) > 1024: - return False - - return True - - -def validate_safe_path(path: str) -> bool: - """Validate file path to prevent directory traversal and command injection.""" - if not path or not isinstance(path, str): - return False - - # Check for double slashes - if '//' in path: - return False - - # Check for absolute paths that could access system directories - if os.path.isabs(path): - system_dirs = ['/etc', '/sys', '/proc', '/dev', '/boot', '/usr/bin', '/usr/sbin', '/root'] - for sys_dir in system_dirs: - if path.startswith(sys_dir): - return False - - # Check for invalid characters - invalid_chars = ['<', '>', ':', '"', '|', '?', '*', '\\'] - if any(char in path for char in invalid_chars): - return False - - return True - -def validate_config_file_path(config_file: str) -> bool: - """Validate configuration file path for security.""" - if not validate_safe_path(config_file): - return False - - # Ensure the filename ends with .json - filename = os.path.basename(config_file) - if not filename.lower().endswith('.json'): - return False - - return True - -def validate_dockerfile_path(dockerfile: str) -> bool: - """Validate Dockerfile path for security.""" - if not validate_safe_path(dockerfile): - return False - - # Ensure the filename is Dockerfile or has .dockerfile extension - filename = os.path.basename(dockerfile) - if not (filename.lower() == 'dockerfile' or filename.lower().endswith('.dockerfile')): - return False - - return True - -def validate_log_directory(log_dir: str) -> bool: - """Validate log directory path for security.""" - if not validate_safe_path(log_dir): - return False - - # Prevent access to system directories - if log_dir.startswith('/') and not log_dir.startswith('./'): - return False - - return True - -def validate_gitlab_token(token: str) -> bool: - """Validate GitLab token format.""" - if not token: - return True # Empty token is allowed - - # Basic validation for GitLab token format - if not isinstance(token, str) or len(token) < 10: - return False - - # Check for suspicious patterns - suspicious_patterns = [' bool: - """Validate docker argument to prevent command injection while allowing legitimate flags.""" - if not isinstance(arg, str): - return False - - # Check for null bytes and control characters - if '\x00' in arg or any(ord(c) < 32 for c in arg if c not in ['\t', '\n', '\r']): - return False - - # Check for dangerous characters and patterns (but allow legitimate usage) - dangerous_patterns = [ - r'[;|`$()]', # Shell metacharacters (removed & for now) - r'\$\(', # Command substitution - r'`', # Backticks - r'>>?', # Redirections - r'\|\|', # OR operator - r'&&', # AND operator for command chaining - r'[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]', # Control characters - ] - - for pattern in dangerous_patterns: - if re.search(pattern, arg): - return False - - # Check for dangerous & usage (but allow in URL query parameters) - if '&' in arg: - # Allow & in URL-like contexts (after ?) - if '?' not in arg: - # & without ? suggests command chaining, not URL parameter - return False - # Check for command chaining patterns even with ? - if ' &' in arg or '& ' in arg or arg.endswith('&'): - return False - - # Additional dangerous characters for docker contexts (be selective) - # Note: Removed '?' to allow URL query parameters, '*' and '!' for legitimate use - dangerous_chars = ['[', ']', '{', '}', '\\'] - if any(char in arg for char in dangerous_chars): - return False - - # Check for wildcard patterns that could be dangerous in specific contexts - if '*' in arg and any(pattern in arg for pattern in ['*.*', '*.sh', '*.py', '*/', '/*']): - return False - - # Allow legitimate command-line flags but prevent injection attempts - if arg.strip().startswith('-'): - # Allow common legitimate patterns - legitimate_flag_patterns = [ - r'^--[a-zA-Z0-9][a-zA-Z0-9_-]*$', # --flag-name - r'^--[a-zA-Z0-9][a-zA-Z0-9_-]*=.*$', # --flag=value - r'^-[a-zA-Z0-9]$', # -f - r'^-[a-zA-Z0-9][a-zA-Z0-9]*$', # -abc - ] - - # Check if it matches any legitimate pattern - is_legitimate = any(re.match(pattern, arg) for pattern in legitimate_flag_patterns) - - if not is_legitimate: - return False - - # Additional checks for flag values (after =) - if '=' in arg: - flag_value = arg.split('=', 1)[1] - # Check flag value for dangerous patterns - if any(char in flag_value for char in ['`', '$', ';', '&', '|', '(', ')']): - return False - - # Prevent excessively long arguments (potential DoS) - if len(arg) > 8192: # Reasonable limit for docker arguments - return False - - # Check for potential escape sequences in non-flag arguments - if not arg.startswith('-') and '\\' in arg: - if any(seq in arg for seq in ['\\n', '\\r', '\\t', '\\x', '\\u']): - return False - - return True - - -def validate_env_var_name(name: str) -> bool: - """Validate environment variable name.""" - if not isinstance(name, str) or not name: - return False - - # Environment variable names should be alphanumeric + underscore, starting with letter or underscore - return bool(re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', name)) - - -def validate_env_var_value(value: str) -> bool: - """Validate environment variable value.""" - if not isinstance(value, str): - return False - - # Check for null bytes - if '\x00' in value: - return False - - # Check for dangerous shell characters - dangerous_chars = ['`', '$', ';', '&', '|', '(', ')', '>', '<'] - if any(char in value for char in dangerous_chars): - return False - - return True - - -def validate_http_method(method: str) -> bool: - """Validate HTTP method.""" - if not isinstance(method, str): - return False - - # Allow common HTTP methods - allowed_methods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'] - return method.upper() in allowed_methods - - -def validate_http_header_name(name: str) -> bool: - """Validate HTTP header name.""" - if not isinstance(name, str) or not name: - return False - - # Header names should be alphanumeric with hyphens - # Follow RFC 7230 field-name = token - if not re.match(r'^[a-zA-Z0-9!#$%&\'*+\-.^_`|~]+$', name): - return False - - # Prevent excessively long header names - if len(name) > 256: - return False - - return True - - -def validate_http_header_value(value: str) -> bool: - """Validate HTTP header value.""" - if not isinstance(value, str): - return False - - # Check for null bytes and control characters (except tab and space) - if '\x00' in value or any(ord(c) < 32 for c in value if c not in ['\t', ' ']): - return False - - # Check for newlines that could cause header injection - if '\n' in value or '\r' in value: - return False - - # Prevent excessively long header values - if len(value) > 8192: - return False - - return True - - -def validate_volume_path(path: str) -> bool: - """Validate volume mount path to prevent injection attacks. - - Note: Allows legitimate relative paths with .. for test configs. - """ - if not isinstance(path, str) or not path: - return False - - # Check for null bytes and control characters - if '\x00' in path or any(ord(c) < 32 for c in path if c not in ['\t']): - return False - - # Check for dangerous path patterns (but allow relative paths) - # Allow: ../tao/, ./models, ../../shared - # Reject: /../../../etc/passwd (absolute path traversal attacks) - - # Check for double slashes (suspicious) - if '//' in path: - return False - - # Check for Windows-style backslashes (not needed in Docker contexts) - if '\\' in path: - return False - - # Check for absolute path traversal attacks (starting with / and going up) - # This would be trying to escape from an absolute path to system directories - if path.startswith('/') and '/../' in path: - # Check if trying to access system directories - system_dirs = ['/../etc', '/../root', '/../sys', '/../proc', '/../dev'] - if any(path.startswith(sys_dir) for sys_dir in system_dirs): - return False - - # Check for dangerous shell characters and command injection attempts - # Allow ~ for home directory expansion at the start of path - dangerous_chars = ['`', '$', ';', '&', '|', '(', ')', '>', '<', '*', '?', '!', '[', ']', '{', '}'] - if any(char in path for char in dangerous_chars): - return False - - # Allow ~ only at the start of path (for home directory expansion) - if '~' in path and not path.startswith('~'): - return False - - # Check for spaces at beginning/end (could be injection attempts) - if path.startswith(' ') or path.endswith(' '): - return False - - # Check for argument injection (starting with dash) - if path.startswith('-'): - return False - - # Ensure path doesn't contain colon (except for Windows drive letters or container paths) - colon_count = path.count(':') - if colon_count > 1: # Allow one colon for Windows drive letters or container paths - return False - if colon_count == 1: - # Allow Windows drive letters (C:) or absolute container paths (/app:) - if not (re.match(r'^[A-Za-z]:', path) or ':' in path[1:]): - return False - - # Additional check: ensure reasonable path length to prevent buffer overflow attacks - if len(path) > 4096: # Most systems limit paths to 4096 characters - return False - - return True - - -def validate_build_arg_name(name: str) -> bool: - """Validate Docker build argument name to prevent injection.""" - if not isinstance(name, str) or not name: - return False - - # Build arg names should be alphanumeric + underscore, no dashes at start - if name.startswith('-'): - return False - - # Allow standard environment variable naming convention - return bool(re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*$', name)) - - -def validate_build_arg_value(value: str) -> bool: - """Validate Docker build argument value to prevent injection.""" - if not isinstance(value, str): - return False - - # Check for null bytes - if '\x00' in value: - return False - - # Check for dangerous shell characters that could cause issues - dangerous_chars = ['`', '$', ';', '&', '|', '(', ')', '>', '<', '\n', '\r'] - if any(char in value for char in dangerous_chars): - return False - - # Check for argument injection attempts - if value.strip().startswith('-'): - return False - - return True - - -def validate_image_name(image_name: str) -> bool: - """Validate Docker image name to prevent injection.""" - if not isinstance(image_name, str) or not image_name: - return False - - # Check for null bytes - if '\x00' in image_name: - return False - - # Check for dangerous characters - dangerous_chars = ['`', '$', ';', '&', '|', '(', ')', '>', '<', ' ', '\n', '\r'] - if any(char in image_name for char in dangerous_chars): - return False - - # Basic docker image name validation (simplified) - # Allow alphanumeric, hyphens, underscores, slashes, colons, dots - if not re.match(r'^[a-zA-Z0-9._/-]+(?::[a-zA-Z0-9._-]+)?$', image_name): - return False - - return True - - -def validate_test_config(test_config: dict) -> Tuple[bool, str]: - """Validate test configuration to prevent command injection.""" - if not isinstance(test_config, dict): - return False, "Test config must be a dictionary" - - # Validate environment variables - if "env" in test_config: - if not isinstance(test_config["env"], dict): - return False, "env must be a dictionary" - - for key, value in test_config["env"].items(): - if not validate_env_var_name(key): - return False, f"Invalid environment variable name: {key}" - if not validate_env_var_value(str(value)): - return False, f"Invalid environment variable value for {key}: {value}" - - # Validate volume mounts - if "volumes" in test_config: - if not isinstance(test_config["volumes"], dict): - return False, "volumes must be a dictionary" - - for host_path, container_path in test_config["volumes"].items(): - if not validate_volume_path(host_path): - return False, f"Invalid host path in volume mount: {host_path}" - if not validate_volume_path(container_path): - return False, f"Invalid container path in volume mount: {container_path}" - - # Validate command arguments - if "cmd" in test_config: - if not isinstance(test_config["cmd"], list): - return False, "cmd must be a list" - - for arg in test_config["cmd"]: - if not validate_docker_arg(str(arg)): - return False, f"Invalid command argument: {arg}" - - # Validate timeout - if "timeout" in test_config: - if not isinstance(test_config["timeout"], (int, float)) or test_config["timeout"] <= 0: - return False, "timeout must be a positive number" - if test_config["timeout"] > 3600: # Max 1 hour - return False, "timeout cannot exceed 3600 seconds" - - # Validate prerequisite script - if "prerequisite_script" in test_config: - script = test_config["prerequisite_script"] - if script and not validate_script_command(script): - return False, f"Invalid prerequisite script: {script}" - - # Validate auto_validation configuration - if "auto_validation" in test_config: - if not isinstance(test_config["auto_validation"], str): - return False, "auto_validation must be a string path" - if not validate_safe_path(test_config["auto_validation"]): - return False, f"Invalid auto_validation path: {test_config['auto_validation']}" - # Validate test_requests (must be a list of objects with optional payload_path, method, headers) - if "test_requests" in test_config: - test_requests = test_config["test_requests"] - if not isinstance(test_requests, list): - return False, "test_requests must be a list" - - for item in test_requests: - # Must be dict format with payload_path (optional), method (optional), and headers (optional) - if not isinstance(item, dict): - return False, "test_requests items must be dictionaries" - - # Validate payload_path if present (optional for GET requests without body) - if "payload_path" in item: - payload_path = item["payload_path"] - if not isinstance(payload_path, str): - return False, "test_requests 'payload_path' must be a string" - if not validate_safe_path(payload_path): - return False, f"Invalid test_requests payload_path: {payload_path}" - - # Validate method if specified (optional, defaults to POST) - if "method" in item: - method = item["method"] - if not validate_http_method(method): - return False, f"Invalid HTTP method in payload_config: {method}" - - # Validate headers if specified (optional) - if "headers" in item: - headers = item["headers"] - if not isinstance(headers, dict): - return False, "payload_config headers must be a dictionary" - for header_name, header_value in headers.items(): - if not validate_http_header_name(header_name): - return False, f"Invalid HTTP header name in payload_config: {header_name}" - if not validate_http_header_value(str(header_value)): - return False, f"Invalid HTTP header value in payload_config for {header_name}: {header_value}" - - # Validate scheduled_time if specified (optional, for sequential execution) - if "scheduled_time" in item: - if not isinstance(item["scheduled_time"], (int, float)) or item["scheduled_time"] < 0: - return False, "test_requests 'scheduled_time' must be a non-negative number" - - # Validate async if specified (optional, for non-blocking requests) - if "async" in item: - if not isinstance(item["async"], bool): - return False, "test_requests 'async' must be a boolean" - - # Validate endpoint - if "endpoint" in test_config: - endpoint = test_config["endpoint"] - if not isinstance(endpoint, str): - return False, "endpoint must be a string" - # Basic validation for endpoint path format - if not endpoint.startswith("/"): - return False, "endpoint must start with /" - # Check for dangerous characters - if any(char in endpoint for char in ['<', '>', '"', '{', '}', '|', '\\', '^', '`', ' ']): - return False, f"Invalid characters in endpoint: {endpoint}" - - # Validate expected_error for negative tests - if "expected_error" in test_config: - expected_error = test_config["expected_error"] - if not isinstance(expected_error, str): - return False, "expected_error must be a string" - if not expected_error: - return False, "expected_error cannot be empty" - # Basic validation - should be an error code pattern (e.g., ERR_ROUTE_001) - if len(expected_error) > 100: - return False, "expected_error is too long (max 100 characters)" - - return True, "" - - -class DockerBuildTester: - def __init__(self, dockerfile_path: str, base_dir: str, log_dir: Optional[str] = None): - self.dockerfile_path = Path(dockerfile_path) - self.base_dir = Path(base_dir) - self.log_dir = Path(log_dir) if log_dir else Path("logs") - self.test_results = [] - - # Create log directory if it doesn't exist - self.log_dir.mkdir(exist_ok=True) - - def download_models(self, models_config: Dict, config_dir: Path) -> Tuple[bool, str]: - """Download models from NGC based on the models configuration. - - Args: - models_config: Dictionary with model configurations - config_dir: Directory containing the test config (for resolving relative paths) - - Returns: - Tuple of (success, message) - """ - if not models_config: - return True, "No models to download" - - for model_name, model_info in models_config.items(): - try: - source = model_info.get("source", "NGC") - - if source == "HF": - # Handle Hugging Face model download - target_dir = Path(model_info["target"]).expanduser() - model_path = model_info["path"] # e.g., "Qwen/Qwen2.5-VL-3B-Instruct" - - # Final destination - final_model_dir = target_dir / model_name - - # Check if model already exists - if final_model_dir.exists(): - logger.info(f"✅ Model '{model_name}' already exists at {final_model_dir}, skipping download") - continue - - logger.info(f"📥 Downloading model '{model_name}' from Hugging Face...") - logger.info(f" HF path: {model_path}") - logger.info(f" Target: {final_model_dir}") - - # Create target directory - target_dir.mkdir(parents=True, exist_ok=True) - - # Download using huggingface_hub - hf_token = os.environ.get("HF_TOKEN") - try: - snapshot_download( - model_path, - local_dir=str(final_model_dir), - token=hf_token, - ) - except Exception as e: - error_msg = f"Failed to download model '{model_name}' from HF: {e}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - # Execute post-script if specified (for HF models) - post_script = model_info.get("post_script") - if post_script: - logger.info(f"🔧 Executing post-script for '{model_name}': {post_script}") - try: - script_result = subprocess.run( - post_script, - shell=True, - capture_output=True, - text=True, - cwd=str(final_model_dir), - timeout=600 - ) - if script_result.returncode == 0: - logger.info(f"✅ Post-script executed successfully for '{model_name}'") - if script_result.stdout.strip(): - logger.info(f" Output: {script_result.stdout.strip()}") - else: - error_msg = ( - f"Post-script failed for '{model_name}' " - f"(exit code {script_result.returncode}): " - f"{script_result.stderr.strip()}" - ) - logger.error(f"❌ {error_msg}") - return False, error_msg - except subprocess.TimeoutExpired: - error_msg = f"Post-script timed out for '{model_name}' after 600 seconds" - logger.error(f"❌ {error_msg}") - return False, error_msg - except Exception as e: - error_msg = f"Failed to execute post-script for '{model_name}': {str(e)}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - logger.info(f"✅ Successfully downloaded model '{model_name}' from Hugging Face") - continue - - if source != "NGC": - logger.warning(f"⚠️ Unsupported model source '{source}' for {model_name}, skipping") - continue - - # NGC model download logic - target_dir = Path(model_info["target"]).expanduser() - model_path = model_info["path"] - version = model_info["version"] - configs_path = model_info.get("configs", "") - - # Construct the full NGC path - ngc_path = f"{model_path}:{version}" - - # Determine the downloaded folder name (NGC naming convention) - # e.g., "nvidia/tao/grounding_dino:grounding_dino_swin_tiny_commercial_deployable_v1.0" - # becomes "grounding_dino_vgrounding_dino_swin_tiny_commercial_deployable_v1.0" - model_base_name = model_path.split('/')[-1] # e.g., "grounding_dino" - downloaded_folder = f"{model_base_name}_v{version}" - - # Final destination - final_model_dir = target_dir / model_name - - # Check if model already exists - if final_model_dir.exists(): - logger.info(f"✅ Model '{model_name}' already exists at {final_model_dir}, skipping download") - continue - - logger.info(f"📥 Downloading model '{model_name}' from NGC...") - logger.info(f" NGC path: {ngc_path}") - logger.info(f" Target: {final_model_dir}") - - # Create target directory - target_dir.mkdir(parents=True, exist_ok=True) - - # Download from NGC - download_cmd = ["ngc", "registry", "model", "download-version", ngc_path] - logger.info(f" Running: {' '.join(download_cmd)}") - - result = subprocess.run( - download_cmd, - capture_output=True, - text=True, - timeout=600 # 10 minute timeout for download - ) - - if result.returncode != 0: - error_msg = f"Failed to download model '{model_name}': {result.stderr}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - # Move the downloaded folder to the target location - downloaded_path = Path(downloaded_folder) - if not downloaded_path.exists(): - error_msg = f"Downloaded folder not found: {downloaded_path}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - logger.info(f" Moving {downloaded_path} to {final_model_dir}") - shutil.move(str(downloaded_path), str(final_model_dir)) - - # Set permissions - try: - os.chmod(final_model_dir, 0o777) - logger.info(f" Set permissions: chmod 777 {final_model_dir}") - except Exception as e: - logger.warning(f"⚠️ Failed to set permissions on {final_model_dir}: {e}") - - # Copy config files if specified - if configs_path: - # Resolve configs_path relative to test config directory - source_configs = (config_dir / configs_path).resolve() - if source_configs.exists(): - logger.info(f" Copying configs from {source_configs} to {final_model_dir}") - # Copy all files from source_configs to final_model_dir - for item in source_configs.iterdir(): - dest = final_model_dir / item.name - if item.is_file(): - shutil.copy2(str(item), str(dest)) - elif item.is_dir(): - shutil.copytree(str(item), str(dest), dirs_exist_ok=True) - logger.info(f" ✅ Copied config files") - else: - logger.warning(f"⚠️ Config path not found: {source_configs}") - - # Execute post-script if specified - post_script = model_info.get("post_script") - if post_script: - logger.info(f"🔧 Executing post-script for '{model_name}': {post_script}") - try: - script_result = subprocess.run( - post_script, - shell=True, - capture_output=True, - text=True, - cwd=str(final_model_dir), - timeout=600 - ) - if script_result.returncode == 0: - logger.info(f"✅ Post-script executed successfully for '{model_name}'") - if script_result.stdout.strip(): - logger.info(f" Output: {script_result.stdout.strip()}") - else: - error_msg = ( - f"Post-script failed for '{model_name}' " - f"(exit code {script_result.returncode}): " - f"{script_result.stderr.strip()}" - ) - logger.error(f"❌ {error_msg}") - return False, error_msg - except subprocess.TimeoutExpired: - error_msg = f"Post-script timed out for '{model_name}' after 600 seconds" - logger.error(f"❌ {error_msg}") - return False, error_msg - except Exception as e: - error_msg = f"Failed to execute post-script for '{model_name}': {str(e)}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - logger.info(f"✅ Successfully downloaded and setup model '{model_name}'") - - except KeyError as e: - error_msg = f"Missing required field in model config for '{model_name}': {e}" - logger.error(f"❌ {error_msg}") - return False, error_msg - except subprocess.TimeoutExpired: - error_msg = f"Model download timed out for '{model_name}'" - logger.error(f"❌ {error_msg}") - return False, error_msg - except Exception as e: - error_msg = f"Exception during model download for '{model_name}': {str(e)}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - return True, "All models downloaded successfully" - - def get_service_host(self) -> str: - """ - Determine the appropriate host to use for connecting to Docker - containers. In CI environments (like GitLab CI with - Docker-in-Docker), 127.0.0.1 won't work because each container has - its own localhost. Use Docker gateway IP instead. - """ - # Check if running in CI environment - if os.environ.get('CI') or os.environ.get('GITLAB_CI'): - logger.info( - "🔍 CI environment detected, using Docker gateway IP " - "for service connectivity" - ) - # Try to get docker gateway IP from bridge network - try: - result = subprocess.run( - [ - "docker", "network", "inspect", "bridge", "-f", - "{{range .IPAM.Config}}{{.Gateway}}{{end}}" - ], - capture_output=True, - text=True, - timeout=5 - ) - if result.returncode == 0 and result.stdout.strip(): - gateway_ip = result.stdout.strip() - logger.info(f"📡 Using Docker gateway IP: {gateway_ip}") - return gateway_ip - except Exception as e: - logger.warning(f"⚠️ Failed to get Docker gateway IP: {e}") - - # Fallback to default Docker bridge gateway - logger.info( - "📡 Using default Docker bridge gateway: 172.17.0.1" - ) - return "172.17.0.1" - - # Local development environment - use localhost - logger.info("📡 Using localhost for service connectivity") - return "127.0.0.1" - - def generate_inference_code(self, build_args: Dict[str, str], test_config: Dict = None) -> Tuple[bool, str]: - """Generate inference code (codegen) without building or testing Docker images. - - This runs the same pre-build code generation step used by build_image(), - including optional OPENAPI_SPEC staging, but skips Docker build. - - Supports flexible path configuration via build_args: - - APP_YAML_PATH: Custom path to app.yaml (overrides {TEST_APP_NAME}/app.yaml) - - OUTPUT_DIR: Custom output directory (overrides {TEST_APP_NAME}) - - PROCESSORS_PATH: Custom processors.py path (overrides auto-detection) - - Args: - build_args: Build arguments for code generation - test_config: Optional test configuration. If present and contains 'auto_validation', - the validation directory will be passed to code generation via -v flag. - """ - try: - # Validate all build arguments to prevent command injection - for key, value in build_args.items(): - if not validate_build_arg_name(key): - error_msg = f"Invalid build arg name: {key}. Only alphanumeric characters and underscores allowed." - logger.error(f"❌ {error_msg}") - return False, error_msg - if not validate_build_arg_value(str(value)): - error_msg = f"Invalid build arg value for {key}: {value}. Value contains dangerous characters." - logger.error(f"❌ {error_msg}") - return False, error_msg - - # Determine parameters for code generation - test_app_name = build_args.get("TEST_APP_NAME", "frame_sampling") - if not validate_app_name(test_app_name): - error_msg = ( - f"Invalid app name: {test_app_name}. Only alphanumeric characters, underscores, and hyphens are allowed." - ) - logger.error(f"❌ {error_msg}") - return False, error_msg - - server_type = build_args.get("SERVER_TYPE", "serverless") - openapi_spec = build_args.get("OPENAPI_SPEC") - - # Support flexible paths via build_args - app_yaml_path = build_args.get("APP_YAML_PATH", f"{test_app_name}/app.yaml") - output_dir = build_args.get("OUTPUT_DIR", test_app_name) - processors_path_arg = build_args.get("PROCESSORS_PATH", "") - - # Find main.py relative to this script (in builder/main.py) - main_py_path = Path(__file__).parent.parent / "main.py" - if not main_py_path.exists(): - error_msg = f"Cannot find main.py at {main_py_path}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - pre_build_command = [ - "python", str(main_py_path), app_yaml_path, - "-o", output_dir - ] - - # Add processors.py if specified or auto-detect - if processors_path_arg: - processors_path = Path(processors_path_arg) - if processors_path.exists(): - pre_build_command.extend(["-c", processors_path_arg]) - else: - logger.warning(f"⚠️ Specified PROCESSORS_PATH not found: {processors_path_arg}") - else: - # Auto-detect in output directory - processors_path = Path(f"{test_app_name}/processors.py") - if processors_path.exists(): - pre_build_command.extend(["-c", f"{test_app_name}/processors.py"]) - - # Add validation directory if specified in test_config - if test_config and "auto_validation" in test_config: - validation_folder = test_config["auto_validation"] - # Resolve path relative to config directory if it's relative - config_dir = test_config.get("_config_dir") - if config_dir: - validation_path = (Path(config_dir) / validation_folder).resolve() - else: - validation_path = Path(validation_folder).resolve() - - if validation_path.exists(): - pre_build_command.extend(["--validation-dir", str(validation_path), "--no-docker"]) - logger.info(f"📁 Adding validation directory for build: {validation_path}") - else: - logger.warning(f"⚠️ Auto validation folder not found: {validation_path}") - - pre_build_command.extend(["--server-type", server_type, "-t"]) - - if openapi_spec: - # Resolve provided spec relative to project root, copy into local app folder to avoid unsafe paths - project_root = Path(__file__).resolve().parents[2] - resolved_spec = None - candidates = [] - spec_path = Path(openapi_spec) - if spec_path.is_absolute(): - candidates.append(spec_path) - else: - candidates.append((project_root / openapi_spec).resolve()) - candidates.append((project_root / "builder" / openapi_spec).resolve()) - - for cand in candidates: - try: - if cand.exists() and str(cand).startswith(str(project_root)): - resolved_spec = cand - break - except Exception: - continue - - if not resolved_spec: - error_msg = f"Invalid OPENAPI_SPEC path: {openapi_spec}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - local_spec_path = Path(output_dir) / "openapi.yaml" - - # Only copy if source and destination are different - if resolved_spec.resolve() != local_spec_path.resolve(): - try: - shutil.copyfile(str(resolved_spec), str(local_spec_path)) - logger.info(f"📄 Staged OPENAPI_SPEC: {resolved_spec} -> {local_spec_path}") - except Exception as e: - error_msg = f"Failed to stage OPENAPI_SPEC: {e}" - logger.error(f"❌ {error_msg}") - return False, error_msg - else: - logger.info(f"📄 OPENAPI_SPEC already in output directory: {local_spec_path}") - - pre_build_command[3:3] = ["-a", str(local_spec_path)] - - logger.info(f"🔧 Executing codegen command: {' '.join(pre_build_command)}") - pre_build_result = subprocess.run( - pre_build_command, - capture_output=True, - text=True, - timeout=600 - ) - - if pre_build_result.returncode != 0: - error_msg = f"Code generation failed: {pre_build_result.stderr}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - logger.info("✅ Code generation completed successfully") - if pre_build_result.stdout: - logger.info(f"Codegen output: {pre_build_result.stdout}") - return True, pre_build_result.stdout - - except subprocess.TimeoutExpired: - error_msg = "Code generation timed out" - logger.error(f"❌ {error_msg}") - return False, error_msg - except Exception as e: - error_msg = f"Exception during code generation: {str(e)}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - def build_image(self, build_args: Dict[str, str], image_name: str, dockerfile: Optional[str] = None, base_dir: Optional[str] = None, test_config: Dict = None) -> Tuple[bool, str]: - """Build Docker image with given arguments. - - Supports flexible path configuration via build_args: - - APP_YAML_PATH: Custom path to app.yaml (overrides {TEST_APP_NAME}/app.yaml) - - OUTPUT_DIR: Custom output directory (overrides {TEST_APP_NAME}) - - PROCESSORS_PATH: Custom processors.py path (overrides auto-detection) - - Args: - build_args: Build arguments for the Docker image - image_name: Name for the Docker image - dockerfile: Optional path to Dockerfile (overrides self.dockerfile_path) - base_dir: Optional Docker build context directory (overrides self.base_dir) - test_config: Optional test configuration. If present and contains 'auto_validation', - the validation directory will be passed to code generation via -v flag. - """ - try: - # Use provided paths or fall back to instance defaults - dockerfile_path = Path(dockerfile) if dockerfile else self.dockerfile_path - build_context = Path(base_dir) if base_dir else self.base_dir - # Validate image name to prevent command injection - if not validate_image_name(image_name): - error_msg = f"Invalid image name: {image_name}. Image name contains invalid characters." - logger.error(f"❌ {error_msg}") - return False, error_msg - - # Validate all build arguments to prevent command injection - for key, value in build_args.items(): - if not validate_build_arg_name(key): - error_msg = f"Invalid build arg name: {key}. Only alphanumeric characters and underscores allowed." - logger.error(f"❌ {error_msg}") - return False, error_msg - if not validate_build_arg_value(str(value)): - error_msg = f"Invalid build arg value for {key}: {value}. Value contains dangerous characters." - logger.error(f"❌ {error_msg}") - return False, error_msg - - # Execute pre-build command using TEST_APP_NAME - test_app_name = build_args.get("TEST_APP_NAME", "frame_sampling") - - # Validate app name to prevent command injection - if not validate_app_name(test_app_name): - error_msg = f"Invalid app name: {test_app_name}. Only alphanumeric characters, underscores, and hyphens are allowed." - logger.error(f"❌ {error_msg}") - return False, error_msg - - # Determine server type from build args (fallback to 'serverless') - server_type = build_args.get("SERVER_TYPE", "serverless") - - # Optional: OpenAPI spec path (to pass -a) - openapi_spec = build_args.get("OPENAPI_SPEC") - - # Require OpenAPI spec for non-serverless builds - if server_type != "serverless" and not openapi_spec: - error_msg = ( - "OPENAPI_SPEC is required in build_args when SERVER_TYPE is not 'serverless'" - ) - logger.error(f"❌ {error_msg}") - return False, error_msg - - # Support flexible paths via build_args - app_yaml_path = build_args.get("APP_YAML_PATH", f"{test_app_name}/app.yaml") - output_dir = build_args.get("OUTPUT_DIR", test_app_name) - processors_path_arg = build_args.get("PROCESSORS_PATH", "") - - # Find main.py relative to this script (in builder/main.py) - main_py_path = Path(__file__).parent.parent / "main.py" - if not main_py_path.exists(): - error_msg = f"Cannot find main.py at {main_py_path}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - # Use safer subprocess call without shell=True - pre_build_command = [ - "python", str(main_py_path), app_yaml_path, - "-o", output_dir - ] - - # Add processors.py if specified or auto-detect - if processors_path_arg: - processors_path = Path(processors_path_arg) - if processors_path.exists(): - pre_build_command.extend(["-c", processors_path_arg]) - else: - logger.warning(f"⚠️ Specified PROCESSORS_PATH not found: {processors_path_arg}") - else: - # Auto-detect in test_app_name directory - processors_path = Path(f"{test_app_name}/processors.py") - if processors_path.exists(): - pre_build_command.extend(["-c", f"{test_app_name}/processors.py"]) - - # Add validation directory if specified in test_config - if test_config and "auto_validation" in test_config: - validation_folder = test_config["auto_validation"] - # Resolve path relative to config directory if it's relative - config_dir = test_config.get("_config_dir") - if config_dir: - validation_path = (Path(config_dir) / validation_folder).resolve() - else: - validation_path = Path(validation_folder).resolve() - - if validation_path.exists(): - pre_build_command.extend(["--validation-dir", str(validation_path), "--no-docker"]) - logger.info(f"📁 Adding validation directory for build: {validation_path}") - else: - logger.warning(f"⚠️ Auto validation folder not found: {validation_path}") - - pre_build_command.extend(["--server-type", server_type, "-t"]) - - if openapi_spec: - # Resolve provided spec relative to project root, copy into local app folder to avoid unsafe paths - project_root = Path(__file__).resolve().parents[2] - resolved_spec = None - candidates = [] - spec_path = Path(openapi_spec) - if spec_path.is_absolute(): - candidates.append(spec_path) - else: - candidates.append((project_root / openapi_spec).resolve()) - candidates.append((project_root / "builder" / openapi_spec).resolve()) - - for cand in candidates: - try: - if cand.exists() and str(cand).startswith(str(project_root)): - resolved_spec = cand - break - except Exception: - continue - - if not resolved_spec: - error_msg = f"Invalid OPENAPI_SPEC path: {openapi_spec}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - local_spec_path = Path(output_dir) / "openapi.yaml" - - # Only copy if source and destination are different - if resolved_spec.resolve() != local_spec_path.resolve(): - try: - shutil.copyfile(str(resolved_spec), str(local_spec_path)) - logger.info(f"📄 Staged OPENAPI_SPEC: {resolved_spec} -> {local_spec_path}") - except Exception as e: - error_msg = f"Failed to stage OPENAPI_SPEC: {e}" - logger.error(f"❌ {error_msg}") - return False, error_msg - else: - logger.info(f"📄 OPENAPI_SPEC already in output directory: {local_spec_path}") - - pre_build_command[3:3] = ["-a", str(local_spec_path)] - - logger.info(f"🔧 Executing pre-build command: {' '.join(pre_build_command)}") - pre_build_result = subprocess.run( - pre_build_command, - capture_output=True, - text=True, - timeout=600 # 10 minute timeout for pre-build - ) - - if pre_build_result.returncode != 0: - error_msg = f"Pre-build command failed: {pre_build_result.stderr}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - logger.info("✅ Pre-build command completed successfully") - if pre_build_result.stdout: - logger.info(f"Pre-build output: {pre_build_result.stdout}") - - cmd = [ - "docker", "build", - "-f", str(dockerfile_path), - "-t", image_name - ] - - # Add build arguments - for key, value in build_args.items(): - cmd.extend(["--build-arg", f"{key}={value}"]) - - # Add context directory - cmd.append(str(build_context)) - - logger.info(f"Building image: {image_name}") - logger.info(f"Command: {' '.join(cmd)}") - - result = subprocess.run( - cmd, - capture_output=True, - text=True, - timeout=3600 # 1 hour timeout - ) - - if result.returncode == 0: - logger.info(f"✅ Successfully built image: {image_name}") - return True, result.stdout - else: - logger.error(f"❌ Failed to build image: {image_name}") - logger.error(f"Error: {result.stderr}") - return False, result.stderr - - except subprocess.TimeoutExpired: - error_msg = f"Build timed out for image: {image_name}" - logger.error(f"❌ {error_msg}") - return False, error_msg - except Exception as e: - error_msg = f"Exception during build: {str(e)}" - logger.error(f"❌ {error_msg}") - return False, error_msg - - def run_prerequisite_script(self, script_command: str, test_id: int, image_name: str = "", cwd: str = None) -> Tuple[bool, str]: - """Run a prerequisite script before testing the docker container. - - Supports {image_name} placeholder in script_command, which is replaced - with the built Docker image name before execution. - """ - if not script_command: - return True, "No prerequisite script specified" - - # Substitute {image_name} placeholder - if image_name: - script_command = script_command.replace("{image_name}", image_name) - - # Validate script command to prevent command injection - if not validate_script_command(script_command): - error_msg = f"Invalid script command: {script_command}. Command contains potentially dangerous characters." - logger.error(f"❌ {error_msg}") - return False, error_msg - - log_file = self.log_dir / f"prerequisite_{test_id}.log" - - try: - logger.info(f"🔧 Running prerequisite script: {script_command}") - logger.info(f"📄 Prerequisite logs will be saved to: {log_file}") - - # Use safer command execution - split command into arguments when possible - import shlex - try: - # Attempt to parse command safely first - cmd_args = shlex.split(script_command) - if len(cmd_args) == 1 and cmd_args[0].endswith('.sh'): - # Single script file - use direct execution without shell - result = subprocess.run( - cmd_args, - capture_output=True, - text=True, - timeout=1800, - cwd=cwd, - shell=False # Safer execution without shell - ) - else: - # Complex command - use shell with additional validation - # Double-check validation before shell execution - if not validate_script_command(script_command): - raise ValueError("Command failed security validation") - - result = subprocess.run( - script_command, - shell=True, # Only when necessary and after validation - capture_output=True, - text=True, - timeout=1800, - cwd=cwd - ) - except ValueError as e: - if "failed security validation" in str(e): - raise e - # Fall back to shell execution for complex commands (with validation) - result = subprocess.run( - script_command, - shell=True, - capture_output=True, - text=True, - timeout=1800, - cwd=cwd - ) - - # Save prerequisite script logs - with open(log_file, 'w') as f: - f.write("=== Prerequisite Script Execution ===\n") - f.write(f"Command: {script_command}\n") - f.write(f"Return Code: {result.returncode}\n") - f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") - f.write("\n=== STDOUT ===\n") - f.write(result.stdout) - f.write("\n=== STDERR ===\n") - f.write(result.stderr) - f.write("\n=== END LOG ===\n") - - if result.returncode == 0: - logger.info(f"✅ Prerequisite script completed successfully") - if result.stdout: - logger.info(f"Prerequisite output: {result.stdout}") - return True, result.stdout - else: - error_msg = f"Prerequisite script failed with return code {result.returncode}" - logger.error(f"❌ {error_msg}") - logger.error(f"Prerequisite stderr: {result.stderr}") - return False, error_msg - - except subprocess.TimeoutExpired: - error_msg = f"Prerequisite script timed out after 1800 seconds" - logger.error(f"❌ {error_msg}") - - # Save timeout log - with open(log_file, 'w') as f: - f.write("=== Prerequisite Script Execution ===\n") - f.write(f"Command: {script_command}\n") - f.write(f"Status: TIMEOUT\n") - f.write(f"Timeout: 1800 seconds\n") - f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") - f.write("\n=== ERROR ===\n") - f.write(error_msg) - f.write("\n=== END LOG ===\n") - - return False, error_msg - except Exception as e: - error_msg = f"Exception during prerequisite script execution: {str(e)}" - logger.error(f"❌ {error_msg}") - - # Save exception log - with open(log_file, 'w') as f: - f.write("=== Prerequisite Script Execution ===\n") - f.write(f"Command: {script_command}\n") - f.write(f"Status: EXCEPTION\n") - f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") - f.write("\n=== ERROR ===\n") - f.write(error_msg) - f.write("\n=== END LOG ===\n") - - return False, error_msg - - def test_image(self, image_name: str, test_config: Dict, test_id: int, gpus: str = "all") -> Tuple[bool, str, str]: - """Test the built image by running it and capture logs. - - Args: - image_name: Name of the Docker image to test - test_config: Test configuration dictionary - test_id: Unique test identifier - gpus: GPU devices to use (default: 'all') - """ - log_file = self.log_dir / f"test_{test_id}_{image_name.replace(':', '_')}.log" - - # Validate image name to prevent command injection - if not validate_image_name(image_name): - error_msg = f"Invalid image name: {image_name}. Image name contains invalid characters." - logger.error(f"❌ {error_msg}") - return False, error_msg, "" - - # Validate test configuration to prevent command injection - config_valid, config_error = validate_test_config(test_config) - if not config_valid: - error_msg = f"Invalid test configuration: {config_error}" - logger.error(f"❌ {error_msg}") - return False, error_msg, "" - - # Get timeout from test config, default to 10 seconds - timeout = test_config.get("timeout", 10) - - try: - # Check if image exists - result = subprocess.run( - ["docker", "image", "inspect", image_name], - capture_output=True, - text=True - ) - - if result.returncode != 0: - return False, f"Image {image_name} not found", "" - - # Run prerequisite script if specified - prerequisite_script = test_config.get("prerequisite_script") - if prerequisite_script: - config_dir = str(Path(test_config.get("_config_dir", ".")).resolve()) - prerequisite_success, prerequisite_output = self.run_prerequisite_script( - prerequisite_script, test_id, image_name=image_name, cwd=config_dir - ) - if not prerequisite_success: - return False, f"Prerequisite script failed: {prerequisite_output}", "" - - # Detect server type to choose test strategy - server_type = test_config.get("SERVER_TYPE", "serverless") - is_serverless = server_type == "serverless" - - # Prepare assets if specified - asset_ids = [] - asset_temp_dir = None - if "assets" in test_config: - import tempfile - - assets_config = test_config["assets"] - logger.info(f"📦 Preparing {len(assets_config)} asset(s)...") - - # Create temp directory for asset info.json files - asset_temp_dir = Path(tempfile.mkdtemp(prefix=f"test_assets_{test_id}_")) - - for idx, asset_data in enumerate(assets_config): - # Use the provided assetId - asset_id = asset_data["assetId"] - asset_ids.append(asset_id) - - # Create asset directory structure - asset_dir = asset_temp_dir / asset_id - asset_dir.mkdir(parents=True) - - # Write asset data to info.json inside the directory - info_file = asset_dir / "info.json" - with info_file.open("w") as f: - json.dump(asset_data, f, indent=2) - - logger.info(f"✅ Created asset {idx}: {asset_id} ({asset_data['path']})") - - # Run the container with test configuration - # Use host network for serverless; use port mapping for non-serverless to avoid port conflicts - # Use --ipc=host to share host's /dev/shm with the container; - # Docker's default 64MB /dev/shm is insufficient for PyTorch/TensorRT-LLM - # multiprocessing which shares tensors via shared memory, causing SIGBUS - # (Bus error: nonexistent physical address) when /dev/shm is exhausted. - cmd = ["docker", "run", "--ipc=host", "--gpus", gpus] - - # Add environment variables if specified - if "env" in test_config: - for key, value in test_config["env"].items(): - # Double-check validation to prevent injection - if not validate_env_var_name(key) or not validate_env_var_value(str(value)): - error_msg = f"Invalid environment variable: {key}={value}" - logger.error(f"❌ {error_msg}") - return False, error_msg, "" - cmd.extend(["-e", f"{key}={value}"]) - - # Get the test config directory for resolving relative paths - config_dir = Path(test_config.get("_config_dir", ".")).resolve() - - # Automatically add ERROR_EXPORT_PATH for error file collection - # Use unique error file names for different test cases - error_export_dir = Path("/tmp/error") - error_export_dir.mkdir(parents=True, exist_ok=True) - error_filename = f"inference_errors_{test_id}_{int(time.time())}.json" - error_export_file = error_export_dir / error_filename - container_error_path = f"/tmp/error/{error_filename}" - cmd.extend(["-e", f"ERROR_EXPORT_PATH={container_error_path}"]) - cmd.extend(["-v", f"{error_export_dir}:{error_export_dir}"]) - logger.info(f"📄 Error export: {error_export_file} -> {container_error_path}") - - # Add volume mounts if specified - if "volumes" in test_config: - logger.info(f"📁 Processing volumes: {test_config['volumes']}") - - for host_path, container_path in test_config["volumes"].items(): - # Double-check validation to prevent injection - if not validate_volume_path(host_path) or not validate_volume_path(container_path): - error_msg = f"Invalid volume path: {host_path}:{container_path}" - logger.error(f"❌ {error_msg}") - return False, error_msg, "" - - # Resolve host path to absolute path - # Priority: 1) Expand ~ for home directory, 2) Resolve relative to config dir, 3) Use as-is if absolute - expanded_path = os.path.expanduser(host_path) - - if not os.path.isabs(expanded_path): - # Relative path - resolve relative to test config directory - abs_host_path = str((config_dir / expanded_path).resolve()) - logger.info(f"📁 Resolved relative path: {host_path} -> {abs_host_path} (relative to config dir)") - else: - # Already absolute path - abs_host_path = expanded_path - logger.info(f"📁 Using absolute path: {host_path} -> {abs_host_path}") - - # Verify the resolved path exists (optional warning, not error) - if not os.path.exists(abs_host_path): - logger.warning(f"⚠️ Volume path does not exist yet: {abs_host_path}") - logger.warning(f"⚠️ This is OK if the path will be created by model download or other setup") - - volume_arg = f"{abs_host_path}:{container_path}" - cmd.extend(["-v", volume_arg]) - logger.info(f"📁 Adding volume mount: {volume_arg}") - else: - logger.info("📁 No additional volumes specified in test config") - - # Give the container a name for logging/cleanup purposes - expected_error = test_config.get("expected_error") - container_name = f"test-{test_id}-{int(time.time())}" - cmd.extend(["--name", container_name]) - logger.info(f"🏷️ Container name: {container_name}") - - # For FastAPI (or any non-serverless), run detached on host network (DinD friendly) - if not is_serverless: - cmd.insert(2, "--network=host") - cmd.insert(2, "-d") # run detached - else: - cmd.insert(2, "--network=host") - - # For serverless non-negative tests, save inference results for validation - result_export_file = None - if is_serverless and not expected_error: - result_export_dir = Path("/tmp/result") - result_export_dir.mkdir(parents=True, exist_ok=True) - result_filename = f"result_{test_id}_{int(time.time())}.json" - result_export_file = result_export_dir / result_filename - container_result_path = f"/tmp/result/{result_filename}" - cmd.extend(["-v", f"{result_export_dir}:{result_export_dir}"]) - logger.info(f"📄 Result export: {result_export_file} -> {container_result_path}") - - cmd.append(image_name) - - # Add command arguments if specified (serverless only) - if server_type == "serverless" and "cmd" in test_config: - cmd_args = test_config["cmd"] - - # Double-check validation for each command argument - for arg in cmd_args: - if not validate_docker_arg(str(arg)): - error_msg = f"Invalid command argument: {arg}" - logger.error(f"❌ {error_msg}") - return False, error_msg, "" - cmd.extend(cmd_args) - - # Append -s flag for serverless non-negative tests - if result_export_file: - cmd.extend(["-s", container_result_path]) - - logger.info(f"Testing image: {image_name}") - logger.info(f"Command: {' '.join(cmd)}") - logger.info(f"Timeout: {timeout} seconds") - logger.info(f"Logs will be saved to: {log_file}") - - # Log the complete command for debugging - logger.info("🔍 Complete docker run command:") - logger.info(f" {' '.join(cmd)}") - - if is_serverless: - # For serverless with assets, we need to start detached, copy assets, then wait - if asset_temp_dir: - # Insert -d flag to run detached - cmd.insert(2, "-d") - logger.info("🔍 Starting container in detached mode to copy assets...") - result = subprocess.run( - cmd, - capture_output=True, - text=True, - timeout=30 - ) - if result.returncode != 0: - logger.error(f"❌ Failed to start container: {result.stderr}") - return False, f"Container start failed: {result.stderr}", "" - - # Container ID is in stdout - container_id = result.stdout.strip() - logger.info(f"✅ Container started: {container_id[:12]}") - - # Create /tmp/assets directory in container - logger.info("📁 Creating /tmp/assets directory in container...") - mkdir_result = subprocess.run( - ["docker", "exec", container_name, "mkdir", "-p", "/tmp/assets"], - capture_output=True, - text=True, - timeout=10 - ) - if mkdir_result.returncode != 0: - logger.error(f"❌ Failed to create /tmp/assets: {mkdir_result.stderr}") - subprocess.run(["docker", "stop", container_name], capture_output=True, timeout=10) - subprocess.run(["docker", "rm", container_name], capture_output=True, timeout=10) - return False, f"Failed to create /tmp/assets: {mkdir_result.stderr}", "" - - # Copy assets into container - for idx, asset_id in enumerate(asset_ids): - src_path = asset_temp_dir / asset_id - dest_path = f"{container_name}:/tmp/assets/{asset_id}" - - logger.info(f"📦 Copying asset {idx} to container: {asset_id}") - copy_result = subprocess.run( - ["docker", "cp", str(src_path), dest_path], - capture_output=True, - text=True, - timeout=30 - ) - if copy_result.returncode != 0: - logger.error(f"❌ Failed to copy asset: {copy_result.stderr}") - subprocess.run(["docker", "stop", container_name], capture_output=True, timeout=10) - subprocess.run(["docker", "rm", container_name], capture_output=True, timeout=10) - return False, f"Asset copy failed: {copy_result.stderr}", "" - logger.info(f"✅ Asset {idx} copied successfully") - - # Now wait for container to complete - logger.info("⏳ Waiting for container to complete...") - wait_result = subprocess.run( - ["docker", "wait", container_name], - capture_output=True, - text=True, - timeout=timeout - ) - - # Get logs - logs_result = subprocess.run( - ["docker", "logs", container_name], - capture_output=True, - text=True, - timeout=30 - ) - stdout_output = logs_result.stdout - stderr_output = logs_result.stderr - - # Clean up the temp asset directory - import shutil as shutil_module - shutil_module.rmtree(asset_temp_dir, ignore_errors=True) - logger.info("🧹 Cleaned up temporary asset directory") - else: - # Run container normally and capture output - logger.info("🔍 Running container and capturing output...") - result = subprocess.run( - cmd, - capture_output=True, - text=True, - timeout=timeout - ) - stdout_output = result.stdout - stderr_output = result.stderr - - # Clean up the container - subprocess.run(["docker", "rm", container_name], capture_output=True, text=True, timeout=10) - - # Check if error export file was created - error_copy_failed = False - error_copy_msg = "" - if error_export_file.exists(): - file_size = error_export_file.stat().st_size - logger.info(f"📄 Found error export file: {error_export_file} (size: {file_size} bytes)") - else: - error_copy_failed = True - error_copy_msg = f"Error export file not found: {error_export_file}" - logger.warning(f"⚠️ {error_copy_msg}") - else: - # FastAPI-like server flow: start container detached, poll readiness, run client, then stop and collect logs - logger.info("🚀 Starting server container in detached mode") - start_proc = subprocess.run( - cmd, - capture_output=True, - text=True - ) - if start_proc.returncode != 0: - error_msg = f"Failed to start server container: {start_proc.stderr}" - logger.error(f"❌ {error_msg}") - return False, error_msg, "" - container_id = start_proc.stdout.strip() - logger.info(f"🆔 Container ID: {container_id}") - - # Copy assets into container if specified - if asset_temp_dir: - # Create /tmp/assets directory in container - logger.info("📁 Creating /tmp/assets directory in container...") - mkdir_result = subprocess.run( - ["docker", "exec", container_name, "mkdir", "-p", "/tmp/assets"], - capture_output=True, - text=True, - timeout=10 - ) - if mkdir_result.returncode != 0: - logger.error(f"❌ Failed to create /tmp/assets: {mkdir_result.stderr}") - subprocess.run(["docker", "stop", container_name], capture_output=True, timeout=10) - subprocess.run(["docker", "rm", container_name], capture_output=True, timeout=10) - return False, f"Failed to create /tmp/assets: {mkdir_result.stderr}", "" - - for idx, asset_id in enumerate(asset_ids): - src_path = asset_temp_dir / asset_id - dest_path = f"{container_name}:/tmp/assets/{asset_id}" - - logger.info(f"📦 Copying asset {idx} to container: {asset_id}") - copy_result = subprocess.run( - ["docker", "cp", str(src_path), dest_path], - capture_output=True, - text=True, - timeout=30 - ) - if copy_result.returncode != 0: - logger.error(f"❌ Failed to copy asset: {copy_result.stderr}") - subprocess.run(["docker", "stop", container_name], capture_output=True, timeout=10) - subprocess.run(["docker", "rm", container_name], capture_output=True, timeout=10) - return False, f"Asset copy failed: {copy_result.stderr}", "" - logger.info(f"✅ Asset {idx} copied successfully") - - # Clean up the temp asset directory - import shutil as shutil_module - shutil_module.rmtree(asset_temp_dir, ignore_errors=True) - logger.info("🧹 Cleaned up temporary asset directory") - - # Readiness probe - ready = False - http_error_status = None # Track if we got an HTTP error - ready_deadline = time.time() + max(1, timeout) - service_host = self.get_service_host() - # Get HTTP port from test config env, default to 8000 - http_port = test_config.get("env", {}).get("HTTP_PORT", "8000") - health_url = f"http://{service_host}:{http_port}/v1/health/ready" - logger.info(f"🔎 Probing readiness: {health_url}") - while time.time() < ready_deadline: - try: - with urllib.request.urlopen(health_url, timeout=2) as resp: - if resp.status == 200: - ready = True - break - else: - logger.info(f"Health probe returned non-200 status: {resp.status}") - except urllib.error.HTTPError as e: - http_error_status = e.code - logger.error(f"❌ Health probe HTTPError: status={e.code} - server returned error, stopping retry") - break # No retry on HTTP errors - server is responding but not healthy - except urllib.error.URLError as e: - if isinstance(e.reason, socket.timeout): - logger.warning("Health probe request timed out") - else: - logger.info(f"Health probe URLError: {e.reason}, retrying...") - except (TimeoutError, socket.timeout): - logger.warning("Health probe request timed out, retrying...") - time.sleep(2) - - client_stdout = "" - client_stderr = "" - client_rc = 1 - - if not ready: - if http_error_status: - logger.error(f"❌ Server health check failed with HTTP error {http_error_status}") - else: - logger.error("❌ Server did not become ready within timeout") - # Collect logs to see what went wrong during initialization - logger.info("📋 Collecting container logs for failed readiness...") - logs_proc = subprocess.run(["docker", "logs", container_id], capture_output=True, text=True) - if logs_proc.stdout: - logger.info("🔍 Container initialization logs:") - for line in logs_proc.stdout.split('\n')[-20:]: # Show last 20 lines - if line.strip(): - logger.info(f" {line}") - if logs_proc.stderr: - logger.error("🔍 Container error logs:") - for line in logs_proc.stderr.split('\n')[-10:]: # Show last 10 error lines - if line.strip(): - logger.error(f" {line}") - else: - # Check if auto_validation is specified - run directly on host - auto_validation_path = test_config.get("auto_validation") - if auto_validation_path: - logger.info("✅ Server is ready. Running validation script on host...") - - try: - # Resolve validation folder path relative to config directory - config_dir = Path(test_config.get("_config_dir", ".")).resolve() - validation_folder = (config_dir / auto_validation_path).resolve() - - # Fixed script name is test_runner.py (generated during build via -v flag) - # It's located in the validation folder subdirectories (e.g., gdino/.tmp/test_runner.py) - # Determine which subdirectory based on TAO_MODEL_NAME - tao_model_name = test_config.get("env", {}).get("TAO_MODEL_NAME", "") - if not tao_model_name: - logger.error("❌ TAO_MODEL_NAME not specified in test_config.env") - client_rc = 1 - client_stdout = "" - client_stderr = "TAO_MODEL_NAME not specified" - else: - validation_script_path = validation_folder / ".tmp" / "test_runner.py" - - if not validation_script_path.exists(): - logger.error(f"❌ Validation script not found: {validation_script_path}") - client_rc = 1 - client_stdout = "" - client_stderr = f"Validation script not found: {validation_script_path}" - else: - logger.info(f"🔧 Running validation script: {validation_script_path}") - - # Set up environment variables for validation script - validation_env = os.environ.copy() - if "env" in test_config: - validation_env.update({k: str(v) for k, v in test_config["env"].items()}) - - # Add service host for validation script to connect to server - # The validation script expects TEST_HOST environment variable - # Use HTTP_PORT from test config env, default to 8000 - validation_env["TEST_HOST"] = f"http://{service_host}:{http_port}" - - # Run validation script with Python - validation_proc = subprocess.run( - ["python", str(validation_script_path)], - capture_output=True, - text=True, - timeout=max(60, timeout), - cwd=str(validation_script_path.parent), - env=validation_env - ) - client_rc = validation_proc.returncode - client_stdout = validation_proc.stdout - client_stderr = validation_proc.stderr - - if client_rc == 0: - logger.info("✅ Validation script completed successfully") - if client_stdout: - logger.info(f"Validation output:\n{client_stdout}") - else: - logger.error(f"❌ Validation script failed with return code {client_rc}") - if client_stderr: - logger.error(f"Validation stderr:\n{client_stderr}") - if client_stdout: - logger.error(f"Validation stdout:\n{client_stdout}") - except subprocess.TimeoutExpired: - logger.error("❌ Validation script timed out") - client_rc = 1 - client_stdout = "" - client_stderr = "Validation script timed out" - except Exception as e: - logger.error(f"❌ Exception running validation script: {e}") - client_rc = 1 - client_stdout = "" - client_stderr = str(e) - else: - logger.info("✅ Server is ready. Launching concurrent curl requests...") - # Read NDJSON files and launch curl for each line - # Get test_requests from test_config, with a default fallback based on app name - test_app_name = test_config.get("TEST_APP_NAME") or None - default_test_requests = [{"payload_path": f"{test_app_name}/payloads/payloads.jsonl"}] - test_requests_list = test_config.get("test_requests", default_test_requests) - - # Ensure test_requests is a list - if not isinstance(test_requests_list, list): - logger.error(f"❌ test_requests must be a list, got: {type(test_requests_list)}") - client_rc = 1 - client_stdout = "" - client_stderr = "test_requests must be a list" - else: - # Check if any request has scheduled_time (for sequential execution) - has_scheduled = any("scheduled_time" in item for item in test_requests_list) - - # Resolve payloads_path relative to config directory - config_dir = Path(test_config.get("_config_dir", ".")).resolve() - - # Get endpoint from test_config, default to /v1/inference - endpoint = test_config.get("endpoint", "/v1/inference") - logger.info(f"🎯 Using endpoint: {endpoint}") - - if has_scheduled: - # Sequential execution with timing - logger.info("⏰ Using sequential execution with scheduled times") - - # Sort requests by scheduled_time - sorted_requests = sorted(test_requests_list, key=lambda x: x.get("scheduled_time", 0)) - - start_time = time.time() - all_succeeded = True - async_processes = [] # Track async processes for later status check - - for request_item in sorted_requests: - scheduled_time = request_item.get("scheduled_time", 0) - elapsed = time.time() - start_time - - # Wait until scheduled time - if scheduled_time > elapsed: - wait_time = scheduled_time - elapsed - logger.info(f"⏳ Waiting {wait_time:.1f}s until scheduled time {scheduled_time}s...") - time.sleep(wait_time) - - # Extract request config - http_method = request_item.get("method", "POST").upper() - http_headers = request_item.get("headers", {"Content-Type": "application/json"}) - request_endpoint = request_item.get("endpoint", endpoint) - - # Get payload - payload_data = None - if "payload_path" in request_item: - payload_path = (config_dir / request_item["payload_path"]).resolve() - if payload_path.exists(): - with payload_path.open("r") as f: - first_line = f.readline().strip() - if first_line: - payload_data = first_line - else: - logger.error(f"❌ Payload file not found: {payload_path}") - all_succeeded = False - continue - - # Build curl command - url = f"http://{service_host}:{http_port}{request_endpoint}" - curl_cmd = ["curl", "-sS", "-X", http_method, "-w", "\\n%{http_code}"] - - for header_name, header_value in http_headers.items(): - curl_cmd.extend(["-H", f"{header_name}: {header_value}"]) - - if payload_data and http_method in ["POST", "PUT", "PATCH", "DELETE"]: - curl_cmd.extend(["-d", payload_data]) - - curl_cmd.append(url) - - logger.info(f"🌐 [{scheduled_time}s] {http_method} {request_endpoint}") - if payload_data: - logger.info(f"📦 Payload: {payload_data[:200]}{'...' if len(payload_data) > 200 else ''}") - - # Check if this is an async request - is_async = request_item.get("async", False) - - if is_async: - # Launch async request without waiting for response - logger.info(f"🚀 Launching async request") - try: - proc = subprocess.Popen( - curl_cmd, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - text=True - ) - async_processes.append((proc, http_method, request_endpoint)) - logger.info(f"✅ Async request launched (PID: {proc.pid})") - except Exception as e: - logger.error(f"❌ Failed to launch async request: {e}") - all_succeeded = False - else: - # Execute synchronous request - try: - result = subprocess.run(curl_cmd, capture_output=True, text=True, timeout=30) - response_output = result.stdout.strip() - - # Split response body and status code - lines = response_output.split('\n') - status_code = int(lines[-1]) if lines and lines[-1].isdigit() else 0 - response_body = '\n'.join(lines[:-1]) if len(lines) > 1 else "" - - logger.info(f"📡 Status: {status_code}") - if response_body: - logger.info(f"✅ Response: {response_body[:300]}{'...' if len(response_body) > 300 else ''}") - - if status_code < 200 or status_code >= 300: - logger.error(f"❌ Request failed with status {status_code}") - all_succeeded = False - except subprocess.TimeoutExpired: - logger.error(f"❌ Request timed out") - all_succeeded = False - except Exception as e: - logger.error(f"❌ Request failed: {e}") - all_succeeded = False - - # Wait for async processes and check their results - if async_processes: - logger.info(f"\n⏳ Waiting for {len(async_processes)} async request(s) to complete...") - for proc, method, endpoint in async_processes: - try: - stdout, stderr = proc.communicate(timeout=30) - response_output = stdout.strip() - - # Split response body and status code - lines = response_output.split('\n') - status_code = int(lines[-1]) if lines and lines[-1].isdigit() else 0 - response_body = '\n'.join(lines[:-1]) if len(lines) > 1 else "" - - logger.info(f"📡 Async {method} {endpoint} - Status: {status_code}") - if response_body: - logger.info(f" Response: {response_body[:200]}{'...' if len(response_body) > 200 else ''}") - - if status_code < 200 or status_code >= 300: - logger.error(f"❌ Async request failed with status {status_code}") - all_succeeded = False - except subprocess.TimeoutExpired: - logger.error(f"❌ Async {method} {endpoint} timed out") - proc.kill() - all_succeeded = False - except Exception as e: - logger.error(f"❌ Async {method} {endpoint} failed: {e}") - all_succeeded = False - - # Set final result - if all_succeeded: - logger.info("\n✅ All scheduled requests completed successfully") - client_rc = 0 - client_stdout = "All requests succeeded" - client_stderr = "" - else: - logger.error("\n❌ Some requests failed") - client_rc = 1 - client_stdout = "" - client_stderr = "One or more requests failed" - else: - # Parallel execution (existing logic) - logger.info("🚀 Using parallel execution") - - # Collect all payload lines from all files with their configs - # Each entry: (payload_line, method, headers) - all_payloads = [] - for request_item in test_requests_list: - # Parse test request (must be dict) - if not isinstance(request_item, dict): - logger.error(f"❌ Invalid test_requests item (must be dict): {request_item}") - continue - - # Extract config with defaults - http_method = request_item.get("method", "POST").upper() - http_headers = request_item.get("headers", {"Content-Type": "application/json"}) - - # Check if payload_path is provided - if "payload_path" not in request_item: - # No payload_path - single request with no payload (useful for GET) - logger.info(f"📄 No payload file specified") - logger.info(f" Method: {http_method}, Headers: {http_headers}") - all_payloads.append(("", http_method, http_headers)) - else: - # Path provided - load payloads from file - payload_path_str = request_item["payload_path"] - payload_path = (config_dir / payload_path_str).resolve() - logger.info(f"📄 Resolved payload path: {payload_path_str} -> {payload_path}") - logger.info(f" Method: {http_method}, Headers: {http_headers}") - - if not payload_path.exists(): - logger.error(f"❌ Payload file not found: {payload_path}") - else: - with payload_path.open("r") as f: - payload_lines = [line.strip() for line in f if line.strip()] - # Associate each payload with its method and headers - for line in payload_lines: - all_payloads.append((line, http_method, http_headers)) - logger.info(f"📋 Loaded {len(payload_lines)} payloads from {payload_path.name}") - - if not all_payloads: - logger.error(f"❌ No payloads found in any file") - client_rc = 1 - client_stdout = "" - client_stderr = "No payloads found" - else: - logger.info(f"📋 Total payloads to process: {len(all_payloads)}") - - procs: List[subprocess.Popen] = [] - for payload_line, method, headers in all_payloads: - # Check if this is a multipart/form-data upload - content_type = headers.get("Content-Type", "").lower() - is_multipart = "multipart/form-data" in content_type - - # Build curl command with method and headers from payload config - curl_cmd = ["curl", "-sS", "-X", method, "-w", "%{http_code}"] - - if is_multipart and method in ["POST", "PUT", "PATCH"] and payload_line: - # Multipart upload: parse JSON to get file field and use -F - try: - payload_data = json.loads(payload_line) - - # Add non-Content-Type headers (curl -F sets Content-Type automatically) - for header_name, header_value in headers.items(): - if header_name.lower() != "content-type": - curl_cmd.extend(["-H", f"{header_name}: {header_value}"]) - - # Add form fields with -F - for field_name, field_value in payload_data.items(): - if isinstance(field_value, str): - # Try to resolve as a file path (relative to config dir) - file_path = Path(field_value) - if not file_path.is_absolute(): - # Try relative to config dir - resolved_path = (config_dir / field_value).resolve() - else: - # Already absolute - resolved_path = file_path.resolve() - - # Check if the resolved path exists and is a file - if resolved_path.exists() and resolved_path.is_file(): - # Use @ prefix for file upload - curl_cmd.extend(["-F", f"{field_name}=@{resolved_path}"]) - logger.info(f" 📎 Uploading file: {field_name}={resolved_path}") - else: - # Not a valid file path, send as string value - curl_cmd.extend(["-F", f"{field_name}={field_value}"]) - if field_value: - logger.debug(f" 📝 Form field: {field_name}={field_value}") - else: - # Non-string value (number, bool, etc.) - curl_cmd.extend(["-F", f"{field_name}={field_value}"]) - except json.JSONDecodeError as e: - logger.error(f"❌ Failed to parse payload as JSON for multipart upload: {e}") - logger.error(f" Payload: {payload_line}") - continue - else: - # Regular JSON request - # Add headers - for header_name, header_value in headers.items(): - curl_cmd.extend(["-H", f"{header_name}: {header_value}"]) - - # Add data for methods that support body (only if payload is not empty) - if method in ["POST", "PUT", "PATCH"] and payload_line: - curl_cmd.extend(["--data", payload_line]) - - # Add URL - curl_cmd.append(f"http://{service_host}:{http_port}{endpoint}") - - procs.append(subprocess.Popen( - curl_cmd, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - text=True - )) - - outs: List[str] = [] - errs: List[str] = [] - client_rc = 0 - http_status_errors = [] - for i, p in enumerate(procs): - out, err = p.communicate(timeout=max(5, timeout)) - outs.append(out or "") - errs.append(err or "") - if p.returncode != 0: - client_rc = p.returncode - else: - # For non-serverless, check HTTP status is 200 - # curl -w "%{http_code}" appends status to stdout - if out and len(out) >= 3: - # Extract last 3 chars as HTTP status code - http_status = out[-3:] - if http_status != "200": - http_status_errors.append( - f"Request {i+1}: HTTP {http_status}" - ) - client_rc = 1 # Mark as failed - - client_stdout = "\n".join(outs) - client_stderr = "\n".join(errs) - - # Log HTTP status errors for non-serverless - if http_status_errors: - error_msg = ( - f"Non-serverless server returned non-200 status " - f"codes: {'; '.join(http_status_errors)}" - ) - logger.error("❌ %s", error_msg) - client_stderr += f"\n{error_msg}" - - # Always attempt to stop and collect logs - logger.info("🛑 Stopping server container") - - # Collect logs BEFORE stopping container (while it's still running) - logger.info("📋 Collecting container logs...") - logs_proc = subprocess.run(["docker", "logs", container_id], capture_output=True, text=True) - server_logs = logs_proc.stdout - if logs_proc.stderr: - server_logs += "\n=== STDERR ===\n" + logs_proc.stderr - - # Check if error export file was created - error_copy_failed = False - error_copy_msg = "" - if error_export_file.exists(): - file_size = error_export_file.stat().st_size - logger.info(f"📄 Found error export file: {error_export_file} (size: {file_size} bytes)") - else: - error_copy_failed = True - error_copy_msg = f"Error export file not found: {error_export_file}" - logger.warning(f"⚠️ {error_copy_msg}") - - # Now stop and remove container - subprocess.run(["docker", "stop", container_id], capture_output=True, text=True) - subprocess.run(["docker", "rm", container_id], capture_output=True, text=True) - - # Prepare a Result-like object - class Result: - def __init__(self, returncode, stdout, stderr): - self.returncode = returncode - self.stdout = stdout - self.stderr = stderr - - combined_stdout = "".join([ - "=== SERVER LOGS ===\n", server_logs or "", - "\n=== CLIENT STDOUT ===\n", client_stdout or "", - ]) - combined_stderr = client_stderr or "" - # For non-serverless flows, we care about HTTP responses and validation status, - # not the container's own exit code. Track client failure separately and - # keep Result.returncode neutral (0) so final status can branch by server type. - client_failed = not (ready and client_rc == 0) - result = Result(0, combined_stdout, combined_stderr) - - # Save logs to file - with open(log_file, 'w') as f: - f.write("=== Test Configuration ===\n") - f.write(f"Image: {image_name}\n") - f.write(f"Command: {' '.join(cmd)}\n") - f.write(f"Return Code: {result.returncode}\n") - f.write(f"Timeout: {timeout} seconds\n") - f.write("Error Detection: Enabled (via JSON export)\n") - f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") - f.write("\n=== STDOUT ===\n") - f.write(result.stdout) - f.write("\n=== STDERR ===\n") - f.write(result.stderr) - f.write("\n=== END LOG ===\n") - - # Check for expected_error (negative test) using exported error JSON - expected_error = test_config.get("expected_error") - if expected_error: - # This is a negative test - fail immediately if error file not found - if error_copy_failed or error_export_file is None: - error_msg = f"Negative test FAILED: Could not find error export file: {error_copy_msg}" - logger.error(f"❌ {error_msg}") - logger.info(f"📄 Logs saved to: {log_file}") - return False, error_msg, str(log_file) - - # Try to read the exported error file - matched_error = None # Will hold the error that matches expected_error exactly - - if error_export_file.exists(): - try: - with open(error_export_file, 'r') as f: - error_data = json.load(f) - - stats = error_data.get("stats", {}) - total_errors = stats.get("total_errors", 0) - errors = error_data.get("errors", []) - collected_codes = [err.get("error_code") for err in errors] - - # Search for EXACT match of expected error code - for err in errors: - if err.get("error_code") == expected_error: - matched_error = err - break - - if matched_error is not None: - # EXACT match found - test passes - logger.info(f"✅ Negative test PASSED: Error code '{expected_error}' matches exactly") - logger.info(f" Error message: {matched_error.get('message', 'N/A')[:200]}") - logger.info(f" Component: {matched_error.get('component', 'N/A')}") - logger.info(f" Operation: {matched_error.get('operation', 'N/A')}") - logger.info(f" Total errors collected: {total_errors}") - logger.info(f"📄 Logs saved to: {log_file}") - return True, result.stdout, str(log_file) - else: - # No exact match - test fails - error_msg = f"Negative test FAILED: Expected error '{expected_error}' not found" - logger.error(f"❌ {error_msg}") - logger.error(f" Collected error codes: {collected_codes}") - logger.error(f" Total errors: {total_errors}") - logger.info(f"📄 Logs saved to: {log_file}") - return False, error_msg, str(log_file) - except json.JSONDecodeError as e: - error_msg = f"Negative test FAILED: Failed to parse error export file: {e}" - logger.error(f"❌ {error_msg}") - logger.info(f"📄 Logs saved to: {log_file}") - return False, error_msg, str(log_file) - except Exception as e: - error_msg = f"Negative test FAILED: Failed to read error export file: {e}" - logger.error(f"❌ {error_msg}") - logger.info(f"📄 Logs saved to: {log_file}") - return False, error_msg, str(log_file) - else: - # Error export file doesn't exist - error_msg = f"Negative test FAILED: Error export file not found: {error_export_file}" - logger.error(f"❌ {error_msg}") - logger.info(f"📄 Logs saved to: {log_file}") - return False, error_msg, str(log_file) - - # For serverless non-negative tests, check that the result file exists and is non-empty - if result_export_file: - if not result_export_file.exists(): - error_msg = f"Result file not found: {result_export_file}" - logger.error(f"❌ {error_msg}") - logger.info(f"📄 Logs saved to: {log_file}") - return False, error_msg, str(log_file) - file_size = result_export_file.stat().st_size - if file_size == 0: - error_msg = f"Result file is empty: {result_export_file}" - logger.error(f"❌ {error_msg}") - logger.info(f"📄 Logs saved to: {log_file}") - return False, error_msg, str(log_file) - logger.info(f"📄 Result file OK: {result_export_file} ({file_size} bytes)") - - # Check for errors using the exported error JSON file (if ERROR_EXPORT_PATH was configured) - has_errors = False - error_details = [] - - if error_export_file and error_export_file.exists(): - try: - with open(error_export_file, 'r') as f: - error_data = json.load(f) - - stats = error_data.get("stats", {}) - total_errors = stats.get("total_errors", 0) - errors = error_data.get("errors", []) - - if total_errors > 0: - has_errors = True - for err in errors: - error_details.append({ - "code": err.get("error_code", "UNKNOWN"), - "message": err.get("message", "N/A"), - "severity": err.get("severity", "unknown"), - "component": err.get("component", "N/A") - }) - except json.JSONDecodeError as e: - logger.warning(f"⚠️ Failed to parse error export file: {e}") - except Exception as e: - logger.warning(f"⚠️ Failed to read error export file: {e}") - - # Determine overall success: - # - For serverless flows, rely on container return code and error exports. - # - For non-serverless HTTP server flows, rely on HTTP/client status (client_failed) - # and error exports; ignore the container's own exit code. - if is_serverless: - rc_failed = result.returncode < 0 - else: - # client_failed is only set in non-serverless branch; default to False otherwise - rc_failed = 'client_failed' in locals() and client_failed - - if not rc_failed and not has_errors: - logger.info(f"✅ Successfully tested image: {image_name}") - logger.info(f"📄 Logs saved to: {log_file}") - return True, result.stdout, str(log_file) - elif has_errors: - error_msg = f"Test failed: {len(error_details)} error(s) detected in image: {image_name}" - logger.error(f"❌ {error_msg}") - logger.error("Errors found:") - for err in error_details[:10]: # Show first 10 errors - logger.error(f" [{err['severity'].upper()}] {err['code']}: {err['message'][:100]}") - if len(error_details) > 10: - logger.error(f" ... and {len(error_details) - 10} more errors") - logger.info(f"📄 Logs saved to: {log_file}") - logger.info(f"📄 Error export: {error_export_file}") - return False, error_msg, str(log_file) - else: - if is_serverless: - logger.error( - f"❌ Test failed with negative return code for image: {image_name}" - ) - logger.error(f"Return code: {result.returncode}") - failure_reason = f"Test failed with negative return code {result.returncode}" - else: - logger.error( - f"❌ Test failed due to client/HTTP errors for image: {image_name}" - ) - failure_reason = "Test failed due to client/HTTP errors" - logger.info(f"📄 Logs saved to: {log_file}") - return False, failure_reason, str(log_file) - - except subprocess.TimeoutExpired as timeout_ex: - error_msg = f"Test timed out after {timeout} seconds for image: {image_name}" - logger.error(f"❌ {error_msg}") - - # Try to collect container logs if this was a detached container - container_logs = "" - if server_type != "serverless": - # For non-serverless, we have a detached container that needs cleanup - try: - # Check if container_id was defined (container was started) - if 'container_id' in locals(): - logger.info(f"📋 Collecting logs from timed-out container: {container_id}") - logs_proc = subprocess.run( - ["docker", "logs", container_id], - capture_output=True, - text=True, - timeout=10 - ) - container_logs = logs_proc.stdout - if logs_proc.stderr: - container_logs += "\n=== STDERR ===\n" + logs_proc.stderr - - # Stop and remove the container - logger.info(f"🛑 Stopping timed-out container: {container_id}") - subprocess.run(["docker", "stop", container_id], capture_output=True, text=True, timeout=30) - subprocess.run(["docker", "rm", container_id], capture_output=True, text=True, timeout=10) - except Exception as cleanup_error: - logger.warning(f"⚠️ Failed to collect logs or cleanup container: {cleanup_error}") - container_logs += f"\n\n[Error during log collection: {cleanup_error}]\n" - - # Save timeout log with container logs if available - with open(log_file, 'w') as f: - f.write("=== Test Configuration ===\n") - f.write(f"Image: {image_name}\n") - f.write(f"Command: {' '.join(cmd)}\n") - f.write(f"Status: TIMEOUT\n") - f.write(f"Timeout: {timeout} seconds\n") - f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") - f.write("\n=== ERROR ===\n") - f.write(error_msg) - if container_logs: - f.write("\n\n=== CONTAINER LOGS ===\n") - f.write(container_logs) - f.write("\n=== END LOG ===\n") - - return False, error_msg, str(log_file) - except Exception as e: - error_msg = f"Exception during test: {str(e)}" - logger.error(f"❌ {error_msg}") - - # Add full traceback for debugging - import traceback - full_traceback = traceback.format_exc() - logger.error(f"Traceback:\n{full_traceback}") - - # Try to collect container logs if this was a detached container - container_logs = "" - if server_type != "serverless": - # For non-serverless, we have a detached container that needs cleanup - try: - # Check if container_id was defined (container was started) - if 'container_id' in locals(): - logger.info(f"📋 Collecting logs from failed container: {container_id}") - logs_proc = subprocess.run( - ["docker", "logs", container_id], - capture_output=True, - text=True, - timeout=10 - ) - container_logs = logs_proc.stdout - if logs_proc.stderr: - container_logs += "\n=== STDERR ===\n" + logs_proc.stderr - - # Stop and remove the container - logger.info(f"🛑 Stopping failed container: {container_id}") - subprocess.run(["docker", "stop", container_id], capture_output=True, text=True, timeout=30) - subprocess.run(["docker", "rm", container_id], capture_output=True, text=True, timeout=10) - except Exception as cleanup_error: - logger.warning(f"⚠️ Failed to collect logs or cleanup container: {cleanup_error}") - container_logs += f"\n\n[Error during log collection: {cleanup_error}]\n" - - # Save exception log - with open(log_file, 'w') as f: - f.write("=== Test Configuration ===\n") - f.write(f"Image: {image_name}\n") - f.write(f"Status: EXCEPTION\n") - f.write(f"Timestamp: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") - f.write("\n=== ERROR ===\n") - f.write(error_msg) - f.write("\n\n=== TRACEBACK ===\n") - f.write(full_traceback) - if container_logs: - f.write("\n\n=== CONTAINER LOGS ===\n") - f.write(container_logs) - f.write("\n=== END LOG ===\n") - - return False, error_msg, str(log_file) - - def cleanup_prerequisite_script(self, test_config: Dict, test_id: int) -> bool: - """Clean up resources created by prerequisite scripts.""" - prerequisite_script = test_config.get("prerequisite_script") - if not prerequisite_script: - return True - - try: - # Check if the script is the RTSP server setup script - if "setup_rtsp_server.sh" in prerequisite_script: - logger.info("🧹 Cleaning up RTSP server...") - # Use secure command execution for cleanup - cleanup_command = ["./setup_rtsp_server.sh", "--kill"] - cleanup_result = subprocess.run( - cleanup_command, - shell=False, # Safer execution without shell - capture_output=True, - text=True, - timeout=30 - ) - - if cleanup_result.returncode == 0: - logger.info("✅ RTSP server cleanup completed") - return True - else: - logger.warning(f"⚠️ RTSP server cleanup failed: {cleanup_result.stderr}") - return False - - # Add more cleanup logic for other prerequisite scripts here - logger.info("🧹 No specific cleanup needed for prerequisite script") - return True - - except Exception as e: - logger.warning(f"⚠️ Exception during prerequisite cleanup: {str(e)}") - return False - - def cleanup_image(self, image_name: str) -> bool: - """Remove the test image.""" - try: - result = subprocess.run( - ["docker", "rmi", image_name], - capture_output=True, - text=True - ) - - if result.returncode == 0: - logger.info(f"🧹 Cleaned up image: {image_name}") - return True - else: - logger.warning(f"⚠️ Failed to cleanup image: {image_name}") - return False - - except Exception as e: - logger.warning(f"⚠️ Exception during cleanup: {str(e)}") - return False - - def run_test_suite(self, test_configs: List[Dict], cleanup: bool = True, gitlab_token: Optional[str] = None, force_full_flow: bool = False, gpus: str = "all") -> Dict: - """Run a suite of tests with different configurations. - - Args: - test_configs: List of test configurations - cleanup: Whether to cleanup Docker images after testing - gitlab_token: GitLab token for authentication - force_full_flow: Force full build+test flow even for disabled tests - gpus: GPU devices to use (default: 'all') - """ - results = { - "total_tests": len(test_configs), - "passed": 0, - "failed": 0, - "results": [] - } - - for i, config in enumerate(test_configs, 1): - logger.info(f"\n{'='*60}") - logger.info(f"Running test {i}/{len(test_configs)}") - logger.info(f"{'='*60}") - - # Generate unique image name - image_name = f"test-inference_builder-{i}-{int(time.time())}" - - build_args = config.get("build_args", {}).copy() - test_cfg = config.get("test_config", {}).copy() - - # Add _config_dir to test_cfg so paths can be resolved correctly - if "_config_dir" in config: - test_cfg["_config_dir"] = config["_config_dir"] - - # Note: auto_validation is passed directly to build_image via test_config - # No need to add it to build_args - - # Debug logging for flow decision - default_enable = test_cfg.get("default_enable", True) - logger.info(f"🔍 Test flow decision: default_enable={default_enable}, force_full_flow={force_full_flow}") - - # If default_enable is False, skip Docker build/test but run codegen, - # unless full flow is forced by selection (e.g., --test-case provided) - if not default_enable and not force_full_flow: - logger.info("⚙️ Test disabled via default_enable=false. Running code generation only (skipping model download)...") - codegen_success, codegen_output = self.generate_inference_code(build_args, test_cfg) - - status = "SKIPPED" - test_result = { - "test_id": i, - "config": config, - "status": status, - "build_success": False, - "test_success": False, - "build_output": codegen_output, - "test_output": "", - "log_file": "", - "image_name": image_name - } - results["results"].append(test_result) - logger.info(f"Test {i} result: {status} (codegen_only)") - # Do not increment passed/failed counters for skipped tests - continue - - # Download models if specified in test config (only for full build+test flow) - models_config = test_cfg.get("models", {}) - if models_config: - logger.info(f"📦 Checking and downloading models (full build+test flow)...") - config_dir = Path(config.get("_config_dir", ".")) - download_success, download_msg = self.download_models(models_config, config_dir) - if not download_success: - logger.error(f"❌ Model download failed: {download_msg}") - results["failed"] += 1 - test_result = { - "test_id": i, - "config": config, - "status": "FAILED", - "build_success": False, - "test_success": False, - "build_output": "", - "test_output": download_msg, - "log_file": "", - "image_name": image_name - } - results["results"].append(test_result) - logger.info(f"Test {i} result: FAILED (model download)") - continue - - # Build image with resolved dockerfile and base_dir - dockerfile_to_use = config.get("_resolved_dockerfile") - base_dir_to_use = config.get("_resolved_base_dir") - build_success, build_output = self.build_image(build_args, image_name, dockerfile_to_use, base_dir_to_use, test_cfg) - - if build_success: - # Test image - pass server type and config dir to test_config - test_config = config.get("test_config", {}).copy() - if "SERVER_TYPE" in build_args: - test_config["SERVER_TYPE"] = build_args["SERVER_TYPE"] - # Pass config directory for relative path resolution - if "_config_dir" in config: - test_config["_config_dir"] = config["_config_dir"] - if "TEST_APP_NAME" in build_args: - test_config["TEST_APP_NAME"] = build_args["TEST_APP_NAME"] - test_success, test_output, log_file = self.test_image( - image_name, - test_config, - i, - gpus=gpus - ) - - if test_success: - results["passed"] += 1 - status = "PASSED" - else: - results["failed"] += 1 - status = "FAILED" - else: - results["failed"] += 1 - test_success = False - test_output = "" - log_file = "" - status = "FAILED" - - # Cleanup (run cleanup for full-flow tests; skip if codegen-only path was taken) - if cleanup: - self.cleanup_image(image_name) - # Clean up prerequisite scripts - self.cleanup_prerequisite_script(config.get("test_config", {}), i) - - # Store result - test_result = { - "test_id": i, - "config": config, - "status": status, - "build_success": build_success, - "test_success": test_success, - "build_output": build_output, - "test_output": test_output, - "log_file": log_file, - "image_name": image_name - } - - results["results"].append(test_result) - - logger.info(f"Test {i} result: {status}") - - return results - - def generate_report(self, results: Dict, output_file: Optional[str] = None): - """Generate a test report.""" - report = { - "summary": { - "total_tests": results["total_tests"], - "passed": results["passed"], - "failed": results["failed"], - "success_rate": f"{(results['passed'] / results['total_tests'] * 100):.1f}%" if results["total_tests"] > 0 else "0%" - }, - "results": results["results"] - } - - if output_file: - with open(output_file, 'w') as f: - json.dump(report, f, indent=2) - logger.info(f"📄 Report saved to: {output_file}") - - # Print summary - logger.info(f"\n{'='*60}") - logger.info("TEST SUMMARY") - logger.info(f"{'='*60}") - logger.info(f"Total tests: {results['total_tests']}") - logger.info(f"Passed: {results['passed']}") - logger.info(f"Failed: {results['failed']}") - logger.info(f"Success rate: {report['summary']['success_rate']}") - - # Print test results with log file locations - logger.info(f"\n{'='*60}") - logger.info("TEST RESULTS") - logger.info(f"{'='*60}") - for result in results["results"]: - test_name = result["config"].get("name", f"Test {result['test_id']}") - status = result.get("status", "UNKNOWN") - log_file = result.get("log_file", "") - - if status == "PASSED": - status_icon = "✅" - elif status == "FAILED": - status_icon = "❌" - elif status == "SKIPPED": - status_icon = "⏭️" - else: - status_icon = "❓" - - if log_file: - logger.info(f"{status_icon} [{result['test_id']}] {test_name}: {log_file}") - else: - logger.info(f"{status_icon} [{result['test_id']}] {test_name}") - - return report - - -def main(): - parser = argparse.ArgumentParser(description="Test Docker builds with different arguments") - parser.add_argument("--dockerfile", default="Dockerfile", help="Path to Dockerfile") - parser.add_argument("--base-dir", default=".", help="Base directory for Docker build context") - parser.add_argument("--config-file", required=True, help="JSON file with test configurations") - parser.add_argument("--output", help="Output file for test report") - parser.add_argument("--log-dir", default="logs", help="Directory to save container logs") - parser.add_argument("--no-cleanup", action="store_true", help="Don't cleanup images after testing") - parser.add_argument("--gitlab-token", help="GitLab token for authentication") - parser.add_argument("--test-case", help="Run only the test case with this name (partial match supported). Supplying this forces full flow (build+test) even if disabled.") - parser.add_argument("--gpus", default="all", help="GPU devices to use for Docker containers (default: 'all'). Examples: 'all', 'device=0', 'device=0,1', '\"device=0,1\"'") - - # Parse arguments with security validation - try: - args = parser.parse_args() - except Exception as e: - logger.error(f"❌ Argument parsing failed: {str(e)}") - sys.exit(1) - - # Comprehensive security validation - validation_errors = [] - - # Validate dockerfile path - if not validate_dockerfile_path(args.dockerfile): - validation_errors.append(f"Invalid Dockerfile path: {args.dockerfile}") - - # Validate base directory - if not validate_safe_path(args.base_dir): - validation_errors.append(f"Invalid base directory path: {args.base_dir}") - - # Validate config file - if not validate_config_file_path(args.config_file): - validation_errors.append(f"Invalid config file path: {args.config_file}") - - # Validate output file if provided - if args.output and not validate_safe_path(args.output): - validation_errors.append(f"Invalid output file path: {args.output}") - - # Validate log directory - if not validate_log_directory(args.log_dir): - validation_errors.append(f"Invalid log directory path: {args.log_dir}") - - # Validate GitLab token if provided - if args.gitlab_token and not validate_gitlab_token(args.gitlab_token): - validation_errors.append("Invalid GitLab token format") - - # Exit if any validation errors - if validation_errors: - logger.error("❌ Security validation failed:") - for error in validation_errors: - logger.error(f" - {error}") - sys.exit(1) - - # Additional file existence checks with security - try: - # Validate config file first (required) - if not os.path.isfile(args.config_file): - logger.error(f"❌ Config file not found: {args.config_file}") - sys.exit(1) - - # Dockerfile and base-dir are optional - they'll be resolved from config file if not found - # Only warn if they're explicitly specified but don't exist - dockerfile_exists = os.path.isfile(args.dockerfile) - base_dir_exists = os.path.isdir(args.base_dir) - - if not dockerfile_exists: - logger.info(f"ℹ️ Dockerfile not found at command-line path: {args.dockerfile}") - logger.info(f"ℹ️ Will use Dockerfile from test config or config directory") - - if not base_dir_exists: - logger.info(f"ℹ️ Base directory not found at command-line path: {args.base_dir}") - logger.info(f"ℹ️ Will use base directory from test config or config directory") - - # Validate log directory path (prevent directory traversal) - log_dir_path = Path(args.log_dir).resolve() - current_dir = Path.cwd().resolve() - try: - log_dir_path.relative_to(current_dir) - except ValueError: - logger.error(f"❌ Log directory path is outside current directory: {args.log_dir}") - sys.exit(1) - - except Exception as e: - logger.error(f"❌ File validation failed: {str(e)}") - sys.exit(1) - - # Initialize tester with validated arguments - try: - tester = DockerBuildTester(args.dockerfile, args.base_dir, args.log_dir) - except Exception as e: - logger.error(f"❌ Failed to initialize DockerBuildTester: {str(e)}") - sys.exit(1) - - # Load test configurations from file with security validation - try: - with open(args.config_file, 'r') as f: - test_configs = json.load(f) - - # Validate JSON structure - if not isinstance(test_configs, list): - logger.error("❌ Config file must contain a list of test configurations") - sys.exit(1) - - # Get the directory containing the config file for resolving relative paths - config_dir = Path(args.config_file).parent.resolve() - logger.info(f"📁 Config file directory: {config_dir}") - - # Validate each test configuration for security - for i, config in enumerate(test_configs): - if not isinstance(config, dict): - logger.error(f"❌ Test configuration {i+1} must be a dictionary") - sys.exit(1) - - # Handle dockerfile specification - # Priority: 1) dockerfile in test_config, 2) Dockerfile in config dir, 3) command-line arg - if "dockerfile" in config: - # User explicitly specified dockerfile in config - dockerfile_path = (config_dir / config["dockerfile"]).resolve() - if not dockerfile_path.exists(): - logger.error(f"❌ Dockerfile specified in test config not found: {dockerfile_path}") - sys.exit(1) - config["_resolved_dockerfile"] = str(dockerfile_path) - logger.info(f"🔗 Using Dockerfile from config: {config['dockerfile']} -> {dockerfile_path}") - else: - # Check for Dockerfile in same directory as config - default_dockerfile = config_dir / "Dockerfile" - if default_dockerfile.exists(): - config["_resolved_dockerfile"] = str(default_dockerfile) - logger.info(f"🔗 Using default Dockerfile from config directory: {default_dockerfile}") - else: - # Fall back to command-line specified dockerfile - config["_resolved_dockerfile"] = args.dockerfile - logger.info(f"🔗 Using Dockerfile from command-line: {args.dockerfile}") - - # Base directory is ALWAYS the directory containing the test config JSON - # This makes test configs self-contained and portable - config["_resolved_base_dir"] = str(config_dir) - config["_config_dir"] = str(config_dir) # Store for model downloads - logger.info(f"🔗 Using base_dir (config directory): {config_dir}") - - # Validate build_args if present - if "build_args" in config: - if not isinstance(config["build_args"], dict): - logger.error(f"❌ build_args in test configuration {i+1} must be a dictionary") - sys.exit(1) - - # Resolve paths relative to config file directory - path_args = ["APP_YAML_PATH", "OUTPUT_DIR", "PROCESSORS_PATH", "OPENAPI_SPEC"] - for path_arg in path_args: - if path_arg in config["build_args"]: - original_path = config["build_args"][path_arg] - # Resolve relative to config file directory - resolved_path = (config_dir / original_path).resolve() - # Convert back to relative path from current working directory - try: - rel_path = resolved_path.relative_to(Path.cwd().resolve()) - config["build_args"][path_arg] = str(rel_path) - logger.info(f"🔗 Resolved {path_arg}: {original_path} -> {rel_path}") - except ValueError: - # If can't make relative, use absolute path - config["build_args"][path_arg] = str(resolved_path) - logger.info(f"🔗 Resolved {path_arg}: {original_path} -> {resolved_path}") - - for key, value in config["build_args"].items(): - if not validate_build_arg_name(key): - logger.error(f"❌ Invalid build arg name in test configuration {i+1}: {key}") - sys.exit(1) - if not isinstance(value, str) or not validate_build_arg_value(value): - logger.error(f"❌ Invalid build arg value in test configuration {i+1}: {value}") - sys.exit(1) - - # Validate test_config if present - if "test_config" in config: - test_config = config["test_config"] - config_valid, config_error = validate_test_config(test_config) - if not config_valid: - logger.error(f"❌ Test configuration {i+1} validation failed: {config_error}") - sys.exit(1) - - # Filter test configurations by test case name if specified - if args.test_case: - original_count = len(test_configs) - if args.test_case == "*": - logger.info("--test-case '*' specified: selecting all tests (including disabled).") - else: - test_configs = [ - config for config in test_configs - if args.test_case.lower() in config.get("name", "").lower() - ] - - if not test_configs: - logger.error(f"❌ No test cases found matching '{args.test_case}'") - logger.info("Available test cases:") - # Reload original configs to show available names - with open(args.config_file, 'r') as f: - original_configs = json.load(f) - for i, config in enumerate(original_configs, 1): - logger.info(f" {i}. {config.get('name', f'Unnamed test {i}')}") - sys.exit(1) - - logger.info(f"Filtered {original_count} test configurations to {len(test_configs)} matching '{args.test_case}'") - for i, config in enumerate(test_configs, 1): - logger.info(f" {i}. {config.get('name', f'Test {i}')}") - else: - # Include disabled tests; they will run codegen-only path unless -c/--test-case forces full flow. - logger.info("Including disabled tests (default_enable=false). They will run codegen-only unless --test-case is provided.") - - except json.JSONDecodeError as e: - logger.error(f"❌ Invalid JSON in config file: {str(e)}") - sys.exit(1) - except Exception as e: - logger.error(f"❌ Failed to load config file: {str(e)}") - sys.exit(1) - - # Run tests with error handling - try: - logger.info(f"Starting test suite with {len(test_configs)} configurations") - logger.info(f"Logs will be saved to: {args.log_dir}") - logger.info(f"Using GPU devices: {args.gpus}") - # Force full flow if --test-case provided (including "*") - force_full_flow = args.test_case is not None and len(args.test_case) > 0 - logger.info(f"🔍 Test suite settings: test_case={args.test_case}, force_full_flow={force_full_flow}") - results = tester.run_test_suite(test_configs, cleanup=not args.no_cleanup, gitlab_token=args.gitlab_token, force_full_flow=force_full_flow, gpus=args.gpus) - except Exception as e: - logger.error(f"❌ Test suite execution failed: {str(e)}") - sys.exit(1) - - # Generate report with error handling - try: - tester.generate_report(results, args.output) - except Exception as e: - logger.error(f"❌ Report generation failed: {str(e)}") - sys.exit(1) - - # Exit with appropriate code - if results["failed"] > 0: - sys.exit(1) - else: - sys.exit(0) - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/tools/inference_builder/builder/triton/__init__.py b/tools/inference_builder/builder/triton/__init__.py deleted file mode 100644 index 3159bfe6..00000000 --- a/tools/inference_builder/builder/triton/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tools/inference_builder/builder/triton/model_config_pb2.py b/tools/inference_builder/builder/triton/model_config_pb2.py deleted file mode 100644 index fb8e904e..00000000 --- a/tools/inference_builder/builder/triton/model_config_pb2.py +++ /dev/null @@ -1,195 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: model_config.proto -# Protobuf Python Version: 5.27.3 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 5, - 27, - 3, - '', - 'model_config.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12model_config.proto\x12\tinference\"\x96\x01\n\x10ModelRateLimiter\x12\x37\n\tresources\x18\x01 \x03(\x0b\x32$.inference.ModelRateLimiter.Resource\x12\x10\n\x08priority\x18\x02 \x01(\r\x1a\x37\n\x08Resource\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06global\x18\x02 \x01(\x08\x12\r\n\x05\x63ount\x18\x03 \x01(\r\"\x87\x04\n\x12ModelInstanceGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x30\n\x04kind\x18\x04 \x01(\x0e\x32\".inference.ModelInstanceGroup.Kind\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\x12\x31\n\x0crate_limiter\x18\x06 \x01(\x0b\x32\x1b.inference.ModelRateLimiter\x12\x0c\n\x04gpus\x18\x03 \x03(\x05\x12H\n\x11secondary_devices\x18\x08 \x03(\x0b\x32-.inference.ModelInstanceGroup.SecondaryDevice\x12\x0f\n\x07profile\x18\x05 \x03(\t\x12\x0f\n\x07passive\x18\x07 \x01(\x08\x12\x13\n\x0bhost_policy\x18\t \x01(\t\x1a\x9c\x01\n\x0fSecondaryDevice\x12O\n\x04kind\x18\x01 \x01(\x0e\x32\x41.inference.ModelInstanceGroup.SecondaryDevice.SecondaryDeviceKind\x12\x11\n\tdevice_id\x18\x02 \x01(\x03\"%\n\x13SecondaryDeviceKind\x12\x0e\n\nKIND_NVDLA\x10\x00\"A\n\x04Kind\x12\r\n\tKIND_AUTO\x10\x00\x12\x0c\n\x08KIND_GPU\x10\x01\x12\x0c\n\x08KIND_CPU\x10\x02\x12\x0e\n\nKIND_MODEL\x10\x03\"#\n\x12ModelTensorReshape\x12\r\n\x05shape\x18\x01 \x03(\x03\"\xd3\x02\n\nModelInput\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\tdata_type\x18\x02 \x01(\x0e\x32\x13.inference.DataType\x12,\n\x06\x66ormat\x18\x03 \x01(\x0e\x32\x1c.inference.ModelInput.Format\x12\x0c\n\x04\x64ims\x18\x04 \x03(\x03\x12.\n\x07reshape\x18\x05 \x01(\x0b\x32\x1d.inference.ModelTensorReshape\x12\x17\n\x0fis_shape_tensor\x18\x06 \x01(\x08\x12\x1a\n\x12\x61llow_ragged_batch\x18\x07 \x01(\x08\x12\x10\n\x08optional\x18\x08 \x01(\x08\x12\x1f\n\x17is_non_linear_format_io\x18\t \x01(\x08\";\n\x06\x46ormat\x12\x0f\n\x0b\x46ORMAT_NONE\x10\x00\x12\x0f\n\x0b\x46ORMAT_NHWC\x10\x01\x12\x0f\n\x0b\x46ORMAT_NCHW\x10\x02\"\xd3\x01\n\x0bModelOutput\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\tdata_type\x18\x02 \x01(\x0e\x32\x13.inference.DataType\x12\x0c\n\x04\x64ims\x18\x03 \x03(\x03\x12.\n\x07reshape\x18\x05 \x01(\x0b\x32\x1d.inference.ModelTensorReshape\x12\x16\n\x0elabel_filename\x18\x04 \x01(\t\x12\x17\n\x0fis_shape_tensor\x18\x06 \x01(\x08\x12\x1f\n\x17is_non_linear_format_io\x18\x07 \x01(\x08\"\xd9\x02\n\nBatchInput\x12(\n\x04kind\x18\x01 \x01(\x0e\x32\x1a.inference.BatchInput.Kind\x12\x13\n\x0btarget_name\x18\x02 \x03(\t\x12&\n\tdata_type\x18\x03 \x01(\x0e\x32\x13.inference.DataType\x12\x14\n\x0csource_input\x18\x04 \x03(\t\"\xcd\x01\n\x04Kind\x12\x17\n\x13\x42\x41TCH_ELEMENT_COUNT\x10\x00\x12#\n\x1f\x42\x41TCH_ACCUMULATED_ELEMENT_COUNT\x10\x01\x12-\n)BATCH_ACCUMULATED_ELEMENT_COUNT_WITH_ZERO\x10\x02\x12$\n BATCH_MAX_ELEMENT_COUNT_AS_SHAPE\x10\x03\x12\x14\n\x10\x42\x41TCH_ITEM_SHAPE\x10\x04\x12\x1c\n\x18\x42\x41TCH_ITEM_SHAPE_FLATTEN\x10\x05\"\x8f\x01\n\x0b\x42\x61tchOutput\x12\x13\n\x0btarget_name\x18\x01 \x03(\t\x12)\n\x04kind\x18\x02 \x01(\x0e\x32\x1b.inference.BatchOutput.Kind\x12\x14\n\x0csource_input\x18\x03 \x03(\t\"*\n\x04Kind\x12\"\n\x1e\x42\x41TCH_SCATTER_WITH_INPUT_SHAPE\x10\x00\"\x90\x02\n\x12ModelVersionPolicy\x12\x36\n\x06latest\x18\x01 \x01(\x0b\x32$.inference.ModelVersionPolicy.LatestH\x00\x12\x30\n\x03\x61ll\x18\x02 \x01(\x0b\x32!.inference.ModelVersionPolicy.AllH\x00\x12:\n\x08specific\x18\x03 \x01(\x0b\x32&.inference.ModelVersionPolicy.SpecificH\x00\x1a\x1e\n\x06Latest\x12\x14\n\x0cnum_versions\x18\x01 \x01(\r\x1a\x05\n\x03\x41ll\x1a\x1c\n\x08Specific\x12\x10\n\x08versions\x18\x01 \x03(\x03\x42\x0f\n\rpolicy_choice\"\xfd\r\n\x17ModelOptimizationPolicy\x12\x37\n\x05graph\x18\x01 \x01(\x0b\x32(.inference.ModelOptimizationPolicy.Graph\x12\x42\n\x08priority\x18\x02 \x01(\x0e\x32\x30.inference.ModelOptimizationPolicy.ModelPriority\x12\x35\n\x04\x63uda\x18\x03 \x01(\x0b\x32\'.inference.ModelOptimizationPolicy.Cuda\x12X\n\x16\x65xecution_accelerators\x18\x04 \x01(\x0b\x32\x38.inference.ModelOptimizationPolicy.ExecutionAccelerators\x12R\n\x13input_pinned_memory\x18\x05 \x01(\x0b\x32\x35.inference.ModelOptimizationPolicy.PinnedMemoryBuffer\x12S\n\x14output_pinned_memory\x18\x06 \x01(\x0b\x32\x35.inference.ModelOptimizationPolicy.PinnedMemoryBuffer\x12&\n\x1egather_kernel_buffer_threshold\x18\x07 \x01(\r\x12\x16\n\x0e\x65\x61ger_batching\x18\x08 \x01(\x08\x1a\x16\n\x05Graph\x12\r\n\x05level\x18\x01 \x01(\x05\x1a\xba\x05\n\x04\x43uda\x12\x0e\n\x06graphs\x18\x01 \x01(\x08\x12\x18\n\x10\x62usy_wait_events\x18\x02 \x01(\x08\x12\x45\n\ngraph_spec\x18\x03 \x03(\x0b\x32\x31.inference.ModelOptimizationPolicy.Cuda.GraphSpec\x12\x1a\n\x12output_copy_stream\x18\x04 \x01(\x08\x1a\xa4\x04\n\tGraphSpec\x12\x12\n\nbatch_size\x18\x01 \x01(\x05\x12K\n\x05input\x18\x02 \x03(\x0b\x32<.inference.ModelOptimizationPolicy.Cuda.GraphSpec.InputEntry\x12W\n\x11graph_lower_bound\x18\x03 \x01(\x0b\x32<.inference.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound\x1a\x14\n\x05Shape\x12\x0b\n\x03\x64im\x18\x01 \x03(\x03\x1a\xdf\x01\n\nLowerBound\x12\x12\n\nbatch_size\x18\x01 \x01(\x05\x12V\n\x05input\x18\x02 \x03(\x0b\x32G.inference.ModelOptimizationPolicy.Cuda.GraphSpec.LowerBound.InputEntry\x1a\x65\n\nInputEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.inference.ModelOptimizationPolicy.Cuda.GraphSpec.Shape:\x02\x38\x01\x1a\x65\n\nInputEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x37.inference.ModelOptimizationPolicy.Cuda.GraphSpec.Shape:\x02\x38\x01\x1a\xa4\x03\n\x15\x45xecutionAccelerators\x12g\n\x19gpu_execution_accelerator\x18\x01 \x03(\x0b\x32\x44.inference.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator\x12g\n\x19\x63pu_execution_accelerator\x18\x02 \x03(\x0b\x32\x44.inference.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator\x1a\xb8\x01\n\x0b\x41\x63\x63\x65lerator\x12\x0c\n\x04name\x18\x01 \x01(\t\x12h\n\nparameters\x18\x02 \x03(\x0b\x32T.inference.ModelOptimizationPolicy.ExecutionAccelerators.Accelerator.ParametersEntry\x1a\x31\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a$\n\x12PinnedMemoryBuffer\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"I\n\rModelPriority\x12\x14\n\x10PRIORITY_DEFAULT\x10\x00\x12\x10\n\x0cPRIORITY_MAX\x10\x01\x12\x10\n\x0cPRIORITY_MIN\x10\x02\"\xdb\x01\n\x10ModelQueuePolicy\x12\x41\n\x0etimeout_action\x18\x01 \x01(\x0e\x32).inference.ModelQueuePolicy.TimeoutAction\x12$\n\x1c\x64\x65\x66\x61ult_timeout_microseconds\x18\x02 \x01(\x04\x12\x1e\n\x16\x61llow_timeout_override\x18\x03 \x01(\x08\x12\x16\n\x0emax_queue_size\x18\x04 \x01(\r\"&\n\rTimeoutAction\x12\n\n\x06REJECT\x10\x00\x12\t\n\x05\x44\x45LAY\x10\x01\"\x9b\x03\n\x14ModelDynamicBatching\x12\x1c\n\x14preferred_batch_size\x18\x01 \x03(\x05\x12$\n\x1cmax_queue_delay_microseconds\x18\x02 \x01(\x04\x12\x19\n\x11preserve_ordering\x18\x03 \x01(\x08\x12\x17\n\x0fpriority_levels\x18\x04 \x01(\x04\x12\x1e\n\x16\x64\x65\x66\x61ult_priority_level\x18\x05 \x01(\x04\x12\x39\n\x14\x64\x65\x66\x61ult_queue_policy\x18\x06 \x01(\x0b\x32\x1b.inference.ModelQueuePolicy\x12W\n\x15priority_queue_policy\x18\x07 \x03(\x0b\x32\x38.inference.ModelDynamicBatching.PriorityQueuePolicyEntry\x1aW\n\x18PriorityQueuePolicyEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.inference.ModelQueuePolicy:\x02\x38\x01\"\xee\n\n\x15ModelSequenceBatching\x12\x41\n\x06\x64irect\x18\x03 \x01(\x0b\x32/.inference.ModelSequenceBatching.StrategyDirectH\x00\x12\x41\n\x06oldest\x18\x04 \x01(\x0b\x32/.inference.ModelSequenceBatching.StrategyOldestH\x00\x12&\n\x1emax_sequence_idle_microseconds\x18\x01 \x01(\x04\x12\x44\n\rcontrol_input\x18\x02 \x03(\x0b\x32-.inference.ModelSequenceBatching.ControlInput\x12\x35\n\x05state\x18\x05 \x03(\x0b\x32&.inference.ModelSequenceBatching.State\x12\x1a\n\x12iterative_sequence\x18\x06 \x01(\x08\x1a\xb1\x02\n\x07\x43ontrol\x12;\n\x04kind\x18\x01 \x01(\x0e\x32-.inference.ModelSequenceBatching.Control.Kind\x12\x18\n\x10int32_false_true\x18\x02 \x03(\x05\x12\x17\n\x0f\x66p32_false_true\x18\x03 \x03(\x02\x12\x17\n\x0f\x62ool_false_true\x18\x05 \x03(\x08\x12&\n\tdata_type\x18\x04 \x01(\x0e\x32\x13.inference.DataType\"u\n\x04Kind\x12\x1a\n\x16\x43ONTROL_SEQUENCE_START\x10\x00\x12\x1a\n\x16\x43ONTROL_SEQUENCE_READY\x10\x01\x12\x18\n\x14\x43ONTROL_SEQUENCE_END\x10\x02\x12\x1b\n\x17\x43ONTROL_SEQUENCE_CORRID\x10\x03\x1aW\n\x0c\x43ontrolInput\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x39\n\x07\x63ontrol\x18\x02 \x03(\x0b\x32(.inference.ModelSequenceBatching.Control\x1a\x8a\x01\n\x0cInitialState\x12&\n\tdata_type\x18\x01 \x01(\x0e\x32\x13.inference.DataType\x12\x0c\n\x04\x64ims\x18\x02 \x03(\x03\x12\x13\n\tzero_data\x18\x03 \x01(\x08H\x00\x12\x13\n\tdata_file\x18\x04 \x01(\tH\x00\x12\x0c\n\x04name\x18\x05 \x01(\tB\x0c\n\nstate_data\x1a\xf3\x01\n\x05State\x12\x12\n\ninput_name\x18\x01 \x01(\t\x12\x13\n\x0boutput_name\x18\x02 \x01(\t\x12&\n\tdata_type\x18\x03 \x01(\x0e\x32\x13.inference.DataType\x12\x0c\n\x04\x64ims\x18\x04 \x03(\x03\x12\x44\n\rinitial_state\x18\x05 \x03(\x0b\x32-.inference.ModelSequenceBatching.InitialState\x12(\n use_same_buffer_for_input_output\x18\x06 \x01(\x08\x12\x1b\n\x13use_growable_memory\x18\x07 \x01(\x08\x1aX\n\x0eStrategyDirect\x12$\n\x1cmax_queue_delay_microseconds\x18\x01 \x01(\x04\x12 \n\x18minimum_slot_utilization\x18\x02 \x01(\x02\x1a\x90\x01\n\x0eStrategyOldest\x12\x1f\n\x17max_candidate_sequences\x18\x01 \x01(\x05\x12\x1c\n\x14preferred_batch_size\x18\x02 \x03(\x05\x12$\n\x1cmax_queue_delay_microseconds\x18\x03 \x01(\x04\x12\x19\n\x11preserve_ordering\x18\x04 \x01(\x08\x42\x11\n\x0fstrategy_choice\"\xf6\x02\n\x0fModelEnsembling\x12-\n\x04step\x18\x01 \x03(\x0b\x32\x1f.inference.ModelEnsembling.Step\x1a\xb3\x02\n\x04Step\x12\x12\n\nmodel_name\x18\x01 \x01(\t\x12\x15\n\rmodel_version\x18\x02 \x01(\x03\x12@\n\tinput_map\x18\x03 \x03(\x0b\x32-.inference.ModelEnsembling.Step.InputMapEntry\x12\x42\n\noutput_map\x18\x04 \x03(\x0b\x32..inference.ModelEnsembling.Step.OutputMapEntry\x12\x17\n\x0fmodel_namespace\x18\x05 \x01(\t\x1a/\n\rInputMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x30\n\x0eOutputMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"&\n\x0eModelParameter\x12\x14\n\x0cstring_value\x18\x01 \x01(\t\"\xd9\x02\n\x0bModelWarmup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nbatch_size\x18\x02 \x01(\r\x12\x32\n\x06inputs\x18\x03 \x03(\x0b\x32\".inference.ModelWarmup.InputsEntry\x12\r\n\x05\x63ount\x18\x04 \x01(\r\x1a\x97\x01\n\x05Input\x12&\n\tdata_type\x18\x01 \x01(\x0e\x32\x13.inference.DataType\x12\x0c\n\x04\x64ims\x18\x02 \x03(\x03\x12\x13\n\tzero_data\x18\x03 \x01(\x08H\x00\x12\x15\n\x0brandom_data\x18\x04 \x01(\x08H\x00\x12\x19\n\x0finput_data_file\x18\x05 \x01(\tH\x00\x42\x11\n\x0finput_data_type\x1aK\n\x0bInputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.inference.ModelWarmup.Input:\x02\x38\x01\".\n\x0fModelOperations\x12\x1b\n\x13op_library_filename\x18\x01 \x03(\t\"+\n\x16ModelTransactionPolicy\x12\x11\n\tdecoupled\x18\x01 \x01(\x08\"\xe6\x01\n\x15ModelRepositoryAgents\x12\x36\n\x06\x61gents\x18\x01 \x03(\x0b\x32&.inference.ModelRepositoryAgents.Agent\x1a\x94\x01\n\x05\x41gent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12J\n\nparameters\x18\x02 \x03(\x0b\x32\x36.inference.ModelRepositoryAgents.Agent.ParametersEntry\x1a\x31\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"$\n\x12ModelResponseCache\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"\xc3\n\n\x0bModelConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08platform\x18\x02 \x01(\t\x12\x0f\n\x07\x62\x61\x63kend\x18\x11 \x01(\t\x12\x0f\n\x07runtime\x18\x19 \x01(\t\x12\x35\n\x0eversion_policy\x18\x03 \x01(\x0b\x32\x1d.inference.ModelVersionPolicy\x12\x16\n\x0emax_batch_size\x18\x04 \x01(\x05\x12$\n\x05input\x18\x05 \x03(\x0b\x32\x15.inference.ModelInput\x12&\n\x06output\x18\x06 \x03(\x0b\x32\x16.inference.ModelOutput\x12*\n\x0b\x62\x61tch_input\x18\x14 \x03(\x0b\x32\x15.inference.BatchInput\x12,\n\x0c\x62\x61tch_output\x18\x15 \x03(\x0b\x32\x16.inference.BatchOutput\x12\x38\n\x0coptimization\x18\x0c \x01(\x0b\x32\".inference.ModelOptimizationPolicy\x12;\n\x10\x64ynamic_batching\x18\x0b \x01(\x0b\x32\x1f.inference.ModelDynamicBatchingH\x00\x12=\n\x11sequence_batching\x18\r \x01(\x0b\x32 .inference.ModelSequenceBatchingH\x00\x12\x39\n\x13\x65nsemble_scheduling\x18\x0f \x01(\x0b\x32\x1a.inference.ModelEnsemblingH\x00\x12\x35\n\x0einstance_group\x18\x07 \x03(\x0b\x32\x1d.inference.ModelInstanceGroup\x12\x1e\n\x16\x64\x65\x66\x61ult_model_filename\x18\x08 \x01(\t\x12H\n\x12\x63\x63_model_filenames\x18\t \x03(\x0b\x32,.inference.ModelConfig.CcModelFilenamesEntry\x12;\n\x0bmetric_tags\x18\n \x03(\x0b\x32&.inference.ModelConfig.MetricTagsEntry\x12:\n\nparameters\x18\x0e \x03(\x0b\x32&.inference.ModelConfig.ParametersEntry\x12,\n\x0cmodel_warmup\x18\x10 \x03(\x0b\x32\x16.inference.ModelWarmup\x12\x34\n\x10model_operations\x18\x12 \x01(\x0b\x32\x1a.inference.ModelOperations\x12\x43\n\x18model_transaction_policy\x18\x13 \x01(\x0b\x32!.inference.ModelTransactionPolicy\x12\x41\n\x17model_repository_agents\x18\x17 \x01(\x0b\x32 .inference.ModelRepositoryAgents\x12\x35\n\x0eresponse_cache\x18\x18 \x01(\x0b\x32\x1d.inference.ModelResponseCache\x1a\x37\n\x15\x43\x63ModelFilenamesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x31\n\x0fMetricTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aL\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.inference.ModelParameter:\x02\x38\x01\x42\x13\n\x11scheduling_choice*\xfa\x01\n\x08\x44\x61taType\x12\x10\n\x0cTYPE_INVALID\x10\x00\x12\r\n\tTYPE_BOOL\x10\x01\x12\x0e\n\nTYPE_UINT8\x10\x02\x12\x0f\n\x0bTYPE_UINT16\x10\x03\x12\x0f\n\x0bTYPE_UINT32\x10\x04\x12\x0f\n\x0bTYPE_UINT64\x10\x05\x12\r\n\tTYPE_INT8\x10\x06\x12\x0e\n\nTYPE_INT16\x10\x07\x12\x0e\n\nTYPE_INT32\x10\x08\x12\x0e\n\nTYPE_INT64\x10\t\x12\r\n\tTYPE_FP16\x10\n\x12\r\n\tTYPE_FP32\x10\x0b\x12\r\n\tTYPE_FP64\x10\x0c\x12\x0f\n\x0bTYPE_STRING\x10\r\x12\r\n\tTYPE_BF16\x10\x0e\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'model_config_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND_INPUTENTRY']._loaded_options = None - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND_INPUTENTRY']._serialized_options = b'8\001' - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_INPUTENTRY']._loaded_options = None - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_INPUTENTRY']._serialized_options = b'8\001' - _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR_PARAMETERSENTRY']._loaded_options = None - _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR_PARAMETERSENTRY']._serialized_options = b'8\001' - _globals['_MODELDYNAMICBATCHING_PRIORITYQUEUEPOLICYENTRY']._loaded_options = None - _globals['_MODELDYNAMICBATCHING_PRIORITYQUEUEPOLICYENTRY']._serialized_options = b'8\001' - _globals['_MODELENSEMBLING_STEP_INPUTMAPENTRY']._loaded_options = None - _globals['_MODELENSEMBLING_STEP_INPUTMAPENTRY']._serialized_options = b'8\001' - _globals['_MODELENSEMBLING_STEP_OUTPUTMAPENTRY']._loaded_options = None - _globals['_MODELENSEMBLING_STEP_OUTPUTMAPENTRY']._serialized_options = b'8\001' - _globals['_MODELWARMUP_INPUTSENTRY']._loaded_options = None - _globals['_MODELWARMUP_INPUTSENTRY']._serialized_options = b'8\001' - _globals['_MODELREPOSITORYAGENTS_AGENT_PARAMETERSENTRY']._loaded_options = None - _globals['_MODELREPOSITORYAGENTS_AGENT_PARAMETERSENTRY']._serialized_options = b'8\001' - _globals['_MODELCONFIG_CCMODELFILENAMESENTRY']._loaded_options = None - _globals['_MODELCONFIG_CCMODELFILENAMESENTRY']._serialized_options = b'8\001' - _globals['_MODELCONFIG_METRICTAGSENTRY']._loaded_options = None - _globals['_MODELCONFIG_METRICTAGSENTRY']._serialized_options = b'8\001' - _globals['_MODELCONFIG_PARAMETERSENTRY']._loaded_options = None - _globals['_MODELCONFIG_PARAMETERSENTRY']._serialized_options = b'8\001' - _globals['_DATATYPE']._serialized_start=8371 - _globals['_DATATYPE']._serialized_end=8621 - _globals['_MODELRATELIMITER']._serialized_start=34 - _globals['_MODELRATELIMITER']._serialized_end=184 - _globals['_MODELRATELIMITER_RESOURCE']._serialized_start=129 - _globals['_MODELRATELIMITER_RESOURCE']._serialized_end=184 - _globals['_MODELINSTANCEGROUP']._serialized_start=187 - _globals['_MODELINSTANCEGROUP']._serialized_end=706 - _globals['_MODELINSTANCEGROUP_SECONDARYDEVICE']._serialized_start=483 - _globals['_MODELINSTANCEGROUP_SECONDARYDEVICE']._serialized_end=639 - _globals['_MODELINSTANCEGROUP_SECONDARYDEVICE_SECONDARYDEVICEKIND']._serialized_start=602 - _globals['_MODELINSTANCEGROUP_SECONDARYDEVICE_SECONDARYDEVICEKIND']._serialized_end=639 - _globals['_MODELINSTANCEGROUP_KIND']._serialized_start=641 - _globals['_MODELINSTANCEGROUP_KIND']._serialized_end=706 - _globals['_MODELTENSORRESHAPE']._serialized_start=708 - _globals['_MODELTENSORRESHAPE']._serialized_end=743 - _globals['_MODELINPUT']._serialized_start=746 - _globals['_MODELINPUT']._serialized_end=1085 - _globals['_MODELINPUT_FORMAT']._serialized_start=1026 - _globals['_MODELINPUT_FORMAT']._serialized_end=1085 - _globals['_MODELOUTPUT']._serialized_start=1088 - _globals['_MODELOUTPUT']._serialized_end=1299 - _globals['_BATCHINPUT']._serialized_start=1302 - _globals['_BATCHINPUT']._serialized_end=1647 - _globals['_BATCHINPUT_KIND']._serialized_start=1442 - _globals['_BATCHINPUT_KIND']._serialized_end=1647 - _globals['_BATCHOUTPUT']._serialized_start=1650 - _globals['_BATCHOUTPUT']._serialized_end=1793 - _globals['_BATCHOUTPUT_KIND']._serialized_start=1751 - _globals['_BATCHOUTPUT_KIND']._serialized_end=1793 - _globals['_MODELVERSIONPOLICY']._serialized_start=1796 - _globals['_MODELVERSIONPOLICY']._serialized_end=2068 - _globals['_MODELVERSIONPOLICY_LATEST']._serialized_start=1984 - _globals['_MODELVERSIONPOLICY_LATEST']._serialized_end=2014 - _globals['_MODELVERSIONPOLICY_ALL']._serialized_start=2016 - _globals['_MODELVERSIONPOLICY_ALL']._serialized_end=2021 - _globals['_MODELVERSIONPOLICY_SPECIFIC']._serialized_start=2023 - _globals['_MODELVERSIONPOLICY_SPECIFIC']._serialized_end=2051 - _globals['_MODELOPTIMIZATIONPOLICY']._serialized_start=2071 - _globals['_MODELOPTIMIZATIONPOLICY']._serialized_end=3860 - _globals['_MODELOPTIMIZATIONPOLICY_GRAPH']._serialized_start=2601 - _globals['_MODELOPTIMIZATIONPOLICY_GRAPH']._serialized_end=2623 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA']._serialized_start=2626 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA']._serialized_end=3324 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC']._serialized_start=2776 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC']._serialized_end=3324 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_SHAPE']._serialized_start=2975 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_SHAPE']._serialized_end=2995 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND']._serialized_start=2998 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND']._serialized_end=3221 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND_INPUTENTRY']._serialized_start=3120 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_LOWERBOUND_INPUTENTRY']._serialized_end=3221 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_INPUTENTRY']._serialized_start=3120 - _globals['_MODELOPTIMIZATIONPOLICY_CUDA_GRAPHSPEC_INPUTENTRY']._serialized_end=3221 - _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS']._serialized_start=3327 - _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS']._serialized_end=3747 - _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR']._serialized_start=3563 - _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR']._serialized_end=3747 - _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR_PARAMETERSENTRY']._serialized_start=3698 - _globals['_MODELOPTIMIZATIONPOLICY_EXECUTIONACCELERATORS_ACCELERATOR_PARAMETERSENTRY']._serialized_end=3747 - _globals['_MODELOPTIMIZATIONPOLICY_PINNEDMEMORYBUFFER']._serialized_start=3749 - _globals['_MODELOPTIMIZATIONPOLICY_PINNEDMEMORYBUFFER']._serialized_end=3785 - _globals['_MODELOPTIMIZATIONPOLICY_MODELPRIORITY']._serialized_start=3787 - _globals['_MODELOPTIMIZATIONPOLICY_MODELPRIORITY']._serialized_end=3860 - _globals['_MODELQUEUEPOLICY']._serialized_start=3863 - _globals['_MODELQUEUEPOLICY']._serialized_end=4082 - _globals['_MODELQUEUEPOLICY_TIMEOUTACTION']._serialized_start=4044 - _globals['_MODELQUEUEPOLICY_TIMEOUTACTION']._serialized_end=4082 - _globals['_MODELDYNAMICBATCHING']._serialized_start=4085 - _globals['_MODELDYNAMICBATCHING']._serialized_end=4496 - _globals['_MODELDYNAMICBATCHING_PRIORITYQUEUEPOLICYENTRY']._serialized_start=4409 - _globals['_MODELDYNAMICBATCHING_PRIORITYQUEUEPOLICYENTRY']._serialized_end=4496 - _globals['_MODELSEQUENCEBATCHING']._serialized_start=4499 - _globals['_MODELSEQUENCEBATCHING']._serialized_end=5889 - _globals['_MODELSEQUENCEBATCHING_CONTROL']._serialized_start=4852 - _globals['_MODELSEQUENCEBATCHING_CONTROL']._serialized_end=5157 - _globals['_MODELSEQUENCEBATCHING_CONTROL_KIND']._serialized_start=5040 - _globals['_MODELSEQUENCEBATCHING_CONTROL_KIND']._serialized_end=5157 - _globals['_MODELSEQUENCEBATCHING_CONTROLINPUT']._serialized_start=5159 - _globals['_MODELSEQUENCEBATCHING_CONTROLINPUT']._serialized_end=5246 - _globals['_MODELSEQUENCEBATCHING_INITIALSTATE']._serialized_start=5249 - _globals['_MODELSEQUENCEBATCHING_INITIALSTATE']._serialized_end=5387 - _globals['_MODELSEQUENCEBATCHING_STATE']._serialized_start=5390 - _globals['_MODELSEQUENCEBATCHING_STATE']._serialized_end=5633 - _globals['_MODELSEQUENCEBATCHING_STRATEGYDIRECT']._serialized_start=5635 - _globals['_MODELSEQUENCEBATCHING_STRATEGYDIRECT']._serialized_end=5723 - _globals['_MODELSEQUENCEBATCHING_STRATEGYOLDEST']._serialized_start=5726 - _globals['_MODELSEQUENCEBATCHING_STRATEGYOLDEST']._serialized_end=5870 - _globals['_MODELENSEMBLING']._serialized_start=5892 - _globals['_MODELENSEMBLING']._serialized_end=6266 - _globals['_MODELENSEMBLING_STEP']._serialized_start=5959 - _globals['_MODELENSEMBLING_STEP']._serialized_end=6266 - _globals['_MODELENSEMBLING_STEP_INPUTMAPENTRY']._serialized_start=6169 - _globals['_MODELENSEMBLING_STEP_INPUTMAPENTRY']._serialized_end=6216 - _globals['_MODELENSEMBLING_STEP_OUTPUTMAPENTRY']._serialized_start=6218 - _globals['_MODELENSEMBLING_STEP_OUTPUTMAPENTRY']._serialized_end=6266 - _globals['_MODELPARAMETER']._serialized_start=6268 - _globals['_MODELPARAMETER']._serialized_end=6306 - _globals['_MODELWARMUP']._serialized_start=6309 - _globals['_MODELWARMUP']._serialized_end=6654 - _globals['_MODELWARMUP_INPUT']._serialized_start=6426 - _globals['_MODELWARMUP_INPUT']._serialized_end=6577 - _globals['_MODELWARMUP_INPUTSENTRY']._serialized_start=6579 - _globals['_MODELWARMUP_INPUTSENTRY']._serialized_end=6654 - _globals['_MODELOPERATIONS']._serialized_start=6656 - _globals['_MODELOPERATIONS']._serialized_end=6702 - _globals['_MODELTRANSACTIONPOLICY']._serialized_start=6704 - _globals['_MODELTRANSACTIONPOLICY']._serialized_end=6747 - _globals['_MODELREPOSITORYAGENTS']._serialized_start=6750 - _globals['_MODELREPOSITORYAGENTS']._serialized_end=6980 - _globals['_MODELREPOSITORYAGENTS_AGENT']._serialized_start=6832 - _globals['_MODELREPOSITORYAGENTS_AGENT']._serialized_end=6980 - _globals['_MODELREPOSITORYAGENTS_AGENT_PARAMETERSENTRY']._serialized_start=3698 - _globals['_MODELREPOSITORYAGENTS_AGENT_PARAMETERSENTRY']._serialized_end=3747 - _globals['_MODELRESPONSECACHE']._serialized_start=6982 - _globals['_MODELRESPONSECACHE']._serialized_end=7018 - _globals['_MODELCONFIG']._serialized_start=7021 - _globals['_MODELCONFIG']._serialized_end=8368 - _globals['_MODELCONFIG_CCMODELFILENAMESENTRY']._serialized_start=8163 - _globals['_MODELCONFIG_CCMODELFILENAMESENTRY']._serialized_end=8218 - _globals['_MODELCONFIG_METRICTAGSENTRY']._serialized_start=8220 - _globals['_MODELCONFIG_METRICTAGSENTRY']._serialized_end=8269 - _globals['_MODELCONFIG_PARAMETERSENTRY']._serialized_start=8271 - _globals['_MODELCONFIG_PARAMETERSENTRY']._serialized_end=8347 -# @@protoc_insertion_point(module_scope) diff --git a/tools/inference_builder/builder/triton/utils.py b/tools/inference_builder/builder/triton/utils.py deleted file mode 100644 index 27aa8e1b..00000000 --- a/tools/inference_builder/builder/triton/utils.py +++ /dev/null @@ -1,80 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from .model_config_pb2 import DataType, ModelConfig, ModelParameter, ModelTensorReshape -from google.protobuf import text_format -from typing import Dict - -datatype_mapping = { - "TYPE_INVALID": DataType.TYPE_INVALID, - "TYPE_BOOL": DataType.TYPE_BOOL, - "TYPE_UINT8": DataType.TYPE_UINT8, - "TYPE_UINT16": DataType.TYPE_UINT16, - "TYPE_UINT32": DataType.TYPE_UINT32, - "TYPE_UINT64": DataType.TYPE_UINT64, - "TYPE_INT8": DataType.TYPE_INT8, - "TYPE_INT16": DataType.TYPE_INT16, - "TYPE_INT32": DataType.TYPE_INT32, - "TYPE_INT64": DataType.TYPE_INT64, - "TYPE_FP16": DataType.TYPE_FP16, - "TYPE_FP32": DataType.TYPE_FP32, - "TYPE_FP64": DataType.TYPE_FP64, - "TYPE_STRING": DataType.TYPE_STRING, - "TYPE_BF16": DataType.TYPE_BF16 -} - -def generate_pbtxt(model_config: Dict, backend:str): - triton_model_config = ModelConfig() - for key, value in model_config.items(): - if hasattr(triton_model_config, key): - # only pick the standard triton model configuration items to the pbtxt - if key == "input" or key == "output": - for i in value: - entry = triton_model_config.input.add() if key == "input" else triton_model_config.output.add() - for k, v in i.items(): - if hasattr(entry, k): - if k == "data_type": - setattr(entry, k, datatype_mapping[v]) - elif k == "dims": - for dim in v: - entry.dims.append(dim) - elif k == "reshape": - if len(v['shape']) == 0: - # WAR: force generating reshape - entry.reshape.shape.append(-1) - else: - for s in v['shape']: - entry.reshape.shape.append(s) - else: - setattr(entry, k, v) - elif key == "parameters": - for k, p in value.items(): - triton_model_config.parameters[k].string_value = p - elif key == "instance_group": - for i in value: - entry = triton_model_config.instance_group.add() - for k, v in i.items(): - if k == "gpus": - entry.gpus.extend(v) - else: - setattr(entry, k, v) - elif key == "model_transaction_policy": - for k, v in value.items(): - setattr(triton_model_config.model_transaction_policy, k, v) - else: - setattr(triton_model_config, key, value) - # set the triton backend - setattr(triton_model_config, "backend", backend) - return text_format.MessageToString(triton_model_config, use_short_repeated_primitives=True).replace('shape: [-1]', 'shape: [ ]') \ No newline at end of file diff --git a/tools/inference_builder/builder/utils.py b/tools/inference_builder/builder/utils.py deleted file mode 100644 index f0fd292a..00000000 --- a/tools/inference_builder/builder/utils.py +++ /dev/null @@ -1,172 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from pathlib import Path -import os -import shutil -from typing import Callable -import tarfile -import mimetypes -import base64 - -class PayloadBuilder: - """ - Builder class for constructing the payload with required and optional fields - - Example: - >>> builder = PayloadBuilder(files=["image1.jpg"], model="nvdino-v2") - >>> payload = builder.add_text(["cat,dog"]).build() - { - "input": ["data:image/jpeg;base64,/9j/4AAQSkZJRg..."], - "model": "nvidia/nvdino-v2", - "text": [["cat", "dog"]] - } - """ - @staticmethod - def prepare_image_inputs(files): - """ - Prepare base64 encoded image inputs for the payload - Args: - files: List of file paths, e.g. ["path/to/image1.jpg", "path/to/image2.png"] - Returns: - list: List of encoded image strings in format "data:mime_type;base64,..." - - Example: - >>> prepare_image_inputs(["image1.jpg", "image2.png"]) - [ - "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRX...", - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7..." - ] - """ - encoded_inputs = [] - for file in files: - mime_type = mimetypes.guess_type(file)[0] - with open(file, "rb") as f: - b64_image = base64.b64encode(f.read()).decode() - encoded_inputs.append(f"data:{mime_type};base64,{b64_image}") - return encoded_inputs - - @staticmethod - def prepare_text_input(text): - """ - Prepare text input for the payload - Args: - text: List of comma-separated text strings, e.g. ["cat,dog", "person,car"] - Returns: - list: List of text arrays split by comma, or None if text is None - - Example: - >>> prepare_text_input(["cat,dog", "person,car"]) - [["cat", "dog"], ["person", "car"]] - - >>> prepare_text_input(None) - None - """ - return [t.split(",") for t in text] if text else None - - @staticmethod - def prepare_text_input_from_file(txt_file_path): - """ - Prepare text input from a .txt file - Args: - txt_file_path: Path to .txt file containing comma-separated text - Returns: - list: List of text arrays split by comma, or None if file not found/empty - - Example: - >>> prepare_text_input_from_file("labels.txt") - # For a file containing "cat,car,truck" - [["cat", "car", "truck"]] - - >>> prepare_text_input_from_file("nonexistent.txt") - None - """ - try: - with open(txt_file_path, 'r') as f: - content = f.read().strip() - return PayloadBuilder.prepare_text_input([content]) if content else None - except FileNotFoundError: - print(f"Warning: Text file not found: {txt_file_path}") - return None - except Exception as e: - print(f"Warning: Error reading text file: {e}") - return None - - @staticmethod - def prepare_model_name(model): - """ - Prepare model name for the payload - Args: - model: Base model name, e.g. "nvdino-v2" - Returns: - str: Full model name with nvidia prefix - - Example: - >>> prepare_model_name("nvdino-v2") - "nvidia/nvdino-v2" - """ - return f"nvidia/{model}" - - def __init__(self, files, model): - """Initialize with required fields""" - self.payload = { - "input": self.prepare_image_inputs(files), - "model": self.prepare_model_name(model) - } - - def add_text(self, text): - """Add optional text field if provided""" - if text: - text_input = self.prepare_text_input(text) - if text_input: - self.payload["text"] = text_input - return self - - def add_more_field(self, key, value): - """Add more field to the payload""" - if key is not None and value is not None: - self.payload[key] = value - return self - - def build(self): - """Return the constructed payload""" - return self.payload - -def get_resource_path(relative_path): - """ Get absolute path to resource, works for dev and for PyInstaller """ - base_path = Path(__file__).absolute().parent.parent - return str(Path(base_path, relative_path)) - -def copy_files(source_dir, destination_dir, filter: Callable[[str], bool]=None): - # Ensure destination directory exists - if not os.path.exists(destination_dir): - os.makedirs(destination_dir) - - # List all files in the source directory - files = os.listdir(source_dir) - - for file in files: - if filter and not filter(file): - continue - # Full path to the source file - full_file_name = os.path.join(source_dir, file) - - # Check if it's a file (not a directory) - if os.path.isfile(full_file_name): - shutil.copy(full_file_name, destination_dir) - -def create_tar_gz(output_filename, source_dir): - with tarfile.open(output_filename, "w:gz") as tar: - tar.add(source_dir, arcname=".") \ No newline at end of file diff --git a/tools/inference_builder/builder/validate.py b/tools/inference_builder/builder/validate.py deleted file mode 100644 index d05819b7..00000000 --- a/tools/inference_builder/builder/validate.py +++ /dev/null @@ -1,1012 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import json -import math -import os -import sys -import subprocess -import base64 -import importlib -from pathlib import Path -from typing import List, Dict, Union, Any -from jinja2 import Environment, FileSystemLoader -from utils import get_resource_path -import shutil -import yaml -from utils import PayloadBuilder - -# Common paths - single source of truth -OUT_DIR = ".tmp" -GENERATED_CLIENT_DIR = "generated_client" -TEST_CASES_FILE = "test_cases.yaml" - -# Setup paths and generate OpenAPI client -def check_client_exists() -> bool: - """Check if OpenAPI client exists and is importable. - - Returns: - bool: True if client exists and can be imported, False otherwise - """ - # Check if the module can be imported - try: - importlib.import_module('openapi_client') - print("Able to import OpenAPI client") - return True - except ImportError: - print("Not able to import OpenAPI client") - return False - -def setup_environment(generated_client_path: Path) -> bool: - """Setup environment for client import.""" - try: - # First check if client directory exists - if not generated_client_path.exists(): - print(f"Generated client directory not found at: {generated_client_path}") - return False - - # Add to PYTHONPATH if needed - if str(generated_client_path) not in sys.path: - sys.path.insert(0, str(generated_client_path)) # Insert at beginning of path - print(f"✓ Added to PYTHONPATH: {generated_client_path}") - - # Try importing to verify setup - importlib.import_module('openapi_client') - print("✓ Successfully imported OpenAPI client") - return True - - except ImportError as e: - print(f"Failed to import OpenAPI client: {e}") - print(f"Directory contents: {os.listdir(generated_client_path)}") - return False - except Exception as e: - print(f"Unexpected error setting up environment: {e}") - return False - - -def check_client_valid(client_dir: Path) -> bool: - """Check if existing OpenAPI client is valid. - - Args: - client_dir: Path to generated client directory - - Returns: - bool: True if client exists and is valid, False otherwise - """ - try: - # Check if directory exists and has key files - if not client_dir.exists(): - return False - - required_files = [ - "setup.py", - "openapi_client/__init__.py", - "openapi_client/api/nvidiametropolisinferenceapi_api.py", - "openapi_client/models/inference_request.py", - "openapi_client/models/inference_response.py" - ] - - for file in required_files: - if not (client_dir / file).exists(): - print(f"Missing required file: {file}") - return False - - # Try importing to validate - sys_path_modified = False - if str(client_dir) not in sys.path: - sys.path.insert(0, str(client_dir)) - sys_path_modified = True - - try: - import openapi_client - from openapi_client.models.inference_request import InferenceRequest - from openapi_client.models.inference_response import InferenceResponse - print(f"✓ Found valid existing client at: {client_dir}") - return True - except ImportError as e: - print(f"Client validation failed: {e}") - return False - finally: - if sys_path_modified: - sys.path.remove(str(client_dir)) - - except Exception as e: - print(f"Error checking client: {e}") - return False - -def generate_openapi_client(openapi_spec_path: Path, output_dir: Path, use_docker: bool = True) -> bool: - """Generate OpenAPI client using Docker or local OpenAPI Generator. - - Args: - openapi_spec_path: Path to OpenAPI specification file - output_dir: Target output directory for generated client - use_docker: Whether to use Docker for generation (default: True) - """ - try: - # Check if valid client already exists - if check_client_valid(output_dir): - print("Using existing OpenAPI client") - return True - - print("Generating new OpenAPI client...") - # Get absolute paths - abs_spec_path = openapi_spec_path.resolve() - abs_output_dir = output_dir.resolve() - - tmp_client = "tmp_generated_client" - tmp_client_path = abs_spec_path.parent / tmp_client - - if use_docker: - # Construct docker command - # docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \ - # -i /local/openapi.yaml \ - # -g python \ - # -o /local/generated_client - generator_cmd = [ - "docker", "run", "--rm", - "-v", f"{abs_spec_path.parent}:/local", - "--user", f"{os.getuid()}:{os.getgid()}", # Use current user's UID/GID - "openapitools/openapi-generator-cli", "generate", - "-i", f"/local/{abs_spec_path.name}", - "-g", "python", - "-o", f"/local/{tmp_client}" - ] - print(f"Generating OpenAPI client using Docker...") - else: - # Use local OpenAPI Generator - generator_cmd = [ - "openapi-generator-cli", "generate", - "-i", str(abs_spec_path), - "-g", "python", - "-o", str(tmp_client_path) - ] - print(f"Generating OpenAPI client using local OpenAPI Generator...") - print(f"Using OpenAPI spec: {abs_spec_path}") - print(f"Temporary directory: {tmp_client_path}") - print(f"Final output directory: {output_dir.resolve()}") - - result = subprocess.run(generator_cmd, - check=True, - capture_output=True, - text=True) - - if result.stdout: - print(result.stdout) - - # Move generated files to target directory - output_dir.mkdir(parents=True, exist_ok=True) - try: - # Use shutil.copytree to copy the contents - shutil.copytree(tmp_client_path, output_dir, dirs_exist_ok=True) - # Clean up temp directory - shutil.rmtree(tmp_client_path) - return True - except Exception as e: - print(f"Failed to move generated client: {e}") - return False - - return True - - except subprocess.CalledProcessError as e: - print(f"✗ Docker command failed: {e}") - if e.stdout: - print("stdout:", e.stdout) - if e.stderr: - print("stderr:", e.stderr) - return False - except Exception as e: - print(f"✗ Failed to generate client: {e}") - return False - finally: - # Ensure temp directory is cleaned up - if 'temp_client_dir' in locals() and tmp_client_path.exists(): - shutil.rmtree(tmp_client_path) - - - - -def prepare_image_input(image_path: Path) -> str: - """Prepare image for inference by converting to base64 format. - - Examples: - image_input = tester.prepare_image_input("path/to/image.jpg") - # image_input = "data:image/jpg;base64,/9j/4AAQSkZJRg..." - - Args: - image_path: Path to image file (jpg, jpeg, or png) - - Returns: - str: Base64 encoded image with data URI scheme - - Raises: - ValueError: If file doesn't exist or has unsupported format - IOError: If file can't be read - """ - if not os.path.exists(image_path): - raise ValueError(f"Image file not found: {image_path}") - - ext = os.path.splitext(image_path)[1][1:].lower() - if ext not in ['jpg', 'jpeg', 'png']: - raise ValueError(f"Unsupported image format: {ext}. Use jpg, jpeg or png") - - with open(image_path, "rb") as f: - image_data = f.read() - b64_image = base64.b64encode(image_data).decode() - return f"data:image/{ext};base64,{b64_image}" - - -def get_test_cases(validation_dir: Path) -> List[Dict[str, str]]: - """Discover test cases by scanning validation directory for images. - - Args: - validation_dir: Path to validation directory - - Returns: - List of test cases with image and expected response paths - """ - test_cases = [] - supported_formats = {'.jpg', '.jpeg', '.png'} - - # Find all image files - for idx, file_path in enumerate(validation_dir.iterdir()): - if file_path.suffix.lower() in supported_formats: - image_name = file_path.stem - expected_path = validation_dir / f"expected.{image_name}.json" - text_path = validation_dir / f"{image_name}.txt" - - if expected_path.exists(): - test_cases.append({ - "name": image_name + f"_{idx}", - "input": file_path.name, - "text": text_path.name if text_path.exists() else None, - "expected": expected_path.name, - }) - else: - print(f"Warning: Found image {file_path.name} but missing expected response: {expected_path.name}") - - print(f"Discovered {len(test_cases)} test cases:") - for test in test_cases: - print(f" • {test['name']}: {test['input']} → {test['expected']}") - - return test_cases - -def generate_default_test_cases(validation_dir: Path) -> List[Dict[str, str]]: - """Generate default test cases when no test cases are found in validation directory. - - Creates a test case with: - - A predefined base64 encoded image data (saved as a temporary PNG file) - - A predefined text "describe the picture" - - An empty expected result - - Args: - validation_dir: Path to validation directory - - Returns: - List of default test cases with predefined image and text - """ - # Predefined base64 encoded PNG image (1x1 transparent pixel) - # This is the same as used in lib/codec.py - predefined_image_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAEElEQVR4nGK6HcwNCAAA//8DTgE8HuxwEQAAAABJRU5ErkJggg==" - - # Create the image file with predefined base64 data - image_path = validation_dir / "default_test.png" - if not image_path.exists(): - try: - # Decode the base64 data and write to file - image_data = base64.b64decode(predefined_image_data) - with open(image_path, "wb") as f: - f.write(image_data) - print(f"✓ Created default image file: {image_path}") - except Exception as e: - print(f"Warning: Failed to create default image file: {e}") - return [] - - # Create the expected result file (empty result) - expected_path = validation_dir / "expected.default_test.json" - if not expected_path.exists(): - with open(expected_path, "w") as f: - json.dump({}, f, indent=2) - print(f"✓ Created default expected result file: {expected_path}") - - # Create the text file - text_path = validation_dir / "default_test.txt" - if not text_path.exists(): - with open(text_path, "w") as f: - f.write("describe the picture") - print(f"✓ Created default text file: {text_path}") - - # Create the test case structure - test_cases = [{ - "name": "default_test_0", - "input": "default_test.png", - "text": "default_test.txt", - "expected": "expected.default_test.json" - }] - - print(f"Generated {len(test_cases)} default test cases:") - for test in test_cases: - print(f" • {test['name']}: {test['input']} → {test['expected']}") - - return test_cases - - -def get_request_template(client_dir: Path) -> Dict: - """Generate request template from OpenAPI client models. - - Args: - client_dir: Path to generated OpenAPI client directory - - Returns: - Dict containing request template - """ - try: - # Temporarily add client to path - if str(client_dir) not in sys.path: - sys.path.insert(0, str(client_dir)) - - # Import the request model - try: - from openapi_client.models.input_inner import InputInner - - # Create request using the model class - input_data = [InputInner("")] # Create Input instance first - except ImportError: - from openapi_client.models.inference_request_input_inner import InferenceRequestInputInner - input_data = [InferenceRequestInputInner("")] - from openapi_client.models.inference_request import InferenceRequest - request = InferenceRequest( - model='nvidia/nvdino-v2', # First allowed value from model_validate_enum - input=input_data - ) - - # Convert to dict for JSON serialization - template = request.to_dict() - print("Generated request template from OpenAPI client models") - return template - - except ImportError as e: - print(f"Failed to import OpenAPI client models: {e}") - raise - except Exception as e: - print(f"Failed to generate request template: {e}") - raise - finally: - # Clean up sys.path - if str(client_dir) in sys.path: - sys.path.remove(str(client_dir)) - - -def build_requests(validation_dir: Path, out_dir: Path, client_dir: Path, test_cases_abs_path: bool = False) -> bool: - """Build request payloads from template and config. - - Args: - validation_dir: Directory containing validation data - out_dir: Directory to write generated files - client_dir: Directory containing OpenAPI client - test_cases_abs_path: Whether to use absolute paths in test_cases.yaml (default: False) - """ - try: - print("\nBuilding request payloads...") - # Get request template from OpenAPI client models - template = get_request_template(client_dir) - - # Get test cases from directory scan - test_cases = get_test_cases(validation_dir) - if not test_cases: - test_cases = generate_default_test_cases(validation_dir) - - # Store request-response mapping - request_response_map = [] - - # Generate request for each test case - for test in test_cases: - request = template.copy() - image_path = validation_dir / test["input"] - request["input"] = PayloadBuilder.prepare_image_inputs([image_path]) - if test["text"]: - request["text"] = PayloadBuilder.prepare_text_input_from_file(validation_dir / test["text"]) - - # write request file - request_path = out_dir / f"request.{test['name']}.json" - with open(request_path, "w") as f: - json.dump(request, f, indent=2) - print(f"✓ Generated request for test '{test['name']}': {request_path}") - - expected_path = validation_dir / test["expected"] - - # Add to mapping with either absolute or relative paths - if test_cases_abs_path: - request_path_str = str(request_path.resolve()) - expected_path_str = str(expected_path.resolve()) - else: - # Make paths relative to validation directory - request_path_str = os.path.relpath(request_path, out_dir) - expected_path_str = os.path.relpath(expected_path, out_dir) - - # Add to mapping - request_response_map.append({ - "name": test["name"], - "request": request_path_str, - "expected": expected_path_str - }) - - # Write request-response mapping - test_cases_file_path = out_dir / TEST_CASES_FILE - with open(test_cases_file_path, "w") as f: - yaml.safe_dump(request_response_map, f, default_flow_style=False) - print(f"✓ Generated test cases file: {test_cases_file_path}") - print("✓ Successfully built all request payloads") - return True - except Exception as e: - print(f"✗ Failed to build requests: {e}") - return False - -def build_test_runner(out_dir: Path) -> bool: - """Generate test runner from template.""" - try: - print("\nBuilding test runner...") - - tpl_dir = get_resource_path("templates") - print(f"Using template directory: {tpl_dir}") - - jinja_env = Environment(loader=FileSystemLoader(tpl_dir)) - test_tpl = jinja_env.get_template("client/test_runner.jinja.py") - output_path = out_dir / "test_runner.py" - with open(output_path, 'w') as f: - validator_dir = Path(__file__).parent.resolve() - f.write(test_tpl.render(validator_dir=validator_dir)) - print(f"✓ Generated test runner: {output_path}") - return True - except Exception as e: - print(f"✗ Failed to build test runner: {e}") - return False - -def copy_test_runner_dep_tree(out_dir: Path) -> bool: - """Copy test runner dependency tree.""" - try: - print("\nCopying test runner dependency tree...") - # Copy all local dependencies - builder_dir = Path(__file__).parent - files_to_copy = { - builder_dir / "validate.py": out_dir / "validate.py", - builder_dir / "utils.py": out_dir / "utils.py", - # Add any other dependencies here - } - - for src, dest in files_to_copy.items(): - shutil.copy2(src, dest) - print(f"✓ Copied {src.name} to: {dest}") - return True - except Exception as e: - print(f"✗ Failed to copy test runner dependency tree: {e}") - return False - -def build_validation(openapi_spec_path: Path, validation_dir: Path, use_docker: bool = True, test_cases_abs_path: bool = False) -> bool: - """Generate validation components.""" - try: - print("\n=== Building Validator ===") - - # Create temp directory - out_dir = validation_dir / OUT_DIR - out_dir.mkdir(parents=True, exist_ok=True) - print(f"Created temporary directory: {out_dir}") - - # 1. Generate OpenAPI client - print("\n1. Generating OpenAPI client...") - client_dir = out_dir / GENERATED_CLIENT_DIR - if not generate_openapi_client(openapi_spec_path, client_dir, use_docker): - raise Exception("Failed to generate OpenAPI client") - - # 2. Build request payloads - print("\n2. Building request payloads...") - if not build_requests(validation_dir, out_dir, client_dir, test_cases_abs_path): - raise Exception("Failed to build requests") - - # 3. Generate test runner - print("\n3. Generating test runner...") - if not build_test_runner(out_dir): - raise Exception("Failed to build test runner") - - # 4. Copy test runner deps like validate.py to out_dir (.tmp) - print("\n4. Copying validate.py to out_dir...") - if not copy_test_runner_dep_tree(out_dir): - raise Exception("Failed to copy test runner dependency tree") - - print("\n✓ Successfully built all validation components") - return True - except Exception as e: - print(f"\n✗ Failed to build validation: {e}") - return False - - -class CvValidator: - """Class for validating CV inference results""" - - @staticmethod - def is_float_equal(a: float, b: float, tolerance: float = 1e-5) -> bool: - """Compare floats with relative and absolute tolerance, similar to numpy.isclose - - Uses both relative and absolute tolerance for robust comparison: - - Relative tolerance scales with the magnitude of the values - - Absolute tolerance handles cases where values are close to zero - - With large tolerance values, most comparisons will pass - - Formula: abs(a - b) <= (atol + rtol * max(abs(a), abs(b))) - - Args: - a: First float value - b: Second float value - tolerance: Relative tolerance parameter (default: 1e-5). - Also used as absolute tolerance scaled down by 1000x - - Returns: - bool: True if values are close within tolerance - - Examples: - # Basic usage - is_float_equal(1.0, 1.00001, 1e-4) # True - - # Scales with magnitude (relative tolerance) - is_float_equal(1000.0, 1000.01, 1e-4) # True - is_float_equal(0.001, 0.00100001, 1e-4) # True - - # Handles near-zero values (absolute tolerance) - is_float_equal(1e-10, 2e-10, 1e-5) # True - - # Large tolerance passes most cases - is_float_equal(1.0, 2.0, 1.0) # True - """ - # Use tolerance as relative tolerance (rtol) - rtol = tolerance - # Use much smaller absolute tolerance to handle near-zero values - atol = tolerance * 1e-3 - - return abs(a - b) <= (atol + rtol * max(abs(a), abs(b))) - - @staticmethod - def compute_iou(box1: List, box2: List) -> float: - """Compute Intersection over Union between two bounding boxes. - - Args: - box1: First bounding box as [x1, y1, x2, y2] - box2: Second bounding box as [x1, y1, x2, y2] - - Returns: - float: IoU value in [0.0, 1.0] - """ - x1 = max(box1[0], box2[0]) - y1 = max(box1[1], box2[1]) - x2 = min(box1[2], box2[2]) - y2 = min(box1[3], box2[3]) - - intersection = max(0, x2 - x1) * max(0, y2 - y1) - - area1 = (box1[2] - box1[0]) * (box1[3] - box1[1]) - area2 = (box2[2] - box2[0]) * (box2[3] - box2[1]) - union = area1 + area2 - intersection - - if union == 0: - return 0.0 - return intersection / union - - @staticmethod - def tolerance_to_iou_params(tolerance: float) -> tuple: - """Project numeric tolerance to IoU matching parameters. - - Uses two mathematical projections: - - 1. iou_threshold = 1 / (1 + sqrt(tolerance)) - Inverse-sqrt decay — maps tolerance to the (0, 1] range. - The square root softens the curve so that moderate tolerances - still produce workable IoU thresholds for small objects, where - even 1-pixel shifts cause large IoU drops. - At tolerance=1.0 this yields 0.5, the standard PASCAL VOC threshold. - - 2. max_unmatched = floor(log2(1 + tolerance)) - Logarithmic growth — allows more unmatched detections as tolerance - increases, but grows slowly to prevent over-permissiveness. - - Reference table: - tolerance iou_threshold max_unmatched - 0 1.000 0 - 1e-5 ≈1.000 0 - 0.01 ≈0.909 0 - 0.1 ≈0.760 0 - 0.5 ≈0.586 0 - 1.0 0.500 1 - 3.0 ≈0.366 2 - 7.0 ≈0.274 3 - - Args: - tolerance: The numeric float-comparison tolerance - - Returns: - Tuple of (iou_threshold, max_unmatched) - """ - iou_threshold = 1.0 / (1.0 + math.sqrt(tolerance)) - max_unmatched = int(math.floor(math.log2(1.0 + tolerance))) if tolerance > 0 else 0 - return iou_threshold, max_unmatched - - @classmethod - def compare_lists(cls, list1: List[Any], list2: List[Any], tolerance: float) -> bool: - """Compare two lists with tolerance for float values. - For nested lists (list of lists): - - Outer list order doesn't matter (will be sorted) - - Inner list order DOES matter (will not be sorted) - For regular lists (non-nested): - - Order doesn't matter (will be sorted) - - Examples: - # These are equal (outer order doesn't matter): - list1 = [[1, 2], [3, 4]] - list2 = [[3, 4], [1, 2]] # True - - # These are NOT equal (inner order matters): - list1 = [[1, 2], [3, 4]] - list2 = [[2, 1], [3, 4]] # False - - # These are equal (floats within tolerance): - list1 = [[1.001, 2.002], [3.003, 4.004]] - list2 = [[3.004, 4.003], [1.002, 2.001]] # True - - # Regular lists (order doesn't matter): - list1 = [1.0, 2.0, 3.0] - list2 = [3.0, 1.0, 2.0] # True - - # Regular lists with tolerance: - list1 = [1.001, 2.002] - list2 = [2.001, 1.000] # True (within tolerance) - - Args: - list1: First list to compare - list2: Second list to compare - tolerance: Float tolerance for comparing float values - - Returns: - bool: True if lists are equal within tolerance, False otherwise - """ - if len(list1) != len(list2): - return False - - # If lists contain more lists/tuples, keep inner items as tuples but don't sort them - if all(isinstance(x, (list, tuple)) for x in list1 + list2): - tuples1 = [tuple(x) for x in list1] - tuples2 = [tuple(x) for x in list2] - # Sort the outer list only - sorted1 = sorted(tuples1) - sorted2 = sorted(tuples2) - - # Use tolerance-aware matching instead of simple pairing - # This handles cases where sorting order might differ slightly - # due to float precision - used = [False] * len(sorted2) - for item1 in sorted1: - matched = False - for i, item2 in enumerate(sorted2): - if used[i]: - continue - # Check if all elements match within tolerance - if len(item1) == len(item2): - all_match = all( - cls.is_float_equal(a, b, tolerance) - if isinstance(a, (float, int)) and - isinstance(b, (float, int)) - else a == b - for a, b in zip(item1, item2) - ) - if all_match: - used[i] = True - matched = True - break - if not matched: - return False - return True - - # For lists of floats, compare with tolerance - if all(isinstance(x, (float, int)) for x in list1 + list2): - sorted1 = sorted(list1) - sorted2 = sorted(list2) - return all( - cls.is_float_equal(float(a), float(b), tolerance) - for a, b in zip(sorted1, sorted2) - ) - - # For other types, use regular comparison - return sorted(list1) == sorted(list2) - - @classmethod - def match_detections(cls, actual_bboxes: List[List], expected_bboxes: List[List], - iou_threshold: float = 0.5, - actual_labels: List = None, - expected_labels: List = None) -> tuple: - """Match actual detections to expected detections using greedy IoU matching. - - Pairs detections by highest IoU first. A pair is only accepted if - IoU >= iou_threshold. When labels are provided, pairs must also - have matching labels — this prevents cross-matching at locations - where multiple classes are detected on the same bbox. - - Args: - actual_bboxes: List of actual bounding boxes [x1, y1, x2, y2] - expected_bboxes: List of expected bounding boxes [x1, y1, x2, y2] - iou_threshold: Minimum IoU to consider a valid match - actual_labels: Optional per-detection labels for actual results - expected_labels: Optional per-detection labels for expected results - - Returns: - Tuple of (matches, unmatched_actual, unmatched_expected) where - matches is a list of (actual_idx, expected_idx, iou) tuples - """ - use_labels = actual_labels is not None and expected_labels is not None - - candidates = [] - for i, a_box in enumerate(actual_bboxes): - for j, e_box in enumerate(expected_bboxes): - if use_labels and actual_labels[i] != expected_labels[j]: - continue - iou = cls.compute_iou(a_box, e_box) - if iou >= iou_threshold: - candidates.append((iou, i, j)) - - candidates.sort(reverse=True) - - matched_actual = set() - matched_expected = set() - matches = [] - - for iou, i, j in candidates: - if i not in matched_actual and j not in matched_expected: - matches.append((i, j, iou)) - matched_actual.add(i) - matched_expected.add(j) - - unmatched_actual = set(range(len(actual_bboxes))) - matched_actual - unmatched_expected = set(range(len(expected_bboxes))) - matched_expected - - return matches, unmatched_actual, unmatched_expected - - @classmethod - def _compare_detections_iou(cls, actual: Dict, expected: Dict, tolerance: float, - iou_threshold: float, max_unmatched: int) -> bool: - """Compare detection results using IoU-based matching. - - Matches detections holistically — each detection's bbox, label, and - probability are validated together as a unit. - - Args: - actual: Actual inference result dict (must contain 'bboxes') - expected: Expected inference result dict (must contain 'bboxes') - tolerance: Float tolerance for probability comparison - iou_threshold: Minimum IoU for a bbox match - max_unmatched: Max total unmatched detections allowed (actual + expected) - - Returns: - bool: True if detection results match within constraints - """ - per_detection_keys = {'bboxes', 'probs', 'labels', 'masks', 'objects'} - - for key in actual: - if key in per_detection_keys: - continue - actual_value = actual[key] - expected_value = expected[key] - - if key == 'shape': - if actual_value != expected_value: - print(f" ✗ {key} mismatch: {actual_value} vs {expected_value}") - return False - print(f" ✓ {key} passed") - continue - - if isinstance(actual_value, list): - if not cls.compare_lists(actual_value, expected_value, tolerance): - print(f" ✗ {key} mismatch") - return False - print(f" ✓ {key} passed") - continue - - if actual_value != expected_value: - print(f" ✗ {key} mismatch: {actual_value} vs {expected_value}") - return False - - actual_labels = actual.get('labels') - expected_labels = expected.get('labels') - matches, unmatched_actual, unmatched_expected = cls.match_detections( - actual['bboxes'], expected['bboxes'], iou_threshold, - actual_labels, expected_labels - ) - - total_unmatched = len(unmatched_actual) + len(unmatched_expected) - if total_unmatched > max_unmatched: - print(f" ✗ Too many unmatched detections: " - f"{len(unmatched_actual)} extra in actual + " - f"{len(unmatched_expected)} missing from expected " - f"= {total_unmatched} (max allowed: {max_unmatched})") - for idx in sorted(unmatched_actual): - prob = actual['probs'][idx] if 'probs' in actual else 'N/A' - label = actual['labels'][idx] if 'labels' in actual else 'N/A' - print(f" Extra actual[{idx}]: bbox={actual['bboxes'][idx]}, " - f"prob={prob}, label={label}") - for idx in sorted(unmatched_expected): - prob = expected['probs'][idx] if 'probs' in expected else 'N/A' - label = expected['labels'][idx] if 'labels' in expected else 'N/A' - print(f" Missing expected[{idx}]: bbox={expected['bboxes'][idx]}, " - f"prob={prob}, label={label}") - return False - - if unmatched_actual or unmatched_expected: - print(f" ⚠ Unmatched detections within tolerance: " - f"{len(unmatched_actual)} extra in actual, " - f"{len(unmatched_expected)} missing from expected") - - for actual_idx, expected_idx, iou in matches: - if 'probs' in actual and 'probs' in expected: - a_prob = actual['probs'][actual_idx] - e_prob = expected['probs'][expected_idx] - if isinstance(a_prob, (int, float)) and isinstance(e_prob, (int, float)): - if not cls.is_float_equal(float(a_prob), float(e_prob), tolerance): - print(f" ✗ prob mismatch at IoU={iou:.3f}: " - f"actual[{actual_idx}]={a_prob} vs expected[{expected_idx}]={e_prob}") - return False - - if 'labels' in actual and 'labels' in expected: - a_label = actual['labels'][actual_idx] - e_label = expected['labels'][expected_idx] - if a_label != e_label: - print(f" ✗ label mismatch at IoU={iou:.3f}: " - f"actual[{actual_idx}]={a_label} vs expected[{expected_idx}]={e_label}") - return False - - if 'masks' in actual and 'masks' in expected: - a_masks = actual['masks'] - e_masks = expected['masks'] - if a_masks and e_masks and \ - len(a_masks) > actual_idx and len(e_masks) > expected_idx: - a_mask = a_masks[actual_idx] - e_mask = e_masks[expected_idx] - if isinstance(a_mask, list) and isinstance(e_mask, list): - if not cls.compare_lists(a_mask, e_mask, tolerance): - print(f" ✗ mask mismatch at IoU={iou:.3f}: " - f"actual[{actual_idx}] vs expected[{expected_idx}]") - return False - - print(f" ✓ detections passed: {len(matches)} matched by IoU " - f"(iou_threshold={iou_threshold}, prob_tolerance={tolerance}, " - f"unmatched={total_unmatched}/{max_unmatched})") - return True - - @classmethod - def compare_inference_result(cls, actual: Dict, expected: Dict, tolerance: float, - iou_threshold: float = None, - max_unmatched: int = None) -> bool: - """Compare inference result dictionaries with special handling for different field types. - - When bboxes are present, uses IoU-based matching to pair detections - holistically (bbox + label + prob as a unit). Otherwise falls back - to independent list comparison. - - If iou_threshold or max_unmatched are not provided, they are - automatically derived from tolerance via tolerance_to_iou_params(). - - Args: - actual: Dictionary containing actual inference results - expected: Dictionary containing expected inference results - tolerance: Float tolerance for comparing numeric values - iou_threshold: Minimum IoU to consider a bbox match (default: derived from tolerance) - max_unmatched: Max allowed unmatched detections (default: derived from tolerance) - - Returns: - bool: True if dictionaries match within tolerance - """ - actual.pop('timestamp', None) - expected.pop('timestamp', None) - - if actual.keys() != expected.keys(): - return False - - if 'bboxes' in actual and actual['bboxes'] and expected.get('bboxes'): - if iou_threshold is None or max_unmatched is None: - derived_iou, derived_max = cls.tolerance_to_iou_params(tolerance) - if iou_threshold is None: - iou_threshold = derived_iou - if max_unmatched is None: - max_unmatched = derived_max - print(f" IoU params (from tolerance={tolerance}): " - f"iou_threshold={iou_threshold:.4f}, max_unmatched={max_unmatched}") - return cls._compare_detections_iou( - actual, expected, tolerance, iou_threshold, max_unmatched - ) - - for key, actual_value in actual.items(): - expected_value = expected[key] - - if key == 'shape': - if actual_value != expected_value: - return False - continue - - if isinstance(actual_value, list): - if not cls.compare_lists(actual_value, expected_value, tolerance): - return False - else: - print(f" ✓ {key} passed") - continue - - if actual_value != expected_value: - return False - - return True - - @classmethod - def compare_responses(cls, actual: Dict, expected: Dict, tolerance: float = 1e-5, - iou_threshold: float = None, max_unmatched: int = None) -> bool: - """Compare actual and expected inference API responses. - - If iou_threshold or max_unmatched are not provided, they are - automatically derived from tolerance via tolerance_to_iou_params(). - - Args: - actual: Dictionary containing actual API response - expected: Dictionary containing expected API response - tolerance: Float tolerance for comparing numeric values - iou_threshold: Minimum IoU for bbox matching (default: derived from tolerance) - max_unmatched: Max allowed unmatched detections (default: derived from tolerance) - - Returns: - bool: True if responses match within tolerance - """ - if actual.keys() != expected.keys(): - return False - - for key, value in actual.items(): - if key == 'data': - if len(actual['data']) != len(expected['data']): - return False - for actual_item, expected_item in zip(actual['data'], expected['data']): - if not cls.compare_inference_result(actual_item, expected_item, tolerance, - iou_threshold, max_unmatched): - return False - else: - if actual[key] != expected[key]: - return False - return True - - - -def main(): - parser = argparse.ArgumentParser(description='Build validator components') - parser.add_argument('--api-spec', - type=str, - required=True, - help='Path to OpenAPI specification file') - parser.add_argument('--base-dir', - type=str, - default='.', - help='Base directory for validation') - - args = parser.parse_args() - - with open(args.api_spec) as f: - api_schema = f.read() - - if build_validation(api_schema, Path(args.base_dir)): - print("✓ Successfully built validation") - else: - print("✗ Failed to build validation") - sys.exit(1) - -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/tools/inference_builder/cursor-mcp-config.json b/tools/inference_builder/cursor-mcp-config.json deleted file mode 100644 index 8dc6aaca..00000000 --- a/tools/inference_builder/cursor-mcp-config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "mcpServers": { - "deepstream-inference-builder": { - "command": ".venv/bin/python", - "args": ["mcp/mcp_server.py"], - "cwd": ".", - "env": { - "PYTHONPATH": "." - } - } - } -} - diff --git a/tools/inference_builder/doc/architecture.md b/tools/inference_builder/doc/architecture.md deleted file mode 100644 index 8cc994c0..00000000 --- a/tools/inference_builder/doc/architecture.md +++ /dev/null @@ -1,38 +0,0 @@ -# Inference Builder Architecture - -## Overview - -Inference Builder generates the Python package that includes both the inference logic and server integration. The package is constructed from a standardized inference flow combined with a variety of well tested source code templates—including server templates and inference templates. - -The generated code follows the architecture illustrated in the diagram below. - -![Architecture](assets/architecture.png) - -## Inference Flow - -The inference flow is standardized by the base class `InferenceBase`, which supports inference through multiple models. Each model is managed by a `ModelOperator` instance, and is connected with one another through data flows. Each data flow is managed by various implementations of `DataFlow`, handling various types of data, such as images, videos, speech, etc. -The inference flow is standardized by the base class `InferenceBase`, which supports execution of inference across multiple models. Each model is managed by a dedicated `ModelOperator` instance, and models are connected through well-defined data flows. The output data from one model is passed to other models through data flows, using Python dictionaries that map names to tensors. This allows each model to receive its required inputs in a structured and consistent format. - -## Inference Backend - -The inference backend can vary depending on the model type, user requirements, and hardware platform. To support a wide range of SDKs and frameworks, Inference Builder defines a standard interface: 'ModelBackend'. This interface allows the ModelOperator to interact with models regardless of their underlying implementation. - -## API Server - -The API server handles incoming requests from end users and returns responses. It supports communication protocols such as HTTP and gRPC, and conforms to standards like OpenAPI specifications or Protocol Buffers (protobuf) definitions. - -Multiple server implementations are supported, provided they comply with the API specification and interact with the inference pipeline through a defined abstract interface. - -Additionally, Inference Builder supports a server type called `serverless`, which enables users to run inference as a standalone command-line interface without deploying a server. - -The interactions among the components described above are illustrated in the diagram below: - -![Block Diagram](assets/block_digram.png) - -### Integration with Customized Code - -Custom logic can be integrated into the inference flow through the Processor Interface. In the inference configuration file, multiple named pre-processors and post-processors can be assigned to each `ModelOperator` instance. Corresponding Python code snippets implementing these processors must be provided prior to code generation. - -When custom processors are configured, the `ModelOperator` sequentially passes named tensors from the input data flow through the assigned pre-processors before invoking the model backend. Similarly, after receiving output tensors from the backend, the `ModelOperator` passes them through the configured post-processors in sequence. - -Users can define a processor in the configuration file in a way similar to declaring a function interface—by specifying input names and return value names in order. Additionally, a configuration map can be provided to pass parameters that customize the processor’s behavior. \ No newline at end of file diff --git a/tools/inference_builder/doc/assets/architecture.png b/tools/inference_builder/doc/assets/architecture.png deleted file mode 100644 index c10bfe10c93c90401c8cfa2dd5008a35698bc926..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45036 zcmb?@Wk3{K^S4|TP)bDU5J6Cpl#musLP}a1M7ksvWGQ6{krb4rLFuJyfu#hLTIp`3 z8;PakJ?quy8vl>)Ck6JLGiT1^Z)P^|p^^;IdFu10PMso>lf9>U>eN5;r%vG<;^Ttf zz%V+`!9O@osxp$N^4e(^zz=84B@`u2ohl3?I5a*Bem?h9R@>>+DQ2*Wc^=2d7OGORL`Aca2&p9oWvBfkfB}>PF3!&b(z83=~wmC=qyy^6tem zvOebo=jyJQho8Z@@Z!opr|(Y3JGBeW#pAjy)@Gzz??RL@L{63Fi{oOPiJL}tT3Qgu z{=PE=g7H@Ky&#Ft=zGCDS%UTZe?Kx>be;phki>Vur*{7SH%VF_+=PEW7V!W5V}Uc> zAt{K3oD*r4OZVNb`j+E#NJl*47{Bwl`Y!m*H4Wbj0$+w?FQWa5q>h7nY}N(ttEm5T zAK&40VhD3#Jg2b5AD`PRI$cAcR`$vJOWFlVS)Oq23qLn)f4j1yAC2NXmg4lgAQ|x@ z_{9ark3`S-BR)EA4;xJQWj$#bsJbMHFNe#6EBW)-A!~OJiu8zU-phY&r#G@v$%T2e z!D?`x(UnpQ2d%Xsz=LpmqS4m zejEb_yluJLc=zRnNn8;cxyOPKNab36uhT-(UyCBOkoz18)lo-je=Tw_4FZeYhYa2R zJc&$;{{Sq4AC>;K$jdF|`=W_we=ahC3jp#w;oc4MjK1Mdu9#f8_k+{4l~v=e#*3AQ zYk#q*3%vwb)DUdOA~pMTYC_e{p!fe>JQIGFoe1ykKTpDI z=UfLT(FOaOY%qlxZy+hyGRz}r6=kB}a%OJ2%AVA* z`OXUi7@=mA9HO|&qf9Ye(0xQJOXgAaj7ZEIA~XG>w-T#{hY4(W9Je&4_{DQkw+^jL z1#M?N?-S{6+C$yXXnPcB&3H7E;cleFa}_8m3aYu*EGR0Hn;nJx6qBPl3h;PRnkPa3 zQYJfPc3Z)pi%cgHS5!CB@^B%18gr5M_aGEP#@y;* z8BI1ikTt4OgmMwZvyEuQ*o}ZmHV7(=I%g zb#dnfYhwfyhOP{pMVGu~GR@4BD2s7Yb9w6iML?m9QEjR0mM*;-u8mVTXxFR_}X^kdv_^k?Zu8lyD-bSIA_;rE8ArF@jz~!w{9W$pz%kXm|`SHA4zx#<>v1 z-o~$rwKWUg>W`<&ZqoDa@DQE1({f9RLi2O-PxJfye7Wkm**y-0hW^9Ke_w7;;rgXz z$JZg}a&2M6Fp4PpPaDBSWBf%J5xDJX1+nYrr%|c5+a$pLX)mO$p9xL#M<`P~VXL?$ zh0LRAvE$mHly%%8zfwl}zef`k7;rU)y0&>gyU}vrjwF!Rt}aT>GWvX7vizn$F z-D+{MCq?>B|1tbu;?IQ8=rGMxH9qyH(zE*SzP?Fq0c4E zuJ$-)!jwNXzOua?X#BY0fhXs+islu@*Z!@P%tMHCk!Lnxytmt;A3lu36;;wQ5@tMZw|7RO@AN9|&n!jS#_Ul#UneU%{DK}WiX$K_j~^I) z9zzb9ev4Lu?vNWH{YZcKn4-S451UPz`#w+=+|qSh zz>gI-xiwQ#U`O=tRdrq883lQ`=nVj)Sg*fK^h@#;39k; zScWKj4_>Xj`MhJ&j=GbUa$E^xx;OFdD1P`h)20|sVC_lz zMZcsmQ&fmD#{|dmT1a>MqKrCWV@f{y*Y5V>(mfgG@7D7lyF=+S=J+H=CEQZKKC}J! zZSLek)HSrfN||vb>3KVuiZweZmWdD017w9Ws4IYod3?4YX9+8R&afqBHk6vTGjnYTh1k(_{b)zEr z_dr<_f~i*%#yn?23@=#r8ZD-(NC~p!3ZWx=t}P&m@TparZ;20XSW92UaYW_lJ{&@l zn-_ENKRGH)tecT@Sf|#x3aKqWsHWM`zRIW%Ler2e4 z?0Wes@_0(Z*gMAalK;Z2kL@M@p*1A=cIwr#+dmD*2d)-^o=l=J=y$Ur$I;kU@=%^> zHdcZJX%R<0`+avN2`%#ICZlY@*86C;&eT@7?i*^=gcUhK%nUGME~43?(GPbA#Rtia zM_O?=GHy?p9b~xQ;IoWgvHf|9jiBI=tMUHRsi{A`x9Mh!9Pr-rAgm=rUKW&c7uxI8-MzB8fA~^O0JNxtv7#$KHAO6Jpc^ibg5qX^ZCf>=f75RDUM)5|2pVdGGI_FGCS+fzr@tm z#sLycT%G>BE04Fg7O?z{tK@$XcYMqNhzlNLul_Uds5(jj#KlzV{uS6)90&n+7jKuW z|0(xQ+b-Yqqs`WAm%xP_-&IxV>7$?$`l!irRmeU47Wgkgw$nBeNEGXMbu*s8#1W zBSta+FX7UnztG0+2Gf5jLvlw&71ujuXrbik`;%vs#h*s{9qoD?;B9m}t*n-{^4oJr zjy;s=ed`hUUna(5t!xc=wOXTO@L*j6tYdDST1w*}$%a?rzKM;p9}=lq{^c5!J9-Au zTpa%%!Tf4!X$ZNKU4|!~W~P5#gP?UEu{W@9@pVlQ4$X>c@P40Y>y*T2&p)|tD)ZmP z>fll{e&-Cy*)=VaW#jKTc=TCA@^9`fUn`X)%6s2umANRs!zUWX{^z=w!paK35N~gR z9}J1uS?|kxzto#a#J*KnqDQo0`Ih><*zmY!b?16ruSe9O_RA(X-G6DK>2O{;czvIv zvFbOIFx*!kLd#ye5IX2%$$YA6@BUSvKc?`Y&FaNF?#6+#t zm(1T){>iY_-TGq&)G|BYl1CPGaa!r3aCV{9`f(Ur7)(0L=Gw-B$8nc)Zvy01W#l zJa_jSpYVt-1x6MChMKMsdOl#U88V#s@b&1d^J^W)%Gy}Z!VIx-v-p*F_J`ecy3*0+ z8i?SSIcO$HKfhWM!^(RZQXK;^S$K%4kv6+pll?b2;@{c$CP5LLbPey|*}o@|jjX3t zDyH#5o!F`;U`=wL3VH4^*z>T{Fov~QxAIutIc{9D(bdMIH(dCIN$JZTW3I+Jjs^K} zRgccQukRFs_rzJcb1Yc8y!xT{I3F7PMD<&F%l+m7w|W9ZV)?o0-=ulZrYRc;Rgu)u zPoes@D>-nz%ARY+0)A7#d%<_Aesqu>)uoJ9K+imCIHYu#pRo&@M}6Bp|BF)W0hv?gLuBo zsrnwe>40wny>`x`dWvxE3ZTc7xr?a@{;|8m5`}z{nmOJyM@#*5a-D1eG zcxMXP+0BjJqF*ec!uWOs(14BRhyQ7S&(quesS_l<@$%KGO)pMni3FT%rTcRo8_dY; zuIpCqIKQR2duZ@9H_VEE*-|6_Z8h!h2B2lcU`sz*lb&k!7XwgXt-fC#>yZ9f!P8Ce zR@Hd^`${!(f#=b4rQ^z(ds!xO^d@)A*5Bo7xr>tO{2|Awxtst4$_}mh=^B7Vc~<13 z0^@QFJK3d9jT&9dujRLPM_g3jUFW;!O}o^W7`D0FO8Se|P4>?L?}ZIpewdUPU{XBY z+&jZ0lR8W2_Z0e-En=&6G3SU{?+w{+9Y|OR{?2%^GO@Wzu3RypQTZEUSi77mT$5<) zo>XIbuq-=wvx!`NFI0-WiNbDm+z_KQFHB6f`VVukwM@J%o3(a=05{y zJ>0VTPT9<+K9b^d?R$>`uP(~^9vV@0vsv>bm~%*$;KS=;9$knQK1Z zUDjL0R^1!To~yA&6{22jtej0DEdJ&}_HIERUe=UNOD>Lv-E8Vp8+O!?a>q#OTIBvL z@fueN{d(}C_?!l&D->z9I%BX1D{Z@Jclh-5&BeOkq=Cn*hXm-4BCFW;e=d1>362uU zq2BS(JINbZ9Dl{gUwstz+GDX4B@?1IAvy7JD3l#v!1a#OQkl|>y{>~(K*rtc*>-66 zt)jwUc%|3gWZ|XX-z8d69K?(K3DIAEn2v5b!*DTTuGDl_g|mJcH|Uzg;p@1agqxOZ z4Y#CR$BI%ne=}zuE|8Y7!1c1N21$ux7;s)u!oa7Y;2fC;~2gm&5 z#035j$CjO4pUzT5M{wi*qk5vGODIiD?6_=)2|6z1_ZOAU^9JGju*?4KpD+4p-H#$- z-Ekv6sJgd)>8RJIs77a(CI!d1gz@wLxgID2Snu@T`n0~UIG6`5Odwd2$IBcE$ z%_CC*KpAl9VByA3E)`9&T?_tZ0{1+&`SjbnZ`7gifU?q=*L?f&?(n?HT|^4Cvxn@O z422)+U1%oT-o^h6?FuCV!I!Js)i9`D2aoy-*bBE7$3azaDbBp}iNi~4Z^ zRRe>(9hyY1JGts~Dq0)Yeu)deL3Ti*A>8r#Ut%O*68&=UQ7JYhbxBH?`7?PM*F7)< z+6l14zmghv>ysY9K2Mjw@+vCi>;#Z_fS&%9?-*Mjw}C|fv;8yW0*lu4yvRtsY(dg#X71Y`sB08k8kw z(>{_AvM8Ejj0m6`$qvCJRHrKv&N<*=%U6V;UIDV;FMcxy4?I4+L7Pf8+Dv+vAf~(( z1aRs7OWLaP=PmWgy)@c}Mhukk8gs5PbaOKti)kVAi)g1o9RUuPS|}l1VnEy?+kA&s zqn`Q!_MNwjcmz+f30V*+^C>_UQc-)#QvLX>iD&YAqo!Qs3KR zLvn7G4^wxNNpQ^4_4G@<>IA-Aorxs9@~$Dh@~I|-LetupV~NBsBDl8*4n}DWXQP>1 z3PMtUB8@NDPFh@zg`6Gy;1|WY!t2PL6<}H6Js~*$3plb;`fc`gb#+|~IU6!v#BM*Ke-bY%8 zu(f*U>252|YhFgOKK_(F!7bq*g0B$y?A_H@98cChi*$TKU(v2ww@;}+kQzgR+d^qW z$w>M5R?laqC9+!--X^ik<-~O&ciSWFyc9_CguUV{H|*sKl=xfKPVy$MtCA7deZc%)( zSBN|_fU~eyl8iS%SKC(Nq0`A}Se-dcY?nH|pvIZDABsrKV_MXqnI7>;Y&)*2N+$>= zLMG4QB6BbOfXKVOKTQB@Cc}}70cyq~MXhCY8*Y&h<$o3z7x&{dQLKg$8{U#RkmTkP z9}{Q+;py%t-iDT)Ar3s2yCIHGv>hu>{mU2GCPn<#)6FmlfBG1Itu}7@cba(L1QrF$ z@h*|&M25&~abylWNK_>f5=}Lj-%XDEjzyFr!`CQJIg4}a=M|95tOp&v@U-0y5KQl0 zVc5LaM9Z+ta4>e*SY#>`6*%#c_!r7u_a*>n)x?p%11R^G{7yMnEf+;5LvRRp221`P zd*NHyAq$BDi9)cp{Tl|G!l>k1(HytM2_tz8Gbz$dD!4R@#G*L{$bMWvM$oLf(8gr& zxvf_*;RtG~EZ*O(ZU2imWsOmS&4(@i8=gAVonIv|08fd>n)&{8i2!c?bn1vEf)CqK zBjV+?Pj9t49}=%JOmjEs7ZBc(r-$DO9ehtujC}n+e!K2rlVecyeRd<2zpf@cUChqt zdNDVP3f0!!@K`<;F42%Jo@vqKpmbJ!)Jz%O=5`l9iwavZ?>66?0N$aA(|$`;*4D?9 zG($p$t@6f%h+;VVhVeb)&Lms+T4>4%NpD7gaJD6@d@luSrM05`!e)xTde1vZiAvc_ zn>6n{v(_(h<~aHoV68$9rp0hcE3)OFJ4C4E$2eyzjeJS{B=RTr#rhzRPnW6^X=e9b zD1BfNLY=<<*&-E0Km)M?G+oJ&dfam_e%4#MK~Wq$32UAWz{#>6Ftg9wuBri~Krv?X zomB<(G+DZ5d6ubF&7!N*I|Roz7DQD_21B!H7gXPR5DDpY#1UtwM2*os z`V_B)@Cdg$Fc#IQjXmnL?3By<1O7l5Je6?Z6YGcQdRdtX6SoS3Jir0XJd#)qhFF9SACOXy#?Bg1&gE`B|PF zRn9&;1#kjFkJ53vN#-TjzI@YqN0!QxZsuxIb@YSmeV!YCT;6#h2}ngo{we_FvmQiC z1nha0&P`cue@fiHuWYf9fMW%+W2>!MO@y8=}g4SNP22+4@Yo z39JS|fSr0ohYhmXWZYvs-(_Gke&|pU#~%WN?aQd-N~lIQ$up+jG{&XN9X(A^mDg6x zJ;bJ3ZyyaQiJn?>W}lOYIh;K)@^bd0LN4dt%$@&h8^cZg=yrn<0Gz5`j+5|4wjC|z zz7SX40h5sM;V~qOFP5pI6Xs$J0)wc z#I~fSlzM{v7qK*ryDweW8}Pe8bwj$=z+EZw7_iU#sx4WH61T9YsU!PZ8E)!Ix)1r< zjuu~^n{%y07vFtlYhCWfy@DD0G~3q#v$PFDxadC=%~^Z55-8dy8W|A3AugJAGL}4d zjr~@o6U(!JjB?((odkU!cN{Dp{EVxXRA-u-#NVRCvlD;TV<_PTVk^iWYA|#{`~G+3 zbvD@50Q>|^MOc2ynRhZqZ`mbPWk!wX3`c~LuP63UFZR3W8r<+0%^YDR0_yDSuI=I; zz9?K-SbCQJ@7;s}g=sWRSPCOrl2er38tlRlmKhH`W~m#YEh{*SAvoe&M1hnnpL+m| zQ^j%HklOi;AOJM2MmN_x9W8#>@dS!v`|spo%VQcXPdYIa_uWO`nI*F2KJKI#pU;rd zZD~z*pZQ!piXONamUnwsCyRrXFN~e@j~AZunE>%+-lzyDnW?_DA>2og(W~?*LGt$_ z=Eh#^!=#6h$+e{2K4M1-fzY&R6>8^;RR6{H@=a%JXDYe$E8JSKibF*NZGE&8d;AK* zOA)<9uV&DmM*>|sP@fCzSR!}Q#%=v5pGm1hx;ePx#<|_sEc+(N@lLuc454rF%pqVFeS(P z{~`L8;wJ+jnXoQv2g!u`C$rA3$uTdz*7yuUCm}VWh2!ZN*w%pL`b7%>kS}s@UN~+< zCov5OXrWh$w=kk*Ez!=mbdk+Hzboo++X(|`>Ke-3{Gq5NF15p(4t#TuJ4y_X-}tOI zR^9G^BX%@vQVw!CbDA>FpO>~jT#*1KEPuNzeZ(wv>OxfMH>h}@^CLP#ac64h2)19uA;df!ck^X-M>g&?cL zP~<-B-Wp+6O6|>83m6?OkNC_@-#LtY!h(WOHx|}Mr79c|&@pUDKdVsYTU?K}+FtG1 zPgC6zUK34u4Mi&Ut@r*Rlex3UKHw@#N}yTqy9dQ*$};kBqO`(KsZvi*JN8Q7+v)rA z$v$;u)hF+kr#YWen|qkJH^N4ZBZ|~UP~Z<^QWC$p320xb9QYnrv?QCW0(d%$KV@-$ zKSE1o?@FKJZWsogfrU!`u)B}9JAhktZN(Nb)vp=CfFaX*K(EoG?3zDsPR}(L?Z3(n zszy43d2V@so*I300&F%|i;}x%Y=4@-Jlod3J;hU`>k( zrE}HjUVkz}R!5kN#%(2d=0f5(0e@2u_it+NIG>v_{UM3P+Ty@4c@`Xdl^$)WbH2SG z4t8jEHg_V+C^g7FP4zWFuZIc;-&u=u7UA+GmpF zI1iDc1L6>_$jX|@n0@kzdMS9H{UlvLfH4&b+*qL5QkHTrz%$U$LLMu@xw&3YVa~ig z;No5(d$Ga;^WI9h{53Q~x%$nbFanAKunnV8TOlc8;+4IQNn96zClLHe@$)lRe9KP} z2{GOv)_a5y8$L8y`XqmT)5st~pg5Zb??>2zdBMRY!Q)xr~W^lFtu$`sfKC-fn}FItcCP*<Z!cpr57 z7C!fyoA(a&nnx1ElkOMhi}3WK@8dJ_b@at$^yP@!s#m(znuVxIlOg-HWH@s-9Z4ni z{BaY)361Vi1TR0X{6YoM`BvLI>Pgqvr)yrN=X>EI=Ny_iGfQ|voqcw<_7!cf`3OxG zXnTcL;4}JR@2c&?-Oa6uTKUJqH;lm(nNlbOfyBXsE=azgnSPsVwSk1^a5rc6jT%1e zapBW|+tFgcq31zlBwEwq?W@@&z@8Yv@KSWD?C>MCeK7DxNmlLS z#E517fMMp;aPU&8v0v6Vw#F1SfQ>6OxE|u4cbqruykP=3;5*$ozPZ^4dSY~@f>g@x z*XENmET^rGR?o~_^}WOcSUTMTEKTown5afeM7}m>yfoXKh?=F#EA!{TkE3f!J{$B~qxlk;@`Zq!at z_^`=TV3?}IbW-kmgT;r|lk9#5h7}+WmuSGbA3x+3-^LR5h%-kuvaC8Y)Np)$=4z=N zP}mbA9omoDE;U9pU&@*JIu=vbmfq=_2IE@|#(JyiDs9jZ`d$*o?$KO`Ug}G=CCZ`D zxv|AL=IMfj2le9e4f%w6t|BB@`4mC9E;H$-c6?3H=t~RM3dR5wrI3?YErM?=P?G4TIaY!TrqinVD;$@!q8On{y_XcimX%HsfYaQ)*3@y)bP? zQJ!WCDZVxG-0h)^;Mf~eLSCl&FCo&dmvI#bhw|zf(v6f2ifmM+1{;4_rg8oHLf$MFN!mXZErZ!4wj}=``B#s-G_-D2PDrfCPiT;V_&=%OulEl_Oe^;~Dj0_{(Tjg3kJ4oUoV z5aPXT$hjl(2xG84&>vJqDz;v2Q4!6ilR# zZ+>>Rsh0$ot~S!F(?N>grmc2qSZhiJF?+1VLB-ZD55iT{!6A)STi^TN^m8gM1Uv>7F5jJ$^Ft+8D7@R9lqjExnd|q+GhvJ7+*FiQhsGB=USXa2<<` zBRZe=w6nRnp!O>}YzLBL7xC`YOuyvYt$Y+#Q8`oAHwmlOz>a(fclc0Od?ghXB4hMb zr@*d{F4CRD4B%JZ+Skuk;R5puG^kHu7b1iQ>m*vihC8yP#rJUrlug zBOl;1sz|_;WM97!%WoJMv*x=f-DZ9gybl^O7JJ{WfCqi~^>d$o)@Di}W|Z5C|DZM- zc*%!zt=sOvH8Klfd8|sTulKIeKFgYqLe)gzNOncItP_1-)=|*Ktva>v9e1dcyI4JhBa z4;~(k^T0hX>7E4La$xx*H5-Kaek7?!4|EvDnN zb(#~8(YN;&_NeFt^YkU8BqKZ5LJ(qU}_nD<$c zgel=?P1j=@tU$jVVyw!rIF>S{F1sd$pO#^1=ITdLyNT*|pw~%5pW=vNiQC3EuHAD^ z@D)G}*}!I~Ig37EUYYrZ?g*M3ZciP5xtA)}A%wK9aS)={*MhOdT?D7%b#y z8G;R3MzOO|5#%LrQa+8EIR~V$(Yr338bD?XLc^S<%&v?P8ibnG-U}cE zBf!K+7X9Pd(M9*c44T>rKblV~1=2Bj*6bki%>t4xNSfX3B!_>EYu)#PDn9npj{l@o z7^%aP&q13a_d>dixgHQQIy_&!!C=0t%7Lm#u0)sW&SBqFl@j}L#Mwp}hT4ieE5133 z+}URQsa%s$h~)cIoX%#@2pEObx(Y`PjRgJ;b?l7=3wK8U;d56OK4PSZ6Fg5=V|2d9 zmoxTa1RJO-s;%W$H$iQvjIZA(%#sBG95D#sn3*b~H#n&LORYtB;LhG(oJUdimpz(0EGEf>p25&Ci6KGSF5#!*8C?tmk9b7EI#J z5-v<)gF5E;OofU|I&9Yl>=HGcb|9(%lnI4+rFgN`WNFfQcA)P^)MLXwpVMQv=^0G; zkMGiz7kos&rP~dU%DrXL>o3z6o5EBjc#iQS-FHQBh<3bD^2on%qq!g$y;3yq+E;a? zuZ~3uI8=l6sv$aUqdhvM2|L;SQy=E1*fD(|Fss(9ctP%@8za$`Lnf&Qged&X^QJ@4 zq&2jP+$G7uy=G;)C|Q8%%~-51ohX~-v*MmJSA%%zC)A*N(Dz@x08H=0rW|I)$CZ#; z8W2Z2SWT>LIL@>eqG@tw%({JZF_=BTz|yne$?g*eKUItYRCby-)DfV2W#YUavrAcx z&I(zb?0o`czKky~y019C{T^~cT^hSdV70$$wm6ANG00nlnRFt9^?c)WVj+^Uir_h9 z|9M{bfypBdCs2L?3|ZXKMQSOI?WOZuAUA@?^$!@dLq;V=zjl6lYc-mlk$cdS+2At) zY%N3`*xW708Ra+nlHcAeCiLm_pA;;Rn(HbA3@(kqTo|S>gMlu;3tn z7teY~nvUWS8CzUdjdI+40|HgH-pOgtz2=jMl>k{ z-(G4nz8M|+4#-3}zl+zG0KNB`Z^ll6@wXHZMfIa-u`yNe7@KU{^TMUBnPwy>VAST? zzJCGB2S*#oOSSp!dbr%VfBi>&U?tlru}frp0A^L~aphA35z;G2j5L@A%N~9<$;3$! z7y$wVtCn{)h=WP-B0KjKPytr0>}cP1>?5RP>C%MXIb+hUxfweL=HeJ`={&Zj0D zhqsfIBsPs*zJjph;0IPP5rs3K`ylGD5Hf^KYhtj;07}gZjg~_Y7)&OV8N zvh2fdPxJtBoRUWlb}SE4yQRPGY6Uvks|C;9AO=X2MBNoSI=;Sc{7+rrot!h8%|7pd z7WdR(O^g^r5;F*9Q^Y3LV<9xuU(f1$tYel-s}1soncCNnRrs^CL9IR!^K2Wd@3EEn zktmm?9C%!Ky&rDEr89)xU21B%a}VRk^y=?`2}#fdFWL3P&;+q#@UUKDXac*egsGi3;NOc4X5*jkKe)BDrl<;6u`^^(-J?=V#zn}EVlzx zW}Iu@vx?DV7HRuBf=p)mry^g=>(@<3wxzLFDfbS~J*+F@)3^GZ&VT@J3`KlH#G*6M ziA%OgSrOEU`kn|-05j~`Thwq`y(7)rE;mU9B(hoe@!S!*u6b^PkvJ&akVhxUkT^=? zkz0a;T5mIsD`exxbc3Iopf$HF>c}XoCZ4nMAZ_hH z5oswcZ!KF9?s4?}mj}T4m>Y%XQCX#6Xb~ZH9L6?6dxg}XOQRo3T^h4Z5 zu98>8F!_nu7_KzHVnTF0w>&um;*7+H7U=`hmu)85-%dAxx!YcIVS`dTldKN4&G-uB z2-qU2PgIAQ}Jyz8#oyn0p0TL*)z+wz-*hvr3$b9V3C$-BW`h|TO=a(S6 zlQ%iF914ziEsivlNA{_S^!8SKsATAsEo_!91UxMcq|sLu7_q zg<^+94nE?G!}Mq@-on)FAM|bas8#FvwX`xxX#nOM>x-v=(K;-Y4%)TJ0BJ`<*{4azh97i7X=LcXF3Z zd`&DmD%=e6>Tv|JkeEQVJO(sJA#jzRPSzu#($|7&)03IbEnzcz$@Cmg}hxv?e6q~cJ^M(2t~D? z-3w11b9=l#MTQt{8sVulW)*frZq+WY@qQvet z2nvsrytFI%uWPyXZ8V(L$T#)2%#BkSxL=!u!dU~>v37cfIdvAOZ(-dPeW&EKUQJj0 z*)uF@NS%%#zta>^i&17H{NeQ?(PjL1K$R7YxiDE*2gi0CQ}ICt;?8a|Gm+J;vfpWM z?xCV+ zGR}AJ7)Xn|Ff8HXlqGjpi2NTLO`oME&E zZ8WPC*DU2R*XJ|l2iGR`-YT-~k2?`KkG)#gtAOmp#)2u8W1nK%1Im!`UEg6>yLWK3 z=ysA}YNH*rRmU}JxC)201wi-lXtn4X-+tZ@qb;J=!hOI2QMo02&50tm$y?&xIdDbs0f?zsM&2kcXQWir@(&&Q|& z;v2+SSczfYnT6Qp*@)@>O)f5JX!`3{T>V0gdQF2%6+RSs0Z*QNMXhbrs#%9QoHz=IblA$m=diTd54mk6xoHP+VqX-TG9?-NeV`w{z36S@OK z_)@1kKvS214(Y|Spc>6enL0+?%{SDR_E5S!i-_xqF~5NPF8!$*v)I7WCTWBh`gZlx zBf8Rs=`);o=a}*|w-j#nQrsgkc$ALCz#s|1LL9s7*c^3iB|ExH;LB3?#B-@68~aQp zy`g20F+qX-$}tK*z6ggoD?*%%m)u-FyiuGOQ^(rnB^O?xik1Cc!BGtKsSn^@W3f#Z zyD0a*(Azy#w9I4<$oBzR7b?q^#e~@|&(Rm;g{kaZ^G;2o9c2eF=mT8Pv7NLiz3+PZ(m68mKb+1CP~ z*=G+>SsX!L143c1mpJt*6%@gAlv1hO>(MXR#DY5W}RbSUm6>ZB*Jw^(ocC(1K z(XBNjA_KsauOAZ{eXM;hJY-}2V8Ve2&-QyBxi~;&DMwyx& z#s;>v|xM9 zkTnBoXZ8eMp{+~`|EAad+6+j|axyTd2;eG-V9q7IF5#iYaRjX#y%ghm(}Ob@0E^-F z+m1Q5cVvOl9u*J+ZqKr)7>hl1PzQ)H|?mXK+(k7 zRz3jphBaPU@!?l^=g;{|2zgnt$qsyEI&?O)Wv*~qZ&W!_d;v08eS#Dm{Ypr?{52Id zGEVg=wiFHsUL|z1?s<>4BgKQiJ#ine;Xo|+yKz#;QG=U4ml#%@1iB-t>ZkI~oBK60%-QfL zSh94edImIBf*eGsA4&yz^i8}kzM9VBl=bV}46&{?m!a)2m7t-Mq%~hnZ5Q!~ zprj2~^eI1HPPGQ3+@JC3=Nh)kd*`AqoC|F$52+wcyxzwPqHIm3e(@){VWiUe*al3L z(@qpNy8ykR8Vt6_g%EE!?BMCJx7TZU5Eh5Oj}LP;z9{qknH2x@s?@XwQa|L37GvKisUmePX0ddTBT&IJV@*?|Kj^yCM z`2bKBULx)1p(_KCzMqbZ#ofu8$pnCy2c5!Qm}Gu+g$VW-9T{ZQx?Y}`9)F2io_IUU z!HM|O5q;xE159o1C`lJ?yR{m7@^D1Sdv)fDU+b_5Qy&)b8*7rrmhM43T#9m@iUxN+ z%{zaV5a#UI%qpvu5l5gXc!Q;L>`c?`Q0tL(`qHQ4_lW$*^_&aTA=+EsIcQ$$isRS4 z`|X?HUdD4V3sjYPlAz#0iC&knqNm>a2ZUTh>a4QnBW-@^@ys||_ro^F2)CTVB0zN? z0Wg_`Fs-2|bKf1U-TSSRbMt8stL}b^oTlf!%|v0DKvSU=vW${2gDYIJWO5u5(9JBl ze%_a0C#q;ju-Fq}0Yr8tsw|#UI1@XahE1|_(cH0BE7u^4i~K;q&ci>#18kf8y1-pi z!59gs4EdcQLV*}8()kHZsxZfHTWhUl>$$A+``IM=o1znLYIHLPg?ZpBTM#WHhDA}f zzDso!!V{|4o*Bp2sg7lbNFA5V+Qo`no~{F{^2f65LJtuj^_`qy&XaXnlg}ccEB%7N?im(=`GkKVw@{U( zirQ3g5u}h762KUGez;@Yl&Nwx;PMxVo>lO|jj6MHs<8$GSPz+;87heWmOBcwskEmE zcKW(3PgiEbf7A)RC5O!`j*}T3KoBNl6wad3a79tpIk{E{tC-5Rl)KoC9;@PND7QKp^?Bp;FG zdN#yM11esT4$ZwdY$x_sHC+H%+(=pO7v!_|Ht%!$y7nkcfXR7jGJtUG1#Wc|AcBtw zaH9)mtYF-Jdu%jMghw3%I`#UU+ULjkPTJ$1Tx81*t%`fK?rko5jD>6`_Vv@U%i4hz zv%L#5XaG#00J|`IffA8w5b>7!82M2RhW0i9jEzeVmT3V8)?p-+#2~N5Jma+jRqQ@& zs2~Bdb}5*_X|P<&7%T^vQj!)JpVit$<*&r^fWh#dMF3?10M9D1fkF!bCXR~flT^Vl zd)D^1sQ|w7M9^R$Es`%JV#5zBo*fm?(`C)XClx1(OGhI4A7c9x0SbBmzN95TeFZ90 zns|WjH|e)%Ui8)g6Ei?9?!1!-!@;#w%>)!g2tOk|h_vO@?YPWTl`0D6o!z{fUxweQ zfXu~uO&S*MTK7*4elNF0NO|^QZE`%bl|?6$uSD!60>Wy;bu{mEGFePm6C?8QB~^B`^#Nq=bb10a7FPI6|SY^;j*ZJp=bG5?xhN& zUem5M#MuLRRe}5g5T;#X!J0${I|c75DKexOd_&5*N{`vlqI2`PL@e_;T+0Y&WK!aL z>`*}e)OhAxx40T8VQ)BIP!*xAtx^GyQv{|QPF;9h*ITjS2M+?M{gxFtH-ZqxD@RSE z6s!i*^c;c4(_p_vsC0YqI>3`Zp=W4VdzVFRH3H7oT8dHx@8=)lm4fkk1C9tb-g!Z= zycrI7{upn9V7_`eAKa^}lWzhPN0qi6FGMi6LZqIonR=Uw3IwA#_C@)?2ruMl`#vW_ z3oiB6Ev$^t5q76OE7$eXWfvRNg%}QzjR4R00w}02z<$bTy^EPc+T7_QfXvd zQA(hYlPw$`lnTQYJp=gV7y$Tv)3l6Zo^#F&dX*Q} zSwI}I)Za*3e2GGxhw(bRRnv0CR@xqm(uaUzo2BPrBHPFuCDCP+F}mQB8ur>-_Orgt@vOm6PIqRI!j{gVUr}+{6(NWG|Qr8cd%uo>abjVY4}VwU-Et+Y^w2Q^}U^Z2CdH$3**0(3wpU z;u>gTB2cG**I~Zq8bCB)?Ia7<{@GaOQRJED`H&1Nj_$`};@{NcF|NO>N_|ZUOPsz! z=O^Kvr|-u|TbNg&<6N8+>z%8dMhkV87Q)(?jZJegk9Zc#CgZHyx=0O(Rq^jRh-ROwa29n+2pS;C2Kt`qvgzFhO{4}r z3msNR>s6SH4^-L%_q3F8ap=SyPu z=D!KLUTxR6zhw005Tsd2Xiv1#P#=ndzE#lCq}*FqDnveK4gxa8Fbuu#enO1=ATdQHI=olbMWDV0teF^oO361ES4-r6%Moxj`h ze(jZJ32uVKzWjT93w)hi8IcsCJx9LGS6tOoyK@>xy&lNJq0B)-Xtm}JBBH}!W9&0! zuBMd6Nk#sGn~htsN+A`NH7##{BBb>S_oYGEgx9A8T^Uxbb4O`b5ykE`ES z+J0ylzig1T0Q%Ptvd2~aA6s7;P-PRXt0LXf4T1xomsPHJ+aUgR+hW0ztp`AMBozuseR0W@vS~zSjbfG zWng?mZ4S71=X;bjalb&`hgaYTzlKJTmKA-nWUM3ttntRiToVt!(pWSXhN86Eeqa+& zMpS807*$3qwb9eT4xduqByYEbFP_ zYgY^j_|&4Ch+e(hd5~rf}Z%=IMR@8=)_1V@g9)wTf4=WOQ zeaYQWL@Z0~ub9e@dF zfc~#nmr#FMrmn(YBw^0AU)`5obJ0}{wn{1_EE<*^^*eAV^cmfj9cywEH|%JaZy)^z zWvR?$*sgPUhhog)65`5VK(P+Y7{V|lrZ`d!xdDi@t1Rt5CJ&=De(b>?2*w&oG`YF% z2F&zRBtPS~o%10Iez-lX>kTeExC4MdZ(FLTftl^Gd1*&sJI%$`QnAIh2oKYdi_H)C zJf{{%m7+Ql#6Jt&CDW1$y={-pdyvi^X$SFci5TL~C9C{XO0W+5

$F(V@mw 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

yC!GshN;5WG0jwOSF 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 GB>6vu=#b0+ diff --git a/tools/inference_builder/doc/platform-guide.md b/tools/inference_builder/doc/platform-guide.md deleted file mode 100644 index 0c1c0ec4..00000000 --- a/tools/inference_builder/doc/platform-guide.md +++ /dev/null @@ -1,99 +0,0 @@ -# Platform Guide: Choosing the Right Dockerfile and Base Image - -Use this guide to select the correct Dockerfile template and DeepStream base image -for your target hardware **before** writing any Dockerfile or pipeline config. - ---- - -## Quick Selection Table - -| Platform | Architecture | Example Hardware | Dockerfile Template | DeepStream Base Image | -|---|---|---|---|---| -| **x86_64 datacenter** | x86_64 | A100, H100, B200, RTX | `samples://dockerfile/ds_app/Dockerfile` | `nvcr.io/nvidia/deepstream:9.0-triton-multiarch` | -| **Jetson / Tegra** | aarch64 | Orin, AGX Orin, Thor | `samples://dockerfile/ds_app/Dockerfile.tegra` | `nvcr.io/nvidia/deepstream:9.0-triton-multiarch` | -| **arm-sbsa server** | aarch64 | GB10, GB300, DGX Spark | `samples://dockerfile/ds_app/Dockerfile.dgxspark` | `nvcr.io/nvidia/deepstream:9.0-triton-sbsa-dgx-spark` | - ---- - -## How to Identify Your Platform - -### Step 1 — Check architecture -```bash -uname -m -``` -- `x86_64` → use the **x86_64 datacenter** Dockerfile -- `aarch64` → continue to Step 2 - -### Step 2 — Distinguish Tegra (Jetson) from arm-sbsa (server) -```bash -# Tegra devices expose a device-tree model string: -cat /proc/device-tree/model 2>/dev/null -# e.g. "NVIDIA Jetson AGX Orin" → Tegra - -# Server ARM64 (GB10, GB300, DGX Spark) report GPU via nvidia-smi: -nvidia-smi -L -# e.g. "GPU 0: NVIDIA GB10" → arm-sbsa server -``` - -If `/proc/device-tree/model` contains "Jetson" → use **Dockerfile.tegra**. -If `nvidia-smi` reports GB10 / GB300 / GH200 / Grace and no Jetson device-tree → use **Dockerfile.dgxspark**. - ---- - -## Key Differences by Platform - -### x86_64 (`Dockerfile`) -- PyTorch installed via pip from `https://download.pytorch.org/whl/cu130` -- TRT OSS GPU archs: `80;86;90;100` (Ampere, Ada, Hopper, Blackwell-x86) -- CUDA headers at `/usr/local/cuda-/include` - -### Jetson / Tegra (`Dockerfile.tegra`) -- PyTorch **copied** from `nvcr.io/nvidia/pytorch:25.08-py3` (no pip wheel for Tegra) -- TRT OSS GPU archs: `110;120;121` (Ampere/Orin, Blackwell/Thor) -- Tegra BSP libraries (`libnvbufsurface.so`, etc.) **mounted at runtime** by the - NVIDIA Container Toolkit — container will fail without `--runtime nvidia` on - actual Jetson hardware -- Base image: Tegra multiarch variant (`-ma` suffix) - -### arm-sbsa server (`Dockerfile.dgxspark`) -- PyTorch **copied** from `nvcr.io/nvidia/pytorch:25.08-py3` (same as Tegra) -- TRT OSS GPU archs: `110;120;121` (same as Tegra) -- CUDA headers present in the arm-sbsa base image (no Tegra BSP dependency) -- Base image: `arm-sbsa-spark` variant — **not** the `-ma` Tegra image -- Requires `apt-get install cmake libyaml-cpp-dev pkg-config` before TRT OSS build - ---- - -## Common Mistakes to Avoid - -| Mistake | Symptom | Fix | -|---|---|---| -| Using Tegra base image on GB10/GB300 | `libnvbufsurface.so.1.0.0: cannot open shared object file` | Switch to `Dockerfile.dgxspark` and the `arm-sbsa-spark` base image | -| Installing PyTorch via pip on Tegra/arm-sbsa | No compatible wheel found, or wrong CUDA variant | Copy torch from `nvcr.io/nvidia/pytorch:25.08-py3` | -| Missing `cmake` before TRT OSS build | `cmake: command not found` | Add `apt-get install cmake` (or skip TRT OSS build if not needed) | -| Using wrong GPU arch flags | TRT plugins fail to load or slow JIT compilation | Match `-DGPU_ARCHS` to the GPU table above | -| Tegra container without `--runtime nvidia` | Missing Tegra BSP `.so` files at runtime | Run with `--runtime nvidia` via NVIDIA Container Toolkit on Jetson | - ---- - -## TAO Post-Processor Library (`libnvds_infercustomparser_tao.so`) - -Required for TAO-trained detection models (e.g. PeopleNet Transformer) that use -`NvDsInferParseCustomDDETRTAO`. It is **not** bundled in any base image and must -be built from source: - -```bash -# Inside the container (or in the Dockerfile RUN step): -git clone https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git -cd deepstream_tao_apps/post_processor -CUDA_VER=. make DS_SRC_PATH=/opt/nvidia/deepstream/deepstream -cp libnvds_infercustomparser_tao.so /opt/nvidia/deepstream/deepstream/lib/ -``` - -CUDA version by platform: -- x86_64 datacenter: `CUDA_VER=13.1` -- Jetson / arm-sbsa server: `CUDA_VER=13.0` - -On arm-sbsa (GB10/GB300), if CUDA headers are not in the container, mount them -from the host at `/usr/local/cuda-13.0` or pre-build the `.so` on the host and -`COPY` it into the Dockerfile. diff --git a/tools/inference_builder/doc/usage.md b/tools/inference_builder/doc/usage.md deleted file mode 100644 index 48253ab8..00000000 --- a/tools/inference_builder/doc/usage.md +++ /dev/null @@ -1,204 +0,0 @@ -# Inference Builder Usage - -## Command Line Arguments - -For generating the inference code with the corresponding server implementation, you can run the following command: - -```bash -python builder/main.py -h -usage: Inference Builder [-h] [--server-type [{triton,fastapi,serverless}]] [-o [OUTPUT_DIR]] [-a [API_SPEC]] [-c [CUSTOM_MODULE ...]] [-x] [-t] [-v VALIDATION_DIR] [--no-docker] [--test-cases-abs-path] config - -positional arguments: - config Path the the configuration - -options: - -h, --help show this help message and exit - --server-type [{triton,fastapi,serverless}] - Choose the server type - -o [OUTPUT_DIR], --output-dir [OUTPUT_DIR] - Output directory - -a [API_SPEC], --api-spec [API_SPEC] - File for OpenAPI specification - -c [CUSTOM_MODULE ...], --custom-module [CUSTOM_MODULE ...] - Custom python modules - -x, --exclude-lib Do not include common lib to the generated code. - -t, --tar-output Zip the output to a single file - -v, --version show program's version number and exit - --validation-dir VALIDATION_DIR - valid validation directory path to build validator - --no-docker Use local OpenAPI Generator instead of Docker for OpenAPI client generation - --test-cases-abs-path - Use absolute paths in generated test_cases.yaml -``` -## Configuration File - -Before using the tool, you must prepare a YAML configuration file to define the inference flow. If server integration is required, you also need to provide an OpenAPI specification that defines the server and update the configuration with server templates based on the OpenAPI specification. - -For comprehensive documentation on configuration schemas, including validation, IDE support, and detailed backend specifications, see [schemas/README.md](../schemas/README.md). - -The configuration file is a YAML file that defines the inference flow and server implementation. It contains the following sections: - -- **name**: The name of the inference pipeline, which will be also used as the name of the folder for saving the generated inference code or the name of the tarball if '-t' is specified. -- **model_repo**: Specifies the path to the model repository from which the inference pipeline searches and loads the required model files. Each model has a separate folder for their files. -- **models**: List of model definitions. A inference flow can incorporate multiple models, each might be implemented with different backends to achieve optimal performance. -- **input** (optional): Defines the top-level inputs of the inference flow. This field is required only when the pipeline includes multiple models or when at least one input is a custom type—such as in cases that require standard preprocessing like video decoding before the input data is passed to the model. -- **output** (optional): Defines the top-level outputs of the inference flow. This field is required only when the pipeline includes multiple models or when at least one output is custom type—such as in cases that require standard preprocessing like video encoding before the output data is passed out. -- **server** (optional): Defines the endpoint templates for the server implementation. This field is not required if the server type is set to "serverless". -- **routes** (optional): Defines the routing rules for the inference flow when multiple models are involved. -- **postprocessors** (optional): Defines the top-level post-processors for the inference flow. This field is required only when the pipeline includes multiple models and the output of these models need to be consolidated. - -A configuration file can be as simple as the following example: - -```yaml - -name: "detector" -model_repo: "/workspace/models" - -models: -- name: rtdetr - backend: deepstream/nvinfer - max_batch_size: 4 - input: - - name: media_url - data_type: TYPE_CUSTOM_DS_MEDIA_URL - dims: [ -1 ] - - name: mime - data_type: TYPE_CUSTOM_DS_MIME - dims: [ -1 ] - output: - - name: output - data_type: TYPE_CUSTOM_DS_METADATA - dims: [ -1 ] - parameters: - infer_config_path: - - nvdsinfer_config.yaml -``` - -With the above configuration file, you can generate inference code for the RT-DETR object detection model using the DeepStream backend, which takes image or video url as input and produces bounding boxes as output. (Step by step guide can be found in the [detection README](./builder/samples/ds_app/detection/README.md)) - -Breakdown of the configuration: - -- The inference package is named `detector`, and the model search path is set to `/workspace/models`. The pipeline uses one model and will look for the model file (in this case, an ONNX file and a yaml config for Deepstream) under the `rtdetr` directory under `/workspace/models`, as specified by the model name and model_repo. -- Inference is performed using nvinfer from the NVIDIA DeepStream SDK. A corresponding configuration file named `nvdsinfer_config.yaml` must be present under `/workspace/models/rtdetr`. -- The pipeline supports two inputs: - - media_url: the path or URL to the input media. - - mime: the media type (e.g., "video/mp4" or "image/jpeg"). -- The pipeline supports batch processing with up to 4 media items at a time as indicated by max_batch_size, and the number can be adjusted to suit the capabilities of the hardware platform and the requirements of the model. -- The output is a custom DeepStream metadata dictionary (`TYPE_CUSTOM_DS_METADATA`), which carries per-frame information such as detected bounding boxes, confidence scores, labels, segmentation maps, tracking IDs, and timestamps. The structure is flexible and returned as a dictionary with fields like `shape`, `bboxes`, `probs`, `labels`, `seg_maps`, `objects`, and `timestamp`. For complete structure details, see the [DeepStream-Specific Types section in schemas/README.md](../schemas/README.md#type_custom_ds_metadata). - -### Input and Output Definition - -Input and output definitions are required at the model level, and in some cases also at the top level of the pipeline. Each definition specifies the name, data type, dimensions, and optional flags for tensors flowing through the pipeline. - -For complete documentation on input/output specifications, supported data types (including custom types like TYPE_CUSTOM_IMAGE_BASE64, TYPE_CUSTOM_LONG_VIDEO_ASSETS, etc.), and field descriptions, see the [Data Types section in schemas/README.md](../schemas/README.md#data-types). - -### Model Definition - -The model definition specifies the inference backend, input/output tensors, batch size, and optional preprocessors/postprocessors. The definition is derived from the Triton model configuration and extended to support various backends including DeepStream, TensorRT, TensorRT-LLM, vLLM, and others. - -For complete documentation on model specifications, including: -- Supported backend types and their hierarchical structure (e.g., `deepstream/nvinfer`, `triton/tensorrt`, `tensorrtllm/pytorch`, `vllm`) -- Backend-specific parameters and configuration options -- Input/output tensor definitions -- Preprocessor and postprocessor specifications - -See the [Backend-Specific Schemas section in schemas/README.md](../schemas/README.md#backend-specific-schemas). - - -### Custom Preprocessors and Postprocessors - -Custom preprocessors and postprocessors integrate user-defined Python code into the inference flow, offering a new paradigm for programming with neural network models. - -Both custom preprocessors and postprocessors are defined using the following specification: -- **kind**: The kind of the processor: "custom" or "auto". Only "custom" processors are supported in the current release. -- **name**: The name of the processor. It must match the "name" defined in the user-implemented processor class. -- **input**: Specifies the names of the processor's inputs in order. This defines how tensors from the inference flow are passed to the processor. -- **output**: Specifies the names of the processor's outputs in order. This defines how the inference flow extracts the tensors from the processor. -- **config**: Defines the processor's configuration as a dictionary. The contents are implementation-specific. - -For a list of common preprocessors (image normalizers, tokenizers, VLM loaders) and postprocessors (masking, embedding processors) with their configurations, see the [Preprocessors and Postprocessors section in schemas/README.md](../schemas/README.md#preprocessors-and-postprocessors). - -#### Custom Preprocessor/Postprocessor Implementation Requirements - -When implementing a custom preprocessor or postprocessor, the class must adhere to the following specification: -- A class variable named `"name"` must be defined to uniquely identify the processor. -- An `__init__` method must be implemented to accept a single argument: a dictionary containing the processor's configuration (`config`). -- A `__call__` method must be defined to accept multiple positional arguments. The number and order of these arguments must match the input definition of the processor in the configuration file. -- The `__call__` method must return a tuple of tensors, in the order specified by the output definition of the processor in the configuration file. -- Input and output data are expected to be either NumPy arrays or PyTorch tensors, unless a custom data type is explicitly specified. - -### Server Definition - -The server definition is required at the top level unless the server type is set to "serverless". It specifies the server implementation along with the corresponding request and response templates. Both templates must be written in Jinja2, and are used to: -- Extract the necessary inputs from the server request. -- Format the inference outputs into the desired server response. - -The "responders" section allows users to map server implementations to operations defined in the OpenAPI specification. Each responder corresponds to a specific endpoint or operation. -For detailed information about responders, operations, and examples, see the [Server Configuration section in schemas/README.md](../schemas/README.md#server-configuration). - -### Routing - -The routes section is optional and typically used for multi-model inference flows. It defines custom routing rules that control how data flows between different models in the pipeline. - -The routes definition is a map where each entry specifies a connection between a source and destination: -- Format: `: : :` -- If the model name is omitted (e.g., `:`), the tensors are at the top level of the inference flow. -- Tensor lists are optional and specified as JSON arrays (e.g., `["tensor1", "tensor2"]`). - -For detailed examples and explanation of routing logic, see the [Routes section in schemas/README.md](../schemas/README.md#routes). - -## Runtime Environment Variables - -The following environment variables can be used to control runtime behavior of the generated inference pipelines. - -### Logging & Debugging - -| Variable | Default | Description | -|----------|---------|-------------| -| `DEBUG` | `0` | Enable debug mode (sets log level to DEBUG when non-zero) | -| `LOG_LEVEL` | `INFO` | Log verbosity level: `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` | - -### Inference Performance - -| Variable | Default | Description | -|----------|---------|-------------| -| `N_CODEC_INSTANCES` | `1` | Number of video codec instances for parallel decoding. Increase for higher throughput when processing multiple video streams. | -| `MAX_BATCH_SIZE` | `16` | Maximum batch size for live stream frame collection. Controls memory usage vs throughput trade-off. | - -### Server Configuration - -| Variable | Default | Description | -|----------|---------|-------------| -| `HTTP_PORT` | `8000` | HTTP port for FastAPI server when using `fastapi` server type. | - -### Testing & Validation - -| Variable | Default | Description | -|----------|---------|-------------| -| `TEST_HOST` | `http://127.0.0.1:8800` | Target host URL for the test runner to connect to. | -| `TEST_TOLERANCE` | `1e-5` | Numerical tolerance for floating-point comparisons in test assertions. | -| `ERROR_EXPORT_PATH` | `/tmp/inference_errors.json` | File path to export collected errors for test validation and debugging. | - -### Dynamic Configuration Override - -The generated configuration module (`config.py`) supports dynamic environment variable substitution using the pattern `$ENV_VAR|default_value`. This allows any configuration value to be overridden at runtime. - -**Format:** `$VARIABLE_NAME|default_value` - -**Example configuration:** -```yaml -models: -- name: my_model - parameters: - batch_size: $MODEL_BATCH_SIZE|8 - precision: $MODEL_PRECISION|fp16 -``` - -In this example: -- `batch_size` will use the value of `MODEL_BATCH_SIZE` environment variable if set, otherwise defaults to `8` -- `precision` will use `MODEL_PRECISION` if set, otherwise defaults to `fp16` - -Type conversion is automatic based on the default value: -- `"true"`/`"false"` → boolean -- Numeric strings → int or float -- Everything else → string \ No newline at end of file diff --git a/tools/inference_builder/lib/__init__.py b/tools/inference_builder/lib/__init__.py deleted file mode 100644 index 3159bfe6..00000000 --- a/tools/inference_builder/lib/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/tools/inference_builder/lib/asset_manager.py b/tools/inference_builder/lib/asset_manager.py deleted file mode 100644 index 38ee5957..00000000 --- a/tools/inference_builder/lib/asset_manager.py +++ /dev/null @@ -1,363 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -from .utils import get_logger -import os -from dataclasses import dataclass, field -from typing import Dict, TYPE_CHECKING -import json -import uuid -import shutil - -if TYPE_CHECKING: - from fastapi import UploadFile -from pyservicemaker.utils import MediaInfo -import tempfile -from urllib.parse import urlparse -import threading - -logger = get_logger(__name__) - -DEFAULT_ASSET_DIR = "/tmp/assets" -@dataclass -class Asset: - id: str - file_name: str - mime_type: str - size: int - duration: int - path: str - use_count: int - asset_dir: str - description: str - username: str - password: str - live: bool - managed: bool - _lock: threading.Lock = field(init=False, repr=False, compare=False, default=None) - _condition: threading.Condition = field(init=False, repr=False, compare=False, default=None) - _marked_for_deletion: bool = field(init=False, repr=False, compare=False, default=False) - - def __post_init__(self): - self._lock = threading.Lock() - self._condition = threading.Condition(self._lock) - self._marked_for_deletion = False - - def to_dict(self): - """Convert Asset to dictionary, excluding non-serializable fields.""" - return { - "id": self.id, - "file_name": self.file_name, - "mime_type": self.mime_type, - "size": self.size, - "duration": self.duration, - "path": self.path, - "use_count": self.use_count, - "asset_dir": self.asset_dir, - "description": self.description, - "username": self.username, - "password": self.password, - "live": self.live, - "managed": self.managed - } - - def lock(self): - with self._condition: - self.use_count += 1 - - def unlock(self): - with self._condition: - if self.use_count <= 0: - logger.warning("Attempted to unlock asset %s with use_count %d", - self.id, self.use_count) - return - self.use_count -= 1 - if self.use_count == 0: - # Notify waiting threads (e.g., delete_asset) - self._condition.notify_all() - - # Safety net: cleanup unmanaged assets when object is destroyed - if not self.managed and os.path.exists(self.path): - try: - os.remove(self.path) - logger.info("Removed unmanaged asset %s from %s", - self.id, self.path) - except OSError as e: - logger.exception( - "Failed to cleanup asset %s: %s", self.id, e) - - def is_marked_for_deletion(self): - """Check if this asset is marked for deletion.""" - with self._condition: - return self._marked_for_deletion - - def mark_for_deletion(self): - """Mark this asset for deletion, signaling processing loops to stop.""" - with self._condition: - self._marked_for_deletion = True - logger.info("Marked asset %s for deletion", self.id) - - @classmethod - def fromdir(cls, asset_dir): - with open(os.path.join(asset_dir, "info.json")) as f: - info = json.load(f) - - return Asset(id=info["assetId"], - path=info["path"], - file_name=info["fileName"], - mime_type=info["mimeType"], - duration=info["duration"], - username=info["username"], - password=info["password"], - description=info["description"], - asset_dir=asset_dir, - use_count=0, - size=info["size"], - live=info["live"], - managed=True) - - -class AssetManager: - _instance = None - - def __new__(cls): - if cls._instance is None: - cls._instance = super(AssetManager, cls).__new__(cls) - cls._instance._initialized = False - return cls._instance - - def __init__(self): - if self._initialized: - return - - self._asset_dir = DEFAULT_ASSET_DIR - self._asset_map:Dict[str, Asset] = dict() - os.makedirs(self._asset_dir, exist_ok=True) - asset_ids = self._get_existing_asset_ids() - self._asset_map: dict[str, Asset] = { - asset_id: Asset.fromdir(os.path.join(self._asset_dir, asset_id)) - for asset_id in asset_ids - } - self._initialized = True - - def save_file(self, file: "UploadFile", file_name: str, mime_type: str) -> Asset | None: - asset_id = str(uuid.uuid4()) - while asset_id in self._asset_map: - asset_id = str(uuid.uuid4()) - asset_dir = os.path.join(self._asset_dir, asset_id) - try: - os.makedirs(asset_dir) - except: - logger.error(f"Failed to create asset directory: {asset_dir}") - return None - - with open(os.path.join(asset_dir, file_name), "wb") as f: - shutil.copyfileobj(file, f) - try: - size = os.path.getsize(os.path.join(asset_dir, file_name)) - except: - size = 0 - mediainfo = MediaInfo.discover(os.path.join(asset_dir, file_name)) - - with open(os.path.join(asset_dir, "info.json"), "w") as f: - json.dump( - { - "assetId": asset_id, - "path": os.path.join(asset_dir, file_name), - "fileName": file_name, - "mimeType": mime_type, - "duration": mediainfo.duration, - "username": "", - "password": "", - "description": "", - "size": size, - "live": False, - }, f) - - self._asset_map[asset_id] = Asset.fromdir(asset_dir) - - logger.info(f"Saved file - asset-id: {asset_id} name: {file_name}") - - return self._asset_map[asset_id] - - def add_live_stream(self, url: str, description="", username="", password="") -> Asset | None: - asset_id = str(uuid.uuid4()) - while asset_id in self._asset_map: - asset_id = str(uuid.uuid4()) - asset_dir = os.path.join(self._asset_dir, asset_id) - try: - os.makedirs(asset_dir) - except Exception as e: - logger.error(f"Failed to create asset directory: {asset_dir}") - return None - - with open(os.path.join(asset_dir, "info.json"), "w") as f: - json.dump( - { - "assetId": asset_id, - "path": url, - "fileName": "", - "mimeType": "", - "duration": 0, - "username": username, - "password": password, - "description": description, - "size": 0, - "live": True - }, f) - - self._asset_map[asset_id] = Asset.fromdir(asset_dir) - - logger.info(f"Added live stream - asset-id: {asset_id} url: {url}") - - return self._asset_map[asset_id] - - - def list_assets(self): - return list(self._asset_map.values()) - - def get_asset(self, asset_id): - if asset_id in self._asset_map: - return self._asset_map[asset_id] - else: - # check if the asset is an id or a path - # Handle file:// URIs by converting them to paths - file_path = asset_id - if asset_id.startswith("file://"): - parsed = urlparse(asset_id) - file_path = parsed.path - - if file_path.startswith("/") and os.path.exists(file_path): - # Check if this path already exists in the asset map - for existing_asset in self._asset_map.values(): - if existing_asset.path == file_path: - return existing_asset - - mediainfo = MediaInfo.discover(file_path) - asset = Asset(id=str(uuid.uuid4()), - path=file_path, - file_name=os.path.basename(file_path), - mime_type="", - duration=mediainfo.duration, - username="", - password="", - description="", - asset_dir=file_path, - use_count=0, - size=os.path.getsize(file_path), - live=False, - managed=True) - self._asset_map[asset.id] = asset - return asset - elif (asset_id.startswith("http://") or - asset_id.startswith("https://")): - # Download the video from the web - try: - # Extract filename from URL - parsed_url = urlparse(asset_id) - file_name = os.path.basename(parsed_url.path) - if not file_name: - file_name = "downloaded_video" - - # Create a temporary directory - temp_dir = tempfile.mkdtemp(prefix="web_asset_") - temp_file_path = os.path.join(temp_dir, file_name) - - # Download the file - logger.info(f"Downloading video from {asset_id}") - import requests # lazy import to avoid GIL error - response = requests.get( - asset_id, stream=True, timeout=30) - response.raise_for_status() - - with open(temp_file_path, "wb") as f: - for chunk in response.iter_content(chunk_size=8192): - f.write(chunk) - - # Get media info - mediainfo = MediaInfo.discover(temp_file_path) - file_size = os.path.getsize(temp_file_path) - - logger.info(f"Downloaded video to {temp_file_path}") - - return Asset(id=str(uuid.uuid4()), - path=temp_file_path, - file_name=file_name, - mime_type="", - duration=mediainfo.duration, - username="", - password="", - description=f"Downloaded from {asset_id}", - asset_dir=temp_dir, - use_count=0, - size=file_size, - live=False, - managed=False) - except Exception as e: - logger.exception( - "Failed to download video from %s: %s", asset_id, e) - return None - elif asset_id.startswith("rtsp://"): - return self.add_live_stream(asset_id) - else: - logger.error(f"Invalid asset ID: {asset_id}") - return None - - def delete_asset(self, asset_id, timeout=None): - """ - Delete an asset, waiting for it to be released if currently in use. - - Args: - asset_id: The ID of the asset to delete - timeout: Maximum time to wait in seconds (None for indefinite wait) - - Returns: - bool: True if asset was deleted, False if asset not found or timeout occurred - """ - if asset_id not in self._asset_map: - return False - - asset = self._asset_map[asset_id] - - # Mark asset for deletion first (signals processing loops to stop) - logger.info(f"Marking asset {asset_id} for deletion") - asset.mark_for_deletion() - logger.info(f"Marked asset {asset_id} for deletion") - - # Wait for asset to be released - with asset._condition: - if asset.use_count > 0: - logger.info(f"Asset {asset_id} is in use (use_count={asset.use_count}), waiting for release...") - # Wait until use_count becomes 0 - if not asset._condition.wait_for(lambda: asset.use_count == 0, timeout=timeout): - logger.error(f"Timeout waiting for asset {asset_id} to be released") - return False - logger.info(f"Asset {asset_id} released, proceeding with deletion") - - # Now safe to delete - asset_dir = os.path.join(self._asset_dir, asset_id) - if os.path.exists(asset_dir): - shutil.rmtree(asset_dir) - self._asset_map.pop(asset_id) - logger.info(f"Removed asset {asset_id} and cleaned up associated resources") - return True - - def _get_existing_asset_ids(self): - entries = os.listdir(self._asset_dir) - return [ - entry for entry in entries if os.path.isdir(os.path.join(self._asset_dir, entry)) - and os.path.isfile(os.path.join(self._asset_dir, entry, "info.json")) - ] diff --git a/tools/inference_builder/lib/codec.py b/tools/inference_builder/lib/codec.py deleted file mode 100644 index e46e4659..00000000 --- a/tools/inference_builder/lib/codec.py +++ /dev/null @@ -1,100 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -from pyservicemaker import BufferProvider, Buffer, Pipeline, Flow, BufferRetriever, as_tensor, ColorFormat -from queue import Queue, Empty, Full -import numpy as np -from .utils import get_logger -from typing import List -import base64 -import torch - -logger = get_logger(__name__) - -png_data = base64.b64decode("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAEElEQVR4nGK6HcwNCAAA//8DTgE8HuxwEQAAAABJRU5ErkJggg==") -jpg_data = base64.b64decode("/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigAooooAKKKKACiiigD/2Q==") - - -class ImageInput(BufferProvider): - DEFAULT_HEIGHT = 1080 - DEFAULT_WIDTH = 1920 - - def __init__(self, format): - super().__init__() - self.format = format - self.height = ImageInput.DEFAULT_HEIGHT - self.width = ImageInput.DEFAULT_WIDTH - self.framerate = 1 - self.device = 'cpu' - self.queue = Queue(maxsize=1) - - def generate(self, size): - tensor = self.queue.get() - return tensor.wrap(ColorFormat.I420) - - def send(self, data): - self.queue.put(data) - -class ImageOutput(BufferRetriever): - def __init__(self, max_queue_size: int=1): - super().__init__() - self._timeout = 10 - self._output = Queue(maxsize=max_queue_size) - - def consume(self, buffer): - try: - tensor = buffer.extract(0).clone() - torch_tensor = torch.utils.dlpack.from_dlpack(tensor) - self._output.put(torch_tensor) - except Full: - logger.error(f"ImageOutput queue is full, buffer dropped") - return 1 - - def get(self): - try: - data = self._output.get(timeout=self._timeout) - except Empty: - logger.error("ImageOutput timeout, failed to decode the image, input data may be corrupted") - return None - return data - - -class ImageDecoder: - def __init__(self, formats: List[str], device_id: int=0): - self._piplines = [Pipeline(f"image_decoder_{format}") for format in formats] - self._image_inputs = {format: ImageInput(format) for format in formats} - self._image_output = ImageOutput() - self._flows = [] - for pipline, format in zip(self._piplines, formats): - image_input = self._image_inputs[format] - flow = Flow(pipline).inject([image_input]).decode().retrieve(self._image_output, gpu_id=device_id) - self._flows.append(flow) - pipline.start() - - if "PNG" in formats: - logger.info("PNG decoder warmup:") - warmup_data = np.frombuffer(png_data, dtype=np.uint8) - self.decode(as_tensor(warmup_data.copy(), "PNG"), "PNG") - if "JPEG" in formats: - logger.info("JPEG decoder warmup:") - warmup_data = np.frombuffer(jpg_data, dtype=np.uint8) - self.decode(as_tensor(warmup_data.copy(), "JPEG"), "JPEG") - logger.info("Image decoder initialized") - - - def decode(self, tensor, format: str): - self._image_inputs[format].send(tensor) - return self._image_output.get() diff --git a/tools/inference_builder/lib/errors.py b/tools/inference_builder/lib/errors.py deleted file mode 100644 index cc4c37a8..00000000 --- a/tools/inference_builder/lib/errors.py +++ /dev/null @@ -1,1163 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Enhanced Error Handling Module for Inference Builder - -This module provides rich error context, categorization, and troubleshooting guidance -to make debugging easier for both humans and AI tools. -""" - -import traceback -import time -import uuid -import json -import threading -import inspect -import os -from dataclasses import dataclass, field, asdict -from typing import ClassVar, Dict, List, Optional, Any, Union -from enum import Enum -import numpy as np - -# Try to import torch, but make it optional -try: - import torch - TORCH_AVAILABLE = True -except ImportError: - TORCH_AVAILABLE = False - - -class ErrorCategory(Enum): - """Categorize errors for easier filtering and analysis""" - CONFIGURATION = "configuration" - DATA_VALIDATION = "data_validation" - ASSET_NOT_FOUND = "asset_not_found" - PROCESSING = "processing" - BACKEND = "backend" - TIMEOUT = "timeout" - RESOURCE = "resource" - NETWORK = "network" - INTERNAL = "internal" - CODEC = "codec" - QUEUE = "queue" - - -class ErrorSeverity(Enum): - """Error severity levels""" - CRITICAL = "critical" # Service-breaking - ERROR = "error" # Request-breaking - WARNING = "warning" # Degraded but continuing - INFO = "info" # Informational only - - -@dataclass -class Error: - """ - Base Error class for simple error messages. - - This is the base class that EnhancedError inherits from. - Use this for simple errors that don't need rich context. - Use EnhancedError (via ErrorFactory) for structured errors with full context. - """ - message: str - - def __bool__(self): - """Return False so error objects evaluate to False in boolean context""" - return False - - def __str__(self): - """Human-readable string representation""" - return self.message - - -@dataclass -class EnhancedError(Error): - """ - Enhanced error class with rich context for AI-powered troubleshooting - - This class provides comprehensive error information including: - - Categorization and severity - - Contextual information (component, operation, model) - - Technical details (stack traces, error codes) - - Data context (inputs, expected vs actual) - - Troubleshooting guidance and remediation steps - - Error chaining for root cause analysis - - Inherits from Error base class, which provides: - - message field - - __bool__() override (returns False for boolean checks) - """ - - # Core error information (message inherited from Error) - category: ErrorCategory - severity: ErrorSeverity = ErrorSeverity.ERROR - - # Contextual information - component: str = "" # e.g., "DataFlow", "ModelOperator", "ImageInputDataFlow" - operation: str = "" # e.g., "bind_input", "_process_custom_data" - request_id: str = field(default_factory=lambda: str(uuid.uuid4())) - timestamp: float = field(default_factory=time.time) - - # Technical details - error_code: str = "" # e.g., "ERR_DF_001", "ERR_MO_005" - stack_trace: Optional[str] = None - exception_type: Optional[str] = None - - # Data context - input_data: Dict[str, Any] = field(default_factory=dict) - expected_data: Dict[str, Any] = field(default_factory=dict) - actual_data: Dict[str, Any] = field(default_factory=dict) - - # Pipeline context - model_name: Optional[str] = None - dataflow_names: List[str] = field(default_factory=list) - tensor_names: List[str] = field(default_factory=list) - - # Troubleshooting guidance - troubleshooting_hints: List[str] = field(default_factory=list) - related_config: Dict[str, Any] = field(default_factory=dict) - remediation_steps: List[str] = field(default_factory=list) - - # Error chain for root cause analysis - caused_by: Optional['EnhancedError'] = None - - # Additional metadata - metadata: Dict[str, Any] = field(default_factory=dict) - - def __str__(self): - """Human-readable string representation""" - parts = [f"[{self.error_code or 'ERROR'}]"] - if self.component: - parts.append(f"{self.component}") - if self.operation: - parts.append(f".{self.operation}()") - parts.append(f": {self.message}") - return " ".join(parts) - - def to_dict(self, include_stack_trace: bool = True, sanitize_data: bool = True) -> Dict: - """ - Convert to dictionary for structured logging - - Args: - include_stack_trace: Whether to include full stack trace (can be verbose) - sanitize_data: Whether to sanitize large data structures - - Returns: - Dictionary representation suitable for JSON serialization - """ - result = { - "error_id": self.request_id, - "timestamp": self.timestamp, - "iso_timestamp": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(self.timestamp)), - "category": self.category.value, - "severity": self.severity.value, - "component": self.component, - "operation": self.operation, - "message": self.message, - "error_code": self.error_code, - "exception_type": self.exception_type, - } - - if include_stack_trace and self.stack_trace: - result["stack_trace"] = self.stack_trace - - # Add data context - if sanitize_data: - result["input_data"] = self._sanitize_data(self.input_data) - result["actual_data"] = self._sanitize_data(self.actual_data) - else: - result["input_data"] = self.input_data - result["actual_data"] = self.actual_data - - result["expected_data"] = self.expected_data - - # Add pipeline context - if self.model_name: - result["model_name"] = self.model_name - if self.dataflow_names: - result["dataflow_names"] = self.dataflow_names - if self.tensor_names: - result["tensor_names"] = self.tensor_names - - # Add troubleshooting information - if self.troubleshooting_hints: - result["troubleshooting_hints"] = self.troubleshooting_hints - if self.remediation_steps: - result["remediation_steps"] = self.remediation_steps - if self.related_config: - result["related_config"] = self._sanitize_config(self.related_config) - - # Add metadata - if self.metadata: - result["metadata"] = self.metadata - - # Add error chain - if self.caused_by: - result["caused_by"] = self.caused_by.to_dict( - include_stack_trace=False, # Don't include nested stack traces - sanitize_data=sanitize_data - ) - - return result - - def _sanitize_data(self, data: Dict) -> Dict: - """Sanitize large tensors/arrays for logging""" - if not data: - return {} - - sanitized = {} - for k, v in data.items(): - try: - if isinstance(v, np.ndarray): - sanitized[k] = { - "type": "numpy.ndarray", - "shape": str(v.shape), - "dtype": str(v.dtype), - "sample": self._safe_sample(v) - } - elif TORCH_AVAILABLE and isinstance(v, torch.Tensor): - sanitized[k] = { - "type": "torch.Tensor", - "shape": str(list(v.shape)), - "dtype": str(v.dtype), - "device": str(v.device), - "sample": self._safe_sample(v.cpu().numpy() if v.is_cuda else v.numpy()) - } - elif isinstance(v, (list, tuple)): - if len(v) > 10: - sanitized[k] = { - "type": type(v).__name__, - "length": len(v), - "sample": str(v[:3]) + " ... " + str(v[-1:]) - } - else: - sanitized[k] = v - elif isinstance(v, dict): - sanitized[k] = self._sanitize_data(v) - elif isinstance(v, str) and len(v) > 500: - sanitized[k] = v[:500] + "... [truncated]" - else: - sanitized[k] = v - except Exception as e: - sanitized[k] = f"" - - return sanitized - - def _safe_sample(self, arr: np.ndarray, max_elements: int = 5) -> str: - """Get a safe sample from array""" - try: - flat = arr.flatten() - if len(flat) <= max_elements: - return str(flat.tolist()) - else: - sample = flat[:max_elements].tolist() - return f"{sample} ... (total: {len(flat)} elements)" - except Exception: - return "" - - def _sanitize_config(self, config: Dict) -> Dict: - """Sanitize configuration data""" - if not config: - return {} - - sanitized = {} - for k, v in config.items(): - if isinstance(v, dict): - sanitized[k] = self._sanitize_config(v) - elif isinstance(v, (list, tuple)) and len(v) > 20: - sanitized[k] = f"{type(v).__name__}(length={len(v)})" - else: - sanitized[k] = v - return sanitized - - def to_json(self, **kwargs) -> str: - """Convert to JSON string""" - return json.dumps(self.to_dict(**kwargs), indent=2, default=str) - - def log(self, logger, as_json: bool = True): - """ - Log error with appropriate level - - Args: - logger: Logger instance - as_json: If True, log as structured JSON; otherwise log as formatted text - """ - if as_json: - error_dict = self.to_dict() - log_msg = json.dumps(error_dict, indent=2, default=str) - else: - log_msg = self._format_text() - - if self.severity == ErrorSeverity.CRITICAL: - logger.critical(log_msg) - elif self.severity == ErrorSeverity.ERROR: - logger.error(log_msg) - elif self.severity == ErrorSeverity.WARNING: - logger.warning(log_msg) - else: - logger.info(log_msg) - - def _format_text(self) -> str: - """Format error as human-readable text""" - lines = [ - "=" * 80, - f"ERROR: {self.error_code or 'UNKNOWN'}", - f"Severity: {self.severity.value.upper()}", - f"Category: {self.category.value}", - "=" * 80, - f"Message: {self.message}", - ] - - if self.component or self.operation: - lines.append(f"Location: {self.component}.{self.operation}()") - - if self.model_name: - lines.append(f"Model: {self.model_name}") - - if self.dataflow_names: - lines.append(f"Dataflow: {', '.join(self.dataflow_names)}") - - if self.tensor_names: - lines.append(f"Tensors: {', '.join(self.tensor_names)}") - - if self.exception_type: - lines.append(f"Exception Type: {self.exception_type}") - - if self.input_data: - sanitized_input = self._sanitize_data(self.input_data) - lines.append(f"\nInput Data: {sanitized_input}") - - if self.expected_data: - lines.append(f"\nExpected Data: {self.expected_data}") - - if self.actual_data: - sanitized_actual = self._sanitize_data(self.actual_data) - lines.append(f"\nActual Data: {sanitized_actual}") - - if self.related_config: - lines.append(f"\nRelated Config: {self.related_config}") - - if self.troubleshooting_hints: - lines.append("\nTroubleshooting Hints:") - for i, hint in enumerate(self.troubleshooting_hints, 1): - lines.append(f" {i}. {hint}") - - if self.remediation_steps: - lines.append("\nRemediation Steps:") - for i, step in enumerate(self.remediation_steps, 1): - lines.append(f" {i}. {step}") - - if self.stack_trace: - lines.append("\nStack Trace:") - lines.append(self.stack_trace) - - if self.caused_by: - lines.append("\nCaused by:") - lines.append(f" {self.caused_by}") - - lines.append("=" * 80) - - return "\n".join(lines) - - -class ErrorFactory: - """ - Factory for creating standardized errors with consistent codes and hints - - This factory maintains an error catalog with predefined error codes, categories, - and troubleshooting guidance. It ensures consistent error handling across the codebase. - - The factory can automatically extract component and operation names from context: - - Pass `caller=self` to auto-extract class name as component - - Pass `auto_operation=True` to auto-detect calling method name - """ - - # Error code definitions with troubleshooting hints - ERROR_CATALOG: ClassVar[Dict[str, Dict[str, Any]]] = { - # DataFlow errors (DF) - "ERR_DF_001": { - "message": "Required tensor not found in dataflow input", - "category": ErrorCategory.DATA_VALIDATION, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Check that all required input tensors are provided", - "Verify the tensor names match the configuration", - "Consider marking the tensor as optional if it's not always needed", - "Review the model input configuration" - ], - "remediation": [ - "Add the missing tensor to the input data", - "Update configuration to mark tensor as optional", - "Check upstream processor output", - "Verify route configuration" - ] - }, - "ERR_DF_002": { - "message": "Invalid data type in custom data processing", - "category": ErrorCategory.DATA_VALIDATION, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Ensure base64 binary data is provided as bytes or string", - "Check data encoding format", - "Verify MIME type matches data format", - "Review data type conversions" - ], - "remediation": [ - "Convert data to expected format (bytes or string)", - "Verify base64 encoding is correct", - "Check data type in request payload" - ] - }, - "ERR_DF_003": { - "message": "Asset not found", - "category": ErrorCategory.ASSET_NOT_FOUND, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Verify asset ID exists in AssetManager", - "Check if asset was properly uploaded/registered", - "Ensure asset hasn't been deleted or expired", - "Verify asset path and permissions" - ], - "remediation": [ - "Upload the asset before referencing it", - "Check asset ID spelling/format", - "Verify asset lifecycle management", - "Check AssetManager logs for registration issues" - ] - }, - "ERR_DF_004": { - "message": "Multiple result queues not supported in single dataflow", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Restructure dataflow to have single queue output", - "Split into multiple dataflows if needed" - ], - "remediation": [ - "Refactor to use single queue per dataflow", - "Create separate dataflows for multiple queues" - ] - }, - "ERR_DF_005": { - "message": "Queue full, dropping frames", - "category": ErrorCategory.QUEUE, - "severity": ErrorSeverity.WARNING, - "hints": [ - "Consumer is too slow, increase processing speed", - "Increase queue size if appropriate", - "Check for bottlenecks in pipeline" - ], - "remediation": [ - "Optimize downstream processing", - "Increase queue maxsize", - "Add backpressure handling" - ] - }, - "ERR_DF_006": { - "message": "Failed to inject tensors into input flows", - "category": ErrorCategory.DATA_VALIDATION, - "severity": ErrorSeverity.ERROR, - "hints": [ - "No matching input tensors found in the request" - ], - "remediation": [ - "Provide at least one valid tensor in the request", - "Check input tensor names against model configuration", - "Verify request payload format", - "Review input flow configuration" - ] - }, - - # Model Operator errors (MO) - "ERR_MO_001": { - "message": "Empty result from preprocessing", - "category": ErrorCategory.PROCESSING, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Check preprocessor logic and return values", - "Verify input data is valid", - "Review preprocessor configuration", - "Ensure preprocessor returns non-empty data" - ], - "remediation": [ - "Debug preprocessor implementation", - "Verify input data format", - "Check preprocessor output configuration", - "Review preprocessing chain" - ] - }, - "ERR_MO_002": { - "message": "Model output incomplete", - "category": ErrorCategory.PROCESSING, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Verify model generates all required outputs", - "Check if postprocessor is needed", - "Review model configuration", - "Ensure all output tensors are generated" - ], - "remediation": [ - "Add missing output tensors", - "Implement required postprocessor", - "Update model output configuration", - "Check model implementation" - ] - }, - "ERR_MO_003": { - "message": "No output dataflow bound to model", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Check route configuration", - "Ensure model output is connected to downstream", - "Review pipeline setup" - ], - "remediation": [ - "Add output binding in route configuration", - "Connect model to output dataflow", - "Review inference pipeline setup" - ] - }, - "ERR_MO_004": { - "message": "Invalid result from preprocessing", - "category": ErrorCategory.PROCESSING, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Preprocessor must return valid data structure", - "Check for errors in preprocessing chain", - "Verify data format compatibility" - ] - }, - - # Processor errors (PROC) - "ERR_PROC_001": { - "message": "Processor output count mismatch", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.WARNING, - "hints": [ - "Verify processor returns correct number of outputs", - "Check processor configuration matches implementation", - "Review processor output specification in the configuration", - "Ensure output list length matches config" - ], - "remediation": [ - "Update processor to return correct number of outputs", - "Fix processor configuration", - "Review processor implementation" - ] - }, - "ERR_PROC_002": { - "message": "Failed to load AutoProcessor", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Verify model home path is correct", - "Check if model supports AutoProcessor", - "Ensure transformers library is installed", - "Verify model files are present" - ], - "remediation": [ - "Check model_home path", - "Download model files", - "Use custom processor instead", - "Install required dependencies" - ] - }, - "ERR_PROC_003": { - "message": "Custom processor module invalid", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Custom module must have create_instance() method", - "Check custom processor implementation", - "Verify module imports correctly" - ], - "remediation": [ - "Implement create_instance() in custom module", - "Fix custom processor module", - "Check module path and imports" - ] - }, - "ERR_PROC_004": { - "message": "Failed to create custom processor", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Check processor configuration", - "Verify processor class exists", - "Verify the processor name in the configuration matches the name in the processor class" - ] - }, - - # Image processing errors (IMG) - "ERR_IMG_001": { - "message": "Unsupported image format", - "category": ErrorCategory.DATA_VALIDATION, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Supported formats: JPEG, PNG", - "Check MIME type of uploaded image", - "Convert image to supported format", - "Verify image encoding" - ], - "remediation": [ - "Convert image to JPEG or PNG", - "Check image MIME type", - "Re-encode image in supported format" - ] - }, - "ERR_IMG_002": { - "message": "Invalid base64 image data", - "category": ErrorCategory.DATA_VALIDATION, - "severity": ErrorSeverity.ERROR, - "hints": [ - "Base64 image must be bytes or string", - "Check data encoding", - "Verify base64 format: data:image/[type];base64,[data]" - ], - "remediation": [ - "Encode image as valid base64 string", - "Check data URL format", - "Verify data type (bytes/string)" - ] - }, - "ERR_IMG_003": { - "message": "Image decoder not initialized", - "category": ErrorCategory.INTERNAL, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Image decoder failed to initialize", - "Check codec dependencies", - "Verify system libraries" - ] - }, - - # Video processing errors (VIDEO) - "ERR_VIDEO_001": { - "message": "Invalid video frame sampling parameters", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.WARNING, - "hints": [ - "Frames or chunks parameters differ across assets", - "Ensure consistent parameters for batch processing", - "Review asset query parameters" - ] - }, - - # Route configuration errors (ROUTE) - "ERR_ROUTE_001": { - "message": "Invalid route configuration", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Check route format: 'model:[tensor, ...]' -> 'model:[tensor, ...]'", - "Verify JSON syntax in data specifications", - "Review route configuration documentation" - ], - "remediation": [ - "Fix route configuration format", - "Validate JSON in route data", - "Review routing examples" - ] - }, - "ERR_ROUTE_002": { - "message": "Model not found in route configuration", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Model referenced in route doesn't exist", - "Check model name spelling", - "Verify model is defined in configuration" - ], - "remediation": [ - "Add model to configuration", - "Fix model name in route", - "Review model definitions" - ] - }, - - # AsyncDispatcher errors (ASYNC) - "ERR_ASYNC_001": { - "message": "AsyncDispatcher failed to start - collector is None", - "category": ErrorCategory.INTERNAL, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Collector not properly initialized", - "Check pipeline setup", - "Review initialization order" - ] - }, - "ERR_ASYNC_002": { - "message": "AsyncDispatcher failed to start - event loop is None", - "category": ErrorCategory.INTERNAL, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Event loop not properly initialized", - "Check async setup", - "Review initialization order" - ] - }, - "ERR_ASYNC_003": { - "message": "Consumer queue reached maximum size", - "category": ErrorCategory.QUEUE, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Too many concurrent requests", - "Increase queue size", - "Add rate limiting", - "Check consumer processing speed" - ], - "remediation": [ - "Increase n_max_async_queues parameter", - "Implement request throttling", - "Optimize consumer processing" - ] - }, - - # System errors (SYS) - "ERR_SYS_001": { - "message": "Model repository does not exist", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Check model_repo path in configuration", - "Verify directory exists and is accessible", - "Check file permissions" - ], - "remediation": [ - "Create the model repository directory and correctly mount it into the container.", - "Fix model_repo path in configuration", - "Check directory permissions" - ] - }, - "ERR_SYS_002": { - "message": "Inference pipeline incomplete", - "category": ErrorCategory.CONFIGURATION, - "severity": ErrorSeverity.CRITICAL, - "hints": [ - "Either input or output is empty", - "Check route configuration", - "Review pipeline setup" - ], - "remediation": [ - "Add input/output bindings", - "Fix route configuration", - "Review pipeline configuration" - ] - }, - } - - @classmethod - def _get_caller_info(cls, caller=None, auto_operation: bool = False): - """ - Extract component and operation names from caller context - - Args: - caller: The calling object (usually `self`). If provided, extracts class name. - auto_operation: If True, extracts the calling method name from stack - - Returns: - tuple: (component_name, operation_name) - """ - component = None - operation = None - - # Extract component from caller object - if caller is not None: - component = caller.__class__.__name__ - - # Extract operation from call stack - if auto_operation: - # Get the calling frame (skip this method and the create/from_exception method) - frame = inspect.currentframe() - try: - # Go up the stack: _get_caller_info -> create/from_exception -> actual caller - caller_frame = frame.f_back.f_back - if caller_frame: - operation = caller_frame.f_code.co_name - finally: - del frame # Avoid reference cycles - - return component, operation - - @classmethod - def create( - cls, - error_code: str, - message: Optional[str] = None, - caller: Optional[Any] = None, - auto_operation: bool = True, - **kwargs - ) -> EnhancedError: - """ - Create error from catalog with additional context - - Args: - error_code: Error code from ERROR_CATALOG - message: Custom message (overrides catalog message) - caller: The calling object (usually `self`). Auto-extracts class name as component. - auto_operation: If True, auto-detects calling method name as operation. - **kwargs: Additional context fields for EnhancedError - - Returns: - EnhancedError instance with all context - - Example: - # Automatic component/operation detection: - error = ErrorFactory.create( - "ERR_DF_001", - caller=self, # Extracts "DataFlow" from self.__class__.__name__ - auto_operation=True, # Extracts "put" from calling method - tensor_names=["image"] - ) - - # Manual specification (still supported): - error = ErrorFactory.create( - "ERR_DF_001", - component="DataFlow", - operation="put", - tensor_names=["image"] - ) - """ - # Auto-detect component and operation if requested - auto_component, auto_operation_name = cls._get_caller_info(caller, auto_operation) - - # Use auto-detected values if not explicitly provided - if auto_component and 'component' not in kwargs: - kwargs['component'] = auto_component - if auto_operation_name and 'operation' not in kwargs: - kwargs['operation'] = auto_operation_name - - if error_code not in cls.ERROR_CATALOG: - # Remove conflicting keys from kwargs - final_category = kwargs.pop('category', ErrorCategory.INTERNAL) - final_severity = kwargs.pop('severity', ErrorSeverity.ERROR) - error = EnhancedError( - message=message or f"Unknown error code: {error_code}", - category=final_category, - severity=final_severity, - error_code=error_code, - troubleshooting_hints=[ - "This error code is not in the catalog", - "Check error code spelling", - "Review error handling implementation" - ], - **kwargs - ) - # Add to global collector if enabled - cls._add_to_collector(error) - return error - - template = cls.ERROR_CATALOG[error_code] - - # Use custom message or template message - final_message = message or template["message"] - - # If custom message provided, append template message as hint - hints = list(template.get("hints", [])) - if message and message != template["message"]: - hints.insert(0, f"Base error: {template['message']}") - - # Merge catalog values with provided kwargs - # User-provided kwargs override catalog defaults - final_category = kwargs.pop('category', template.get("category", ErrorCategory.INTERNAL)) - final_severity = kwargs.pop('severity', template.get("severity", ErrorSeverity.ERROR)) - - error = EnhancedError( - message=final_message, - category=final_category, - severity=final_severity, - error_code=error_code, - troubleshooting_hints=hints, - remediation_steps=list(template.get("remediation", [])), - **kwargs - ) - # Add to global collector if enabled - cls._add_to_collector(error) - return error - - @classmethod - def _add_to_collector(cls, error: EnhancedError): - """Add error to global collector if enabled""" - global _global_error_collector - if _global_error_collector is not None: - _global_error_collector.add(error) - - @classmethod - def from_exception( - cls, - exc: Exception, - component: Optional[str] = None, - operation: Optional[str] = None, - caller: Optional[Any] = None, - auto_operation: bool = True, - error_code: Optional[str] = None, - category: ErrorCategory = ErrorCategory.INTERNAL, - severity: ErrorSeverity = ErrorSeverity.ERROR, - **kwargs - ) -> EnhancedError: - """ - Create EnhancedError from Python exception - - Args: - exc: The exception object - component: Component where error occurred (or use caller for auto-detection) - operation: Operation that failed (or use auto_operation=True) - caller: The calling object (usually `self`). Auto-extracts class name as component. - auto_operation: If True, auto-detects calling method name as operation. - error_code: Optional error code - category: Error category - severity: Error severity - **kwargs: Additional context - - Returns: - EnhancedError with exception details - - Example: - # Automatic component/operation detection: - except Exception as e: - error = ErrorFactory.from_exception( - e, - caller=self, # Extracts class name - auto_operation=True # Extracts method name - ) - - # Manual specification (still supported): - except Exception as e: - error = ErrorFactory.from_exception( - e, - component="ModelOperator", - operation="run" - ) - """ - # Auto-detect component and operation if requested - auto_component, auto_operation_name = cls._get_caller_info(caller, auto_operation) - - # Use auto-detected values if not explicitly provided - if component is None and auto_component: - component = auto_component - if operation is None and auto_operation_name: - operation = auto_operation_name - - # Remove conflicting keys from kwargs to avoid duplicate parameter errors - # (kwargs might contain category/severity if passed by caller) - kwargs.pop('category', None) - kwargs.pop('severity', None) - kwargs.pop('component', None) - kwargs.pop('operation', None) - kwargs.pop('error_code', None) - - error = EnhancedError( - message=str(exc), - category=category, - severity=severity, - component=component, - operation=operation, - error_code=error_code or "ERR_EXCEPTION", - exception_type=type(exc).__name__, - stack_trace=traceback.format_exc(), - troubleshooting_hints=[ - f"Exception type: {type(exc).__name__}", - f"Exception message: {str(exc)}", - "Review stack trace for details" - ], - **kwargs - ) - # Add to global collector if enabled - cls._add_to_collector(error) - return error - - @classmethod - def get_catalog_summary(cls) -> Dict[str, Any]: - """Get summary of error catalog for documentation""" - summary = { - "total_errors": len(cls.ERROR_CATALOG), - "by_category": {}, - "by_severity": {}, - "errors": {} - } - - for code, info in cls.ERROR_CATALOG.items(): - category = info.get("category", ErrorCategory.INTERNAL).value - severity = info.get("severity", ErrorSeverity.ERROR).value - - summary["by_category"][category] = summary["by_category"].get(category, 0) + 1 - summary["by_severity"][severity] = summary["by_severity"].get(severity, 0) + 1 - - summary["errors"][code] = { - "message": info["message"], - "category": category, - "severity": severity, - "hints_count": len(info.get("hints", [])), - "remediation_count": len(info.get("remediation", [])) - } - - return summary - - -class ErrorCollector: - """ - Collect and analyze errors for patterns and statistics - - This class maintains a thread-safe collection of errors and provides - statistics and analysis capabilities for monitoring and debugging. - """ - - def __init__(self, max_errors: int = 1000): - """ - Initialize error collector - - Args: - max_errors: Maximum number of errors to keep in memory - """ - self._errors: List[EnhancedError] = [] - self._error_counts: Dict[str, int] = {} - self._max_errors = max_errors - self._lock = threading.RLock() # RLock allows same thread to acquire multiple times - self._start_time = time.time() - - def add(self, error: EnhancedError): - """Add error to collection (thread-safe)""" - with self._lock: - self._errors.append(error) - self._error_counts[error.error_code] = \ - self._error_counts.get(error.error_code, 0) + 1 - - # Trim if exceeds max size (keep most recent) - if len(self._errors) > self._max_errors: - self._errors = self._errors[-self._max_errors:] - - def get_stats(self, include_recent: int = 10) -> Dict: - """ - Get error statistics for monitoring - - Args: - include_recent: Number of recent errors to include - - Returns: - Dictionary with error statistics - """ - with self._lock: - stats = { - "collection_period_seconds": time.time() - self._start_time, - "total_errors": len(self._errors), - "unique_error_codes": len(self._error_counts), - "by_category": self._count_by("category"), - "by_severity": self._count_by("severity"), - "by_component": self._count_by("component"), - "by_model": self._count_by("model_name"), - "by_code": dict(sorted( - self._error_counts.items(), - key=lambda x: x[1], - reverse=True - )[:20]), # Top 20 error codes - } - - if include_recent > 0: - stats["recent_errors"] = [ - e.to_dict(include_stack_trace=False) - for e in self._errors[-include_recent:] - ] - - return stats - - def get_errors_by_category(self, category: ErrorCategory) -> List[EnhancedError]: - """Get all errors of a specific category""" - with self._lock: - return [e for e in self._errors if e.category == category] - - def get_errors_by_code(self, error_code: str) -> List[EnhancedError]: - """Get all errors with specific error code""" - with self._lock: - return [e for e in self._errors if e.error_code == error_code] - - def get_critical_errors(self) -> List[EnhancedError]: - """Get all critical errors""" - with self._lock: - return [e for e in self._errors if e.severity == ErrorSeverity.CRITICAL] - - def clear(self): - """Clear all collected errors""" - with self._lock: - self._errors.clear() - self._error_counts.clear() - self._start_time = time.time() - - def _count_by(self, field: str) -> Dict[str, int]: - """Count errors by field value""" - counts = {} - for error in self._errors: - value = getattr(error, field, None) - if value is None or value == "": - continue - - # Handle enum values - if hasattr(value, 'value'): - key = value.value - # Handle lists - elif isinstance(value, list): - if len(value) == 0: - continue - key = ", ".join(str(v) for v in value[:3]) # First 3 items - if len(value) > 3: - key += "..." - else: - key = str(value) - - counts[key] = counts.get(key, 0) + 1 - - return dict(sorted(counts.items(), key=lambda x: x[1], reverse=True)[:20]) - - def export_to_json(self, filepath: str, include_stack_traces: bool = False): - """Export all errors to JSON file""" - with self._lock: - data = { - "exported_at": time.time(), - "stats": self.get_stats(include_recent=0), - "errors": [ - e.to_dict(include_stack_trace=include_stack_traces) - for e in self._errors - ] - } - - with open(filepath, 'w') as f: - json.dump(data, f, indent=2, default=str) - f.flush() - os.fsync(f.fileno()) - - -# Global error collector instance (optional) -_global_error_collector = None - -def get_global_error_collector() -> ErrorCollector: - """Get or create global error collector""" - global _global_error_collector - if _global_error_collector is None: - _global_error_collector = ErrorCollector() - return _global_error_collector - - -def enable_global_error_collection(max_errors: int = 1000): - """Enable global error collection""" - global _global_error_collector - _global_error_collector = ErrorCollector(max_errors=max_errors) - - -def disable_global_error_collection(): - """Disable global error collection""" - global _global_error_collector - _global_error_collector = None - diff --git a/tools/inference_builder/lib/inference.py b/tools/inference_builder/lib/inference.py deleted file mode 100644 index 9b25f29e..00000000 --- a/tools/inference_builder/lib/inference.py +++ /dev/null @@ -1,2051 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import atexit -import base64 -from concurrent.futures import ThreadPoolExecutor, Future -import os -import threading -from queue import Queue, Empty, Full -from abc import ABC, abstractmethod -from config import global_config -from .utils import get_logger, split_tensor_in_dict, FutureConsumer, QueueConsumer -from .codec import ImageDecoder -import custom -from omegaconf import OmegaConf -from dataclasses import dataclass -from typing import Dict, List, Tuple, Union, Generator -import numpy as np -from collections import namedtuple -import json -from pyservicemaker import Pipeline, as_tensor -from pyservicemaker.utils import MediaExtractor, MediaChunk -import torch -from .asset_manager import AssetManager -import time -import asyncio -import inspect -from .errors import ( - Error, - EnhancedError, - ErrorFactory, - ErrorCategory, - ErrorSeverity, - enable_global_error_collection, - get_global_error_collector -) - - -logger = get_logger(__name__) - -py_datatype_mapping = { - "TYPE_UINT8": int, - "TYPE_UINT16": int, - "TYPE_UINT32": int, - "TYPE_UINT64": int, - "TYPE_INT8": int, - "TYPE_INT16": int, - "TYPE_INT32": int, - "TYPE_INT64": int, - "TYPE_FP16": float, - "TYPE_FP32": float, - "TYPE_FP64": float, - "TYPE_STRING": str, - "TYPE_CUSTOM_DS_IMAGE": str, - "TYPE_CUSTOM_DS_MIME": str, - "TYPE_CUSTOM_LIST": str, - "TYPE_CUSTOM_DS_MEDIA_URL": str, - "TYPE_CUSTOM_DS_SOURCE_CONFIG": str, - "TYPE_CUSTOM_BINARY_BASE64": str, - "TYPE_CUSTOM_VIDEO_CHUNK_ASSETS": str, - "TYPE_CUSTOM_LONG_VIDEO_ASSETS": str, - "TYPE_CUSTOM_IMAGE_ASSETS": str, - "TYPE_CUSTOM_IMAGE_BASE64": str -} - -np_datatype_mapping = { - "TYPE_INVALID": None, - "TYPE_BOOL": np.bool_, - "TYPE_UINT8": np.ubyte, - "TYPE_UINT16": np.uint16, - "TYPE_UINT32": np.uint32, - "TYPE_UINT64": np.uint64, - "TYPE_INT8": np.byte, - "TYPE_INT16": np.int16, - "TYPE_INT32": np.int32, - "TYPE_INT64": np.int64, - "TYPE_FP16": np.float16, - "TYPE_FP32": np.float32, - "TYPE_FP64": np.float64, - "TYPE_STRING": np.string_, - "TYPE_CUSTOM_DS_IMAGE": np.ubyte, - "TYPE_CUSTOM_DS_MIME": np.string_, - "TYPE_CUSTOM_DS_MEDIA_URL": np.string_, - "TYPE_CUSTOM_DS_SOURCE_CONFIG": str, - "TYPE_BF16": None, - "TYPE_CUSTOM_OBJECT": None -} - -torch_datatype_mapping = { - "TYPE_INVALID": None, - "TYPE_BOOL": torch.bool, - "TYPE_UINT8": torch.uint8, - "TYPE_UINT16": torch.int16, - "TYPE_UINT32": torch.int32, - "TYPE_UINT64": torch.int64, - "TYPE_INT8": torch.int8, - "TYPE_INT16": torch.int16, - "TYPE_INT32": torch.int32, - "TYPE_INT64": torch.int64, - "TYPE_FP16": torch.float16, - "TYPE_FP32": torch.float32, - "TYPE_FP64": torch.float64, - "TYPE_STRING": None, - "TYPE_CUSTOM_DS_IMAGE": torch.int8, - "TYPE_CUSTOM_DS_MIME": None, - "TYPE_CUSTOM_DS_MEDIA_URL": None, - "TYPE_CUSTOM_DS_SOURCE_CONFIG": str, - "TYPE_BF16": None, - "TYPE_CUSTOM_OBJECT": None -} - -@dataclass -class Stop: - reason: str - - def __bool__(self): - return False - -Path = namedtuple('Path', ['source', 'target']) -Route = namedtuple('Route', ['model', 'data']) - -class DataFlow: - """A single data flow from or to a model""" - def __init__( - self, - configs: List[Dict], - tensor_names: List[Tuple[str, str]], - inbound: bool = False, - outbound: bool = False, - timeout=1.0 - ): - self._configs = configs - self._tensor_names = tensor_names - self._inbound = inbound - self._outbound = outbound - self._timeout = timeout - self._queue = Queue() - self._optional = False - self._stop_event = threading.Event() - if self._inbound or self._outbound: - self._optional = all([ - config["optional"] if "optional" in config else False - for config in self._configs - ]) - self._queue_consumer = None - - def _process_custom_data(self, tensor: np.ndarray, data_type: str) -> Union[List, np.ndarray, Queue, EnhancedError]: - """ - Process custom data types that are not standard numpy types. - - Args: - tensor: Input tensor data - data_type: The custom data type string (e.g., "TYPE_CUSTOM_BINARY_BASE64") - - Returns: - Union[List, np.ndarray, Queue, EnhancedError]: - - List: For processed data like base64 decoded arrays - - np.ndarray: For tensor data - - Queue: For streaming data (in subclasses) - - EnhancedError: If processing fails (e.g., decoder not initialized) - - Note: - Subclasses override this method to handle specific data types. - The return value is assigned to collected[o_name] in the put() method. - """ - processed = tensor - if self._inbound: - if data_type == "TYPE_CUSTOM_LIST": - logger.debug("DataFlow _process_custom_data: %s", data_type) - processed = [input for input in tensor] - elif data_type == "TYPE_CUSTOM_BINARY_BASE64": - logger.debug("DataFlow _process_custom_data: %s", data_type) - processed = [] - for input in tensor: - if not isinstance(input, np.str_): - error = ErrorFactory.create( - "ERR_DF_002", - message=f"base64 binary must be bytes or string, got {type(input).__name__}", - caller=self, - input_data={"input_type": type(input).__name__}, - expected_data={"valid_types": ["bytes", "np.bytes_", "str", "np.str_"]} - ) - error.log(logger, as_json=False) - return error - try: - decoded = base64.b64decode(input) - except Exception as e: - error = ErrorFactory.create( - "ERR_DF_002", - message=f"Failed to decode base64 string: {e}", - caller=self, - input_data={"input": input}, - expected_data={"valid_encoding": "base64"} - ) - error.log(logger, as_json=False) - return error - processed.append(np.frombuffer(decoded, dtype=np.uint8)) - return processed - - def _is_collected_valid(self, collected: Dict): - if not collected: - logger.info("No data collected from the dataflow: %s", self.in_names) - return False - # check output data integrity - if self._outbound: - for config in self._configs: - name = config["name"] - optional = "optional" in config and config["optional"] - if name not in collected and not optional: - return False - return True - - @property - def in_names(self): - return [i[0] for i in self._tensor_names] - - @property - def o_names(self): - return [i[1] for i in self._tensor_names] - - @property - def optional(self): - return self._optional - - def get_config(self, name: str): - if not self._configs: - return None - return next((config for config in self._configs if config["name"] == name), None) - - def put(self, item: Union[Dict, Error, Stop]): - logger.debug("[DataFlow.put] in_names=%s, o_names=%s, item_type=%s", self.in_names, self.o_names, type(item).__name__) - if not item: - if self._queue_consumer is None: - # pass Error or Stop to the downstream - self._queue.put(item, timeout=self._timeout) - return - # check input data integrity - if self._inbound: - for config in self._configs: - name = config["name"] - optional = "optional" in config and config["optional"] - if name not in item and not optional: - error = ErrorFactory.create( - "ERR_DF_001", - message=f"{name} is not optional and not found from the dataflow input configs", - caller=self, - dataflow_names=self.in_names, - tensor_names=[name], - expected_data={"required_tensors": [c["name"] for c in self._configs if not c.get("optional", False)]}, - actual_data={"provided_tensors": list(item.keys())}, - related_config={"config": config, "all_configs": self._configs} - ) - error.log(logger, as_json=False) - return - # collect data and deposit it to the queue - collected = {} - for i_name, o_name in self._tensor_names: - if i_name not in item: - continue - tensor = item[i_name] - # handling custom data type - if self._inbound or self._outbound: - config = self.get_config(i_name) - if config and not config["data_type"] in np_datatype_mapping: - result = self._process_custom_data(tensor, config["data_type"]) - # Check if processing returned an error - if isinstance(result, EnhancedError): - self._queue.put(result) - return - collected[o_name] = result - else: - collected[o_name] = tensor - else: - collected[o_name] = tensor - # check output data integrity - if not self._is_collected_valid(collected): - error = ErrorFactory.create( - "ERR_DF_007", - message=f"Invalid data collected from the dataflow: {self.in_names}", - caller=self, - severity=ErrorSeverity.WARNING, - dataflow_names=self.in_names, - actual_data={"collected_keys": list(collected.keys()) if collected else []} - ) - error.log(logger, as_json=False) - self._queue.put(error) - return - - # deposit the collected data to the queue - values = {} - results_queues = {} - for k, v in collected.items(): - if isinstance(v, Queue): - results_queues[k] = v - else: - values[k] = v - - if results_queues: - if len(results_queues) > 1: - error = ErrorFactory.create( - "ERR_DF_004", - message=f"Multiple result queues are not supported in one dataflow yet, got {len(results_queues)} queues", - caller=self, - dataflow_names=self.in_names, - actual_data={"n_queues": len(results_queues), "queue_keys": list(results_queues.keys())} - ) - error.log(logger, as_json=False) - self._queue.put(error) - return - q_key, q = next(iter(results_queues.items())) - def on_result_queue_result(item, user_data): - if not item: - # end of the inference - self._queue.put(item, timeout=self._timeout) - return - result_values = user_data[1] - result_values[q_key] = item - self._queue.put(result_values, timeout=self._timeout) - if self._queue_consumer is None: - self._queue_consumer = QueueConsumer("dataflow_queue_consumer", self._stop_event) - collected.pop(q_key) - self._queue_consumer.append_queue(q, on_result_queue_result, (q_key, collected)) - else: - self._queue.put(values, timeout=self._timeout) - return - - def get(self): - logger.debug("[DataFlow.get] Attempting get from queue: in_names=%s, o_names=%s, qsize=%s", self.in_names, self.o_names, self._queue.qsize()) - result = self._queue.get(timeout=self._timeout) - logger.debug("[DataFlow.get] Got result: in_names=%s, item_type=%s", self.in_names, type(result).__name__) - return result - - def stop(self): - self._stop_event.set() - self._queue.put(Stop("Shutdown")) - - def is_stopped(self): - return self._stop_event.is_set() - - def parse_asset_string(self, asset: str): - pieces = asset.split("?") - asset = pieces[0] - params = {} - if len(pieces) > 1: - query_string = pieces[1] - query_params = query_string.split("&") - for param in query_params: - key, value = param.split("=") - params[key] = value - return asset, params - -class VideoInputDataFlow(DataFlow): - """A data flow for live stream data""" - def __init__(self, configs: List[Dict], tensor_names: List[Tuple[str, str]], key_tensor_type: str, timeout=1.0): - super().__init__(configs, tensor_names, True, False, timeout) - self._video_tensor_type = key_tensor_type - self._video_tensor_names = [] - for tensor_name in tensor_names: - config = next((c for c in configs if c["name"] == tensor_name[0]), None) - if config and config["data_type"] == key_tensor_type: - self._video_tensor_names.append(tensor_name[1]) - # Thread pool for collecting frames in background - n_codec_instances = int(os.getenv("N_CODEC_INSTANCES", 1)) - self._frame_collector = ThreadPoolExecutor(max_workers=n_codec_instances) - logger.info(f"VideoInputDataFlow initialized with {n_codec_instances} codec instances") - - def _process_custom_data(self, tensor: np.ndarray, data_type: str): - """ - Process custom video data types. - - Returns: - Union[Queue, np.ndarray, EnhancedError]: - - Queue: Results queue for live video streams (non-blocking) - - np.ndarray: Fallback to parent processing - - EnhancedError: If asset not found or processing fails - """ - if data_type == self._video_tensor_type: - return self._process_video_assets(tensor) - else: - return super()._process_custom_data(tensor, data_type) - - def _collect_live_stream_frames(self, asset_list, chunk_params, media_chunks, results_queue, scaling=None): - """ - Collect frames from live streams in a background thread. - - Args: - asset_list: List of locked assets - chunk_params: List of dicts with n_frames and max_chunks for each asset - media_chunks: List of MediaChunk configurations - results_queue: Queue to put results into - scaling: Optional target resolution as (width, height) tuple - """ - unlocked = False - try: - max_batch_size = int(os.getenv("MAX_BATCH_SIZE", 16)) - batch_size = min(max_batch_size, len(media_chunks)) - extractor_kwargs = {"n_thread": 1, "batch_size": batch_size} - if scaling is not None: - extractor_kwargs["scaling"] = scaling - with MediaExtractor(media_chunks, **extractor_kwargs) as media_extractor: - qs = media_extractor() - eos_flags = [False] * len(qs) - chunks_yielded = [0] * len(qs) # Track chunks per stream - - while not all(eos_flags): - results = [] - for idx, q in enumerate(qs): - # Check if this specific asset is marked for deletion - if asset_list[idx].is_marked_for_deletion(): - logger.info(f"Stream {idx} asset marked for deletion, stopping processing for this stream") - eos_flags[idx] = True - continue - - # Check if this stream has reached its maximum chunks limit - max_chunks = chunk_params[idx].get("max_chunks") - if max_chunks is not None and chunks_yielded[idx] >= max_chunks: - logger.info("Stream %s reached maximum chunks limit: %s", idx, max_chunks) - eos_flags[idx] = True - continue - - n_frames = chunk_params[idx]["n_frames"] - frames = [] - frame_count = 0 - - while not eos_flags[idx]: - try: - frame = q.get(timeout=5.0) - if frame is None: - logger.info("Frame extraction completed for stream %s", idx) - eos_flags[idx] = True - break - frames.append(frame) - frame_count += 1 - - # Put to results queue when we reach n_frames - if n_frames and frame_count >= n_frames: - results.append(frames) - chunks_yielded[idx] += 1 - frames = [] - frame_count = 0 - break # Exit inner loop - - except Empty: - logger.info("EOS on live stream %s", idx) - eos_flags[idx] = True - break - - # TODO WAR on pyservicemaker error - time.sleep(0) - - if results: # Only put if we have collected frames - try: - results_queue.put(results, timeout=10.0) - except Full: - logger.warning(f"Results queue is full, dropping frame batch") - break - - # Unlock assets BEFORE MediaExtractor cleanup to avoid blocking on __exit__ - results_queue.put(Stop("end")) - for asset in asset_list: - asset.unlock() - unlocked = True - - logger.info("Media processing completed") - except Exception as e: - logger.exception(f"Error in live stream frame collection: {e}") - error = ErrorFactory.from_exception(e, caller=self) - error.log(logger, as_json=False) - results_queue.put(error) - finally: - # Fallback: ensure assets are unlocked if exception occurred before unlocking - if not unlocked: - results_queue.put(Stop("end")) - for asset in asset_list: - asset.unlock() - - def _process_video_assets(self, assets: np.ndarray): - """ - Process video assets using Queue-based approach (non-blocking). - - Args: - assets: Array of asset strings with query parameters - - Returns: - Union[Queue, EnhancedError]: Results queue or error - """ - media_chunks = [] - chunk_params = [] # Store n_frames and max_chunks for each asset - asset_list = [] - expected_n_frames = None - expected_scaling = None - - for a in assets: - asset_manager = AssetManager() - asset_id, params = self.parse_asset_string(a) - asset = asset_manager.get_asset(asset_id) - if asset: - asset_list.append(asset) - n = int(params.get("frames", None)) - max_chunks = params.get("chunks", None) - if max_chunks is not None: - max_chunks = int(max_chunks) - - # Validate that all assets have the same n_frames - if expected_n_frames is None: - expected_n_frames = n - elif expected_n_frames != n: - error = ErrorFactory.create( - "ERR_VIDEO_001", - message=f"frames mismatch on multiple assets: {expected_n_frames} != {n}", - caller=self, - severity=ErrorSeverity.WARNING, - actual_data={"n_frames_first": expected_n_frames, "n_frames_current": n} - ) - error.log(logger, as_json=False) - return error - - interval = int(params.get("interval", 0)) - - # Parse scaling parameter (format: widthxheight, e.g., 1920x1080) - scaling = None - scale_param = params.get("scale", None) - if scale_param: - try: - width, height = scale_param.split("x") - scaling = (int(width), int(height)) - except (ValueError, AttributeError) as e: - error = ErrorFactory.create( - "ERR_VIDEO_001", - message=f"Invalid scale parameter format: {scale_param}. Expected format: widthxheight (e.g., 1920x1080)", - caller=self, - severity=ErrorSeverity.WARNING, - input_data={"scale_param": scale_param} - ) - error.log(logger, as_json=False) - return error - - # Validate that all assets have the same scaling - if expected_scaling is None: - expected_scaling = scaling - elif expected_scaling != scaling: - error = ErrorFactory.create( - "ERR_VIDEO_001", - message=f"scale mismatch on multiple assets: {expected_scaling} != {scaling}", - caller=self, - severity=ErrorSeverity.WARNING, - actual_data={"scale_first": expected_scaling, "scale_current": scaling} - ) - error.log(logger, as_json=False) - return error - - media_chunks.append(MediaChunk( - asset.path, - start_pts=0, - interval=interval - )) - chunk_params.append({"n_frames": n, "max_chunks": max_chunks}) - else: - error = ErrorFactory.create( - "ERR_DF_003", - message=f"Asset not found: {asset_id}", - caller=self, - input_data={ - "asset_id": asset_id, - "asset_string": a, - "params": params - }, - metadata={ - "n_frames": params.get("frames"), - "interval": params.get("interval") - } - ) - error.log(logger, as_json=False) - return error - - # Create results queue and submit background thread - results_queue = Queue(maxsize=32) - for asset in asset_list: - asset.lock() - - self._frame_collector.submit( - self._collect_live_stream_frames, asset_list, chunk_params, media_chunks, results_queue, expected_scaling - ) - return results_queue - - def _is_collected_valid(self, collected: Dict): - result = super()._is_collected_valid(collected) - if not result: - return False - return all([n in collected for n in self._video_tensor_names]) - - def stop(self): - super().stop() - if hasattr(self, '_frame_collector') and self._frame_collector: - logger.info("VideoInputDataFlow: shutting down frame collector") - self._frame_collector.shutdown(wait=True) - logger.info("VideoInputDataFlow: frame collector shut down") - self._frame_collector = None - - -class VideoFrameSamplingDataFlow(DataFlow): - """A data flow for video frame sampling - for short videos without chunking""" - def __init__(self, configs: List[Dict], tensor_names: List[Tuple[str, str]], key_tensor_type: str, timeout=1.0): - super().__init__(configs, tensor_names, True, False, timeout) - n_codec_instances = int(os.getenv("N_CODEC_INSTANCES", 1)) - self._media_extractor = MediaExtractor(chunks=[], n_thread=n_codec_instances) - self._video_tensor_type = key_tensor_type - self._video_tensor_names = [] - for tensor_name in tensor_names: - config = next((c for c in configs if c["name"] == tensor_name[0]), None) - if config and config["data_type"] == key_tensor_type: - self._video_tensor_names.append(tensor_name[1]) - self._media_extractor() - self._frame_collector = ThreadPoolExecutor(max_workers=n_codec_instances) - logger.info(f"VideoFrameSamplingDataFlow initialized for short video handling") - - def _process_custom_data(self, tensor: np.ndarray, data_type: str) -> Union[Queue, List, np.ndarray, EnhancedError]: - """ - Process custom video frame sampling data types. - - Returns: - Union[Queue, List, np.ndarray, EnhancedError]: - - Queue: Results queue for frame sampling (streaming) - - List: Fallback to parent processing - - np.ndarray: Fallback to parent processing - - EnhancedError: If asset not found or processing fails - """ - logger.debug("VideoFrameSamplingDataFlow._process_custom_data: %s", data_type) - if data_type == self._video_tensor_type: - return self._do_video_frame_sampling(tensor) - else: - return super()._process_custom_data(tensor, data_type) - - def _collect_frames_from_queue(self, assets, qs, n_frames, results_queue): - """Collect frames from queues in a separate thread - single batch, no chunking""" - total_frames = [[] for _ in qs] - - # Collect n_frames from each queue - for frame_idx in range(n_frames): - for i, q in enumerate(qs): - try: - frame = q.get(timeout=10.0) - if frame is None: - logger.info("Frame extraction completed for stream %s", i) - break - total_frames[i].append(frame) - except Empty: - logger.warning("Frame queue empty for stream %s", i) - break - - # Put the collected frames to results queue - if any(total_frames): - try: - results_queue.put(total_frames, timeout=10.0) - except Full: - error = ErrorFactory.create( - "ERR_DF_005", - caller=self, - severity=ErrorSeverity.WARNING, - metadata={ - "n_frames": n_frames, - "queue_info": "Results queue is full" - } - ) - error.log(logger, as_json=False) - - # Signal completion and unlock assets - results_queue.put(Stop("end")) - for asset in assets: - asset.unlock() - return - - - def _do_video_frame_sampling(self, assets: np.ndarray): - """Extract frames from videos - single batch, no chunking. Parameters: frames, start, duration""" - qs = [] - asset_list = [] - start_times = [] # Store per-asset start times - n_frames = None - duration = None - - for asset_str in assets: - asset_manager = AssetManager() - asset_id, params = self.parse_asset_string(asset_str) - asset = asset_manager.get_asset(asset_id) - if not asset: - error = ErrorFactory.create( - "ERR_DF_003", - message=f"Asset not found: {asset_id}", - caller=self, - input_data={"asset_id": asset_id, "asset_string": asset_str, "params": params} - ) - error.log(logger, as_json=False) - return error - - asset_list.append(asset) - - # Validate frames parameter (required) - if "frames" not in params: - error = ErrorFactory.create( - "ERR_VIDEO_001", - message="Missing required parameter 'frames' for video frame sampling", - caller=self, - severity=ErrorSeverity.CRITICAL, - input_data={"asset_id": asset_id, "params": params}, - expected_data={"required_params": ["frames"]} - ) - error.log(logger, as_json=False) - return error - - try: - n = int(params["frames"]) - if n <= 0: - raise ValueError("frames must be positive") - except (TypeError, ValueError) as e: - error = ErrorFactory.create( - "ERR_VIDEO_001", - message=f"Invalid 'frames' value: {params['frames']} - {e}", - caller=self, - severity=ErrorSeverity.CRITICAL, - input_data={"asset_id": asset_id, "frames": params["frames"]} - ) - error.log(logger, as_json=False) - return error - - if n_frames is None: - n_frames = n - elif n_frames != n: - error = ErrorFactory.create( - "ERR_VIDEO_001", - message=f"frames mismatch on multiple assets: {n_frames} != {n}", - caller=self, - severity=ErrorSeverity.WARNING - ) - error.log(logger, as_json=False) - return error - - # Validate duration parameter (optional, default asset duration) - n = int(params.get("duration", asset.duration)) - if duration is None: - duration = n - elif duration != n: - error = ErrorFactory.create( - "ERR_VIDEO_001", - message=f"duration mismatch on multiple assets: {duration} != {n}", - caller=self, - severity=ErrorSeverity.WARNING - ) - error.log(logger, as_json=False) - return error - - # Extract start parameter (optional, default 0) - can vary per asset - start = int(params.get("start", 0)) - start_times.append(start) - - # Calculate frame sampling interval - interval = duration / n_frames if n_frames > 0 else 0 - - # Setup MediaExtractor queues for each asset - results_queue = Queue() - for asset, start_time in zip(asset_list, start_times): - asset.lock() - chunk = MediaChunk( - asset.path, - start_pts=start_time, - duration=duration if duration else -1, - interval=interval if interval else 0 - ) - qs.append(self._media_extractor.append(chunk)) - - # Submit frame collection task to thread pool - self._frame_collector.submit( - self._collect_frames_from_queue, asset_list, qs, n_frames, results_queue - ) - return results_queue - - def _is_collected_valid(self, collected: Dict): - result = super()._is_collected_valid(collected) - if not result: - return False - return all([n in collected for n in self._video_tensor_names]) - - def stop(self): - super().stop() - if self._media_extractor: - # explicitly call __exit__ due to MediaExtractor internal threads holding the reference - self._media_extractor.__exit__(None, None, None) - self._media_extractor = None - if self._frame_collector is not None: - logger.info(f"VideoFrameSamplingDataFlow: shutting down frame collector") - self._frame_collector.shutdown(wait=True) - logger.info(f"VideoFrameSamplingDataFlow: frame collector shut down") - self._frame_collector = None - -class ImageInputDataFlow(DataFlow): - """A data flow for image data""" - def __init__(self, configs: List[Dict], tensor_names: List[Tuple[str, str]], key_tensor_type: str, timeout=1.0): - super().__init__(configs, tensor_names, True, False, timeout) - self._image_decoder = ImageDecoder(["JPEG", "PNG"]) - self._image_tensor_names = [] - for tensor_name in tensor_names: - config = next((c for c in configs if c["name"] == tensor_name[0]), None) - if config and config["data_type"] == key_tensor_type: - self._image_tensor_names.append(tensor_name[1]) - if not self._image_tensor_names: - raise Exception("Image tensor name not found in the ImageInputDataFlow") - - def _process_custom_data(self, images: np.ndarray, data_type: str) -> Union[List, np.ndarray, EnhancedError]: - """ - Process custom image data types. - - Args: - images: Input image data (base64 or asset references) - data_type: The custom data type string - - Returns: - Union[List, np.ndarray, EnhancedError]: - - List: Decoded images (list of tensors) - - np.ndarray: Fallback to parent processing - - EnhancedError: If decoder not initialized or processing fails - - Note: - Returns EnhancedError (not raises) when decoder is not initialized, - allowing the error to be propagated through the pipeline. - """ - logger.debug("ImageInputDataFlow._process_custom_data: %s", data_type) - if self._image_decoder is None: - return ErrorFactory.create( - "ERR_IMG_003", - caller=self, - severity=ErrorSeverity.CRITICAL - ) - if data_type == "TYPE_CUSTOM_IMAGE_BASE64": - return self._process_base64_image(images) - elif data_type == "TYPE_CUSTOM_IMAGE_ASSETS": - return self._process_image_assets(images) - else: - return super()._process_custom_data(images, data_type) - - def _is_collected_valid(self, collected: Dict): - result = super()._is_collected_valid(collected) - if not result: - return False - return all([n in collected for n in self._image_tensor_names]) - - def _process_base64_image(self, images: np.ndarray): - result = [] - for image in images: - if not isinstance(image, np.str_): - error = ErrorFactory.create( - "ERR_IMG_002", - message=f"base64 image must be bytes or string, got {type(image).__name__}", - caller=self, - input_data={"image_type": type(image).__name__}, - expected_data={"valid_types": ["bytes", "np.bytes_", "str", "np.str_"]} - ) - error.log(logger, as_json=False) - return error - try: - data_prefix, data_payload = image.split(",") - mime_type = data_prefix.split(";")[0].split(":")[1] - format = None - if mime_type == "image/jpeg" or mime_type == "image/jpg": - format = "JPEG" - elif mime_type == "image/png": - format = "PNG" - else: - error = ErrorFactory.create( - "ERR_IMG_001", - message=f"Unsupported image format: {mime_type}", - caller=self, - input_data={"mime_type": mime_type, "data_prefix": data_prefix}, - expected_data={"supported_formats": ["image/jpeg", "image/jpg", "image/png"]} - ) - error.log(logger, as_json=False) - return error - data_payload = base64.b64decode(data_payload) - except Exception: - error = ErrorFactory.create( - "ERR_DF_002", - message=f"Failed to decode base64 string for image data: {image}", - caller=self, - input_data={"input": image}, - expected_data={"valid_encoding": "base64"} - ) - error.log(logger, as_json=False) - return error - tensor = as_tensor(np.frombuffer(data_payload, dtype=np.uint8).copy(), format) - result.append(self._image_decoder.decode(tensor, format)) - logger.debug("ImageInputDataFlow._process_base64_image generates %s tensors", len(result)) - return result - - def _process_image_assets(self, assets: np.ndarray): - result = [] - for asset in assets: - asset_manager = AssetManager() - asset = asset_manager.get_asset(asset) - if not asset: - error = ErrorFactory.create( - "ERR_DF_003", - message=f"Asset not found: {asset}", - caller=self, - input_data={"asset_id": asset} - ) - error.log(logger, as_json=False) - return error - asset.lock() - format = None - if asset.mime_type == "image/jpeg" or asset.mime_type == "image/jpg": - format = "JPEG" - elif asset.mime_type == "image/png": - format = "PNG" - else: - error = ErrorFactory.create( - "ERR_IMG_001", - message=f"Unsupported image format: {asset.mime_type}", - caller=self, - input_data={"mime_type": asset.mime_type, "asset_path": asset.path}, - expected_data={"supported_formats": ["image/jpeg", "image/jpg", "image/png"]} - ) - error.log(logger, as_json=False) - asset.unlock() - return error - with open(asset.path, "rb") as f: - data = f.read() - tensor = as_tensor(np.frombuffer(data, dtype=np.uint8).copy(), format) - result.append(self._image_decoder.decode(tensor, format)) - asset.unlock() - return result - -inbound_dataflow_mapping = { - "TYPE_CUSTOM_IMAGE_BASE64": ImageInputDataFlow, - "TYPE_CUSTOM_IMAGE_ASSETS": ImageInputDataFlow, - "TYPE_CUSTOM_LONG_VIDEO_ASSETS": VideoInputDataFlow, - "TYPE_CUSTOM_VIDEO_CHUNK_ASSETS": VideoFrameSamplingDataFlow -} -class ModelBackend(ABC): - """Interface for standardizing the model backend """ - def __init__(self, model_config: Dict, model_home: str, device_id=0): - self._model_config = model_config - self._model_home = model_home - self._device_id = device_id - - @property - def device_id(self): - return self._device_id - - @property - def model_home(self): - return self._model_home - - @abstractmethod - def __call__(self, *args, **kwargs): - raise Exception("Not Implemented") - - def stop(self): - logger.info(f'Backend for {self._model_config["name"]} stopped') - -class Processor(ABC): - def __init__(self, config: Dict, model_home: str): - self._name = config['name'] - self._kind = config['kind'] if 'kind' in config else 'auto' - self._input = config['input'] if 'input' in config else [] - self._output = config['output'] if 'output' in config else [] - self._config = { 'device_id': 0, 'model_home': model_home } - if 'config' in config: - self._config.update(config['config']) - self._name = config['name'] - self._processor = None - - @property - def name(self): - return self._name - - @property - def input(self): - return self._input - - @property - def output(self): - return self._output - - @property - def kind(self): - return self._kind - - @property - def config(self): - return self._config - - @abstractmethod - def __call__(self, *args, **kwargs): - pass - -class AutoProcessor(Processor): - """AutoPrrocessor loads the preprocessor from pretrained""" - def __init__(self, config: Dict, model_home: str): - super().__init__(config, model_home) - import transformers - self._processor = transformers.AutoProcessor.from_pretrained(model_home) - if self._processor is None: - error = ErrorFactory.create( - "ERR_PROC_002", - message=f"Failed to load AutoProcessor from {model_home}", - caller=self, - severity=ErrorSeverity.CRITICAL, - related_config={"model_home": model_home, "config": config} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - - def __call__(self, *args): - # TODO value parser should be configurable - return self._processor(*args) - -class CustomProcessor(Processor): - """CustomProcessor loads the processor from custom module""" - def __init__(self, config: Dict, model_home: str): - super().__init__(config, model_home) - if not hasattr(custom, "create_instance"): - error = ErrorFactory.create( - "ERR_PROC_003", - caller=self, - severity=ErrorSeverity.CRITICAL, - related_config={"config": config, "model_home": model_home} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - self._processor = custom.create_instance(self.name, self.config) - if self._processor is not None: - logger.info(f"Custom processor {self._processor.name} created") - else: - error = ErrorFactory.create( - "ERR_PROC_004", - message=f"Failed to create processor {self.name}", - caller=self, - severity=ErrorSeverity.CRITICAL, - related_config={"processor_name": self.name, "config": config} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - - def __call__(self, *args): - ret = self._processor(*args) - if not isinstance(ret, tuple): - ret = ret, - return ret - -class Collector(ABC): - """Collector is an interface for collecting data from the data flow""" - def collect(self): - raise NotImplementedError("Not implemented") - - def stop(self): - raise NotImplementedError("Not implemented") - -class SingleFlowCollector(Collector): - """SingleFlowCollector is a collector for a single data flow""" - def __init__(self, data_flow: DataFlow): - self._data_flow = data_flow - - def collect(self): - return self._data_flow.get() - - def stop(self): - return self._data_flow.stop() - -class AggregationFlowCollector(Collector): - """AggregationFlowCollector is a collector aggregating multiple data flows""" - def __init__(self, data_flows: List[DataFlow], timeout=None): - self._data_flows = data_flows - self._executor = ThreadPoolExecutor(max_workers=1) - self._queue = Queue() - self._stop_event = threading.Event() - self._timeout = timeout - self._futures = self._executor.submit(self._collect) - - def collect(self): - return self._queue.get(timeout=self._timeout) - - def _collect(self): - logger.info(f"AggregationFlowCollector starts collecting data") - while not self._stop_event.is_set(): - result = {} - completed = [] - for data_flow in self._data_flows: - # continue reading from each data flow until we get some data - while not self._stop_event.is_set(): - try: - data = data_flow.get() - if isinstance(data, Error) or isinstance(data, Stop): - completed.append(data) - else: - result.update(data) - break - except Empty: - continue - if result: - self._queue.put(result) - if completed and all([isinstance(c, Stop) for c in completed]): - self._queue.put(Stop("All data flows completed")) - elif any([isinstance(c, Error) for c in completed]): - self._queue.put(Error("One or more data flows ended in error")) - - def stop(self): - logger.info(f"AggregationFlowCollector destructing...") - self._stop_event.set() - for data_flow in self._data_flows: - data_flow.stop() - self._executor.shutdown(wait=True) - self._queue.put(Stop("Shutdown")) - logger.info(f"AggregationFlowCollector destructed") - -class MultiFlowCollector(Collector): - """MultiFlowCollector is a collector for multiple data flows""" - def __init__(self, data_flows: List[DataFlow], timeout=None): - self._data_flows = data_flows - self._executor = ThreadPoolExecutor(max_workers=len(data_flows)) - self._queue = Queue() - self._stop_event = threading.Event() - self._condition = threading.Condition() - self._active_flow = -1 - self._timeout = timeout - self._futures = [self._executor.submit(self._poll, i) for i in range(len(self._data_flows))] - - def collect(self): - data = self._queue.get(timeout=self._timeout) - return data - - def _poll(self, index: int): - logger.info("Start polling data flow %s", self._data_flows[index].in_names) - data_flow = self._data_flows[index] - n_data = 0 - while not self._stop_event.is_set(): - try: - data = data_flow.get() - is_stop = isinstance(data, Stop) - if is_stop and n_data == 0: - # empty data flow, skip it - logger.info(f"Empty data flow {data_flow.in_names}, skip it") - continue - elif not is_stop: - n_data += 1 - # try grabbing the queue - with self._condition: - while self._active_flow != index and self._active_flow != -1: - self._condition.wait() - if self._active_flow == -1: - self._active_flow = index - self._queue.put(data) - with self._condition: - if isinstance(data, Stop): - logger.info("Data flow %s ended in: %s", data_flow.in_names, data) - self._active_flow = -1 - n_data = 0 - self._condition.notify_all() - except Empty: - continue - - - def stop(self): - logger.info(f"MultiFlowCollector destructing...") - self._stop_event.set() - for data_flow in self._data_flows: - data_flow.stop() - logger.info(f"MultiFlowCollector data flows stopped") - self._executor.shutdown(wait=True) - self._queue.put(Stop("Shutdown")) - logger.info(f"MultiFlowCollector destructed") - - -class AsyncDispatcher: - """AsyncDispatcher is a dispatcher of synchronous data flows to asynchronous queues""" - def __init__(self, collector: Collector, loop: asyncio.AbstractEventLoop, n_max_async_queues: int = 100): - self._collector = collector - self._loop = loop - self._consumer_queues = Queue(maxsize=n_max_async_queues) - self._stop_event = threading.Event() - self._dispatcher_thread = threading.Thread(target=self.run, daemon=True) - self._dispatcher_thread.start() - - def append_async_queue(self, async_queue: asyncio.Queue): - try: - self._consumer_queues.put_nowait(async_queue) - except Full: - error = ErrorFactory.create( - "ERR_ASYNC_003", - caller=self, - severity=ErrorSeverity.CRITICAL, - metadata={"queue_maxsize": self._consumer_queues.maxsize} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - - def run(self): - if self._collector is None: - error = ErrorFactory.create( - "ERR_ASYNC_001", - caller=self, - severity=ErrorSeverity.CRITICAL - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - if self._loop is None: - error = ErrorFactory.create( - "ERR_ASYNC_002", - caller=self, - severity=ErrorSeverity.CRITICAL - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - logger.info("AsyncDispatcher started") - while not self._stop_event.is_set(): - try: - async_queue = self._consumer_queues.get(timeout=1.0) - except Empty: - continue - except Exception as e: - logger.exception(e) - continue - - # For this consumer queue, keep collecting until Stop/Error is received - logger.debug("[AsyncDispatcher] Starting collection loop for new async_queue") - collect_attempts = 0 - while not self._stop_event.is_set(): - try: - logger.debug("[AsyncDispatcher] Attempting to collect (attempt #%s)", collect_attempts) - data = self._collector.collect() - logger.debug("[AsyncDispatcher] Collected data: %s", type(data).__name__) - except Empty: - collect_attempts += 1 - if collect_attempts % 100 == 0: - logger.debug("[AsyncDispatcher] Still waiting for data after %s attempts", collect_attempts) - continue - except Exception as e: - logger.exception(e) - data = Error(str(e)) - try: - logger.debug("[AsyncDispatcher] Putting data into async_queue") - async def _async_put(q, item): - await q.put(item) - asyncio.run_coroutine_threadsafe(_async_put(async_queue, data), self._loop) - logger.debug("[AsyncDispatcher] Successfully put data into async_queue") - except Exception as e: - logger.exception(e) - continue - - if isinstance(data, Stop): - logger.info("AsyncDispatcher delivered Stop message: %s", data) - break - - logger.info("AsyncDispatcher stopped") - - def stop(self): - self._stop_event.set() - logger.info("AsyncDispatcher stopping") - -class ModelOperator: - """An model operator runs a single model""" - def __init__(self, model_config:Dict, model_repo: str): - self._model_name = model_config["name"] - self._model_home = os.path.join(model_repo, self._model_name) - self._in: List[DataFlow] = [] - self._out: List[DataFlow] = [] - self._running = False - self._preprocessors = [] - self._postprocessors = [] - self._model_config = model_config - self._backend = None - self._stop_event = threading.Event() - self._collector = None - self._future_consumer = None - - - @property - def model_name(self): - return self._model_name - - @property - def model_config(self): - return self._model_config.copy() - - @property - def inputs(self): - return self._in.copy() - - @property - def outputs(self): - return self._out.copy() - - def bind_input(self, configs: List[Dict], targets: List[str]=[]): - if not targets: - targets = [i['name'] for i in configs] - flow = None - tensor_names = [(i['name'], o) for i, o in zip(configs, targets)] - tensor_types = [i['data_type'] for i in configs] - image_tensor_type = None - for tensor_type in tensor_types: - if tensor_type in inbound_dataflow_mapping: - image_tensor_type = tensor_type - break - if image_tensor_type is None: - flow = DataFlow(configs, tensor_names, inbound=True) - else: - # customized inbound data flow - flow = inbound_dataflow_mapping[image_tensor_type](configs, tensor_names, image_tensor_type) - self._in.append(flow) - logger.info("Data flow < %s -> %s > connected to model %s", flow.in_names, flow.o_names, self._model_name) - return flow - - def bind_output(self, configs: List[Dict], sources: List[str]=[]): - if not sources: - sources = [i['name'] for i in configs] - tensor_names = [(i, o['name']) for i, o in zip(sources, configs)] - flow = DataFlow(configs, tensor_names, outbound=True) - self._out.append(flow) - logger.info(f"model {self._model_name} connected to Data flow < {flow.in_names} -> {flow.o_names} >") - return flow - - def import_input(self, input: DataFlow): - self._in.append(input) - - def import_output(self, output: DataFlow): - self._out.append(output) - - def set_backend(self, backend: ModelBackend): - self._backend = backend - - def _pass_error_or_stop_downstream(self, data: Union[Error, Stop]): - """ - Pass Error or Stop message to downstream dataflows. - - Args: - data: Error or Stop object to pass downstream - - Note: - If _future_consumer exists, the error/stop is wrapped in a Future - and sent through the consumer. Otherwise, it's sent directly to - output dataflows. - """ - if self._future_consumer is None: - # pass the error or stop message downstream - for out in self._out: - logger.debug("Passing error or stop message to %s", out.in_names) - out.put(data) - else: - f = Future() - f.set_result(data) - self._future_consumer.append_future(f) - - def run(self): - logger.debug("Model operator for %s started", self._model_name) - - # create preprocessors - for kind, processors in [("preprocessors", self._preprocessors), ("postprocessors", self._postprocessors)]: - if kind in self._model_config: - for config in self._model_config[kind]: - ProcessorClass = None - if config["kind"] == "auto": - ProcessorClass = AutoProcessor - elif config["kind"] == "custom": - ProcessorClass = CustomProcessor - if ProcessorClass is not None: - processors.append( - ProcessorClass( - config=config, - model_home=self._model_home - ) - ) - else: - raise Exception("Invalid Processor") - # backend loop - self._collector = self._create_collector() - if not self._out: - error = ErrorFactory.create( - "ERR_MO_003", - caller=self, - model_name=self._model_name, - severity=ErrorSeverity.CRITICAL, - related_config={"model_config": self._model_config} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - while not self._stop_event.is_set(): - try: - # collect input data until Stop is received - data = self._collector.collect() - if isinstance(data, Stop) or isinstance(data, Error): - self._pass_error_or_stop_downstream(data) - continue - logger.info("Input collected from %s: %s", self._collector.__class__.__name__, data) - - # convert data to args and kwargs based on if explicit batching is required - args = [] - kwargs = data - values = [v for v in data.values()] - lengths = [ - len(v) if isinstance(v, list) or v.ndim > 0 else 0 - for v in values - ] - if any(isinstance(v, list) for v in values) and \ - all(length == lengths[0] for length in lengths): - logger.info( - "Explicit batching detected, " - "splitting the data into multiple inference requests" - ) - # construct multiple inference requests - args = split_tensor_in_dict(kwargs) - kwargs = {} - # call preprocess() before passing args to the backend - processed, passthrough_tensors = self._preprocess(args if args else [kwargs]) - in_names = [i["name"] for i in self._model_config["input"]] - if not processed: - error = ErrorFactory.create( - "ERR_MO_001", - caller=self, - model_name=self._model_name, - input_data={ - "args": str(args)[:500] if args else "", - "kwargs_keys": list(kwargs.keys()) if kwargs else [] - }, - related_config={ - "preprocessors": [p.name for p in self._preprocessors], - "model_input": in_names - } - ) - error.log(logger, as_json=False) - self._pass_error_or_stop_downstream(error) - continue - if args: - # explicitly batched data - args = processed - elif kwargs: - # implicitly batched data - kwargs = processed[0] - else: - error = ErrorFactory.create( - "ERR_MO_004", - message="Invalid result from preprocess: both args and kwargs are empty", - caller=self, - model_name=self._model_name, - input_data={ - "processed": str(processed)[:500] if processed else "", - "passthrough_tensors_keys": list(passthrough_tensors[0].keys()) if passthrough_tensors else [] - } - ) - error.log(logger, as_json=False) - self._pass_error_or_stop_downstream(error) - continue - # execute inference backend and collect result - logger.debug("Model %s invokes backend %s with %s", self._model_name, self._backend.__class__.__name__, args if args else kwargs) - rs = self._backend(*args, **kwargs) - if isinstance(rs, Future): - def on_future_result(result: Dict|Error|Stop, user_data: List): - if isinstance(result, Error) or isinstance(result, Stop): - # Pass error/stop directly - already in FutureConsumer callback context - for out in self._out: - out.put(result) - return - self._on_inference_result(result, user_data[0]) - if self._future_consumer is None: - self._future_consumer = FutureConsumer( - name=self._model_name, - stop_event=self._stop_event, - result_callback=on_future_result - ) - self._future_consumer.append_future(rs, passthrough_tensors) - elif inspect.isgenerator(rs): - self._on_inference_result(rs, passthrough_tensors) - elif isinstance(rs, Error) or isinstance(rs, Stop): - self._pass_error_or_stop_downstream(rs) - continue - else: - error_msg = ( - f"Invalid result from backend {self._backend.__class__.__name__}: {rs}" - " Expected a Future or a generator" - ) - raise ValueError(error_msg) - except Empty: - continue - except Exception as e: - error = ErrorFactory.from_exception( - e, - caller=self, - category=ErrorCategory.BACKEND if "backend" in str(e).lower() else ErrorCategory.INTERNAL, - model_name=self._model_name, - dataflow_names=[name for o in self._out for name in o.in_names], - input_data={ - "data_keys": list(data.keys()) if 'data' in locals() and isinstance(data, dict) else [] - }, - related_config={ - "model_config": { - "name": self._model_config.get("name"), - "input": [i["name"] for i in self._model_config.get("input", [])], - "output": [o["name"] for o in self._model_config.get("output", [])] - }, - "backend": self._backend.__class__.__name__ if self._backend else None, - "n_preprocessors": len(self._preprocessors), - "n_postprocessors": len(self._postprocessors) - } - ) - error.log(logger, as_json=False) - - # Pass error downstream - self._pass_error_or_stop_downstream(error) - - logger.info(f"Model operator {self._model_name} stopped") - - def stop(self): - logger.info(f"Model operator {self._model_name} is stopping") - self._stop_event.set() - if self._collector is not None: - self._collector.stop() - if self._backend is not None: - self._backend.stop() - self._in.clear() - self._out.clear() - self._preprocessors.clear() - self._postprocessors.clear() - - def _on_inference_result(self, results: Generator, passthrough_tensors: Dict): - for r in results: - logger.debug( - "Model %s generated result from backend %s: %s", - self._model_name, self._backend.__class__.__name__, r - ) - # iterate the result list and postprocess each of them - for out in self._out: - output_data = {n : [] for n in out.in_names} - if isinstance(r, list): - # we get a batch - if len(passthrough_tensors) == 1: - passthrough_tensors = passthrough_tensors*len(r) - for i, result in enumerate(r): - if passthrough_tensors: - result.update(passthrough_tensors[i]) - result = self._postprocess(result) - if not all([n in result for n in out.in_names]): - error = ErrorFactory.create( - "ERR_MO_002", - message=f"Model output incomplete (batch item {i})", - caller=self, - model_name=self._model_name, - dataflow_names=out.in_names, - expected_data={"required_outputs": out.in_names}, - actual_data={"provided_outputs": list(result.keys())}, - related_config={"postprocessors": [p.name for p in self._postprocessors]} - ) - error.log(logger, as_json=False) - continue - # collect the result - for n, v in output_data.items(): - if n in result: - v.append(result[n]) - else: - v.append(None) - else: - # implicit batching - if passthrough_tensors: - r.update(passthrough_tensors[0]) - output_data = self._postprocess(r) - if not all([n in output_data for n in out.in_names]): - error = ErrorFactory.create( - "ERR_MO_002", - message="Model output incomplete", - caller=self, - model_name=self._model_name, - dataflow_names=out.in_names, - expected_data={"required_outputs": out.in_names}, - actual_data={"provided_outputs": list(output_data.keys())}, - related_config={"postprocessors": [p.name for p in self._postprocessors]} - ) - error.log(logger, as_json=False) - continue - logger.debug("ModelOperator of %s deposits result: %s", self._model_name, output_data) - out.put(output_data) - - def _preprocess(self, args: List): - # go through the preprocess chain - outcome = args - for preprocessor in self._preprocessors: - result = [] - for data in outcome: - # initialize the processed as the original values - processed = {k: v for k, v in data.items()} - # trigger the preprocessor if all the input tensors are present - if all([i in data for i in preprocessor.input]): - input = [processed.pop(i) for i in preprocessor.input] - logger.debug("%s invokes preprocessor %s with given input %s", self._model_name, preprocessor.name, input) - output = preprocessor(*input) - logger.debug("%s preprocessor %s generated output %s", self._model_name, preprocessor.name, output) - if len(output) != len(preprocessor.output): - error = ErrorFactory.create( - "ERR_PROC_001", - message=f"Number of preprocessing output doesn't match the configuration, expecting {len(preprocessor.output)}, while getting {len(output)}", - caller=self, - severity=ErrorSeverity.WARNING, - model_name=self._model_name, - expected_data={"output_count": len(preprocessor.output), "output_names": preprocessor.output}, - actual_data={"output_count": len(output)}, - related_config={"preprocessor": preprocessor.name} - ) - error.log(logger, as_json=False) - continue - # update as processed - for key, value in zip(preprocessor.output, output): - if value is not None: - processed[key] = value - else: - logger.info( - "Pre-processor %s skipped on mismatching input", - preprocessor.name - ) - result.append(processed) - # update outcome - outcome = result - # correct the data type and extract the passthrough tensors - passthrough_tensors = [] - for data in outcome: - passthrough_tensor = {} - for key in data: - value = data[key] - i_config = next((i for i in self._model_config['input'] if i["name"] == key), None) - if i_config is None: - logger.info("%s from preprocessed is not found in the model input config, adding it as a passthrough tensor", key) - passthrough_tensor[key] = value - else: - data_type = i_config["data_type"] - if isinstance(value, np.ndarray): - data_type = np_datatype_mapping[data_type] - if value.dtype != data_type: - data[key] = value.astype(data_type) - elif isinstance(value, torch.Tensor): - data_type = torch_datatype_mapping[data_type] - if value.dtype != data_type: - data[key] = value.to(data_type) - for key in passthrough_tensor: - data.pop(key) - passthrough_tensors.append(passthrough_tensor) - return outcome, passthrough_tensors - - def _postprocess(self, data: Dict): - processed = {k: v for k, v in data.items()} - for processor in self._postprocessors: - if not all([i in processed for i in processor.input]): - logger.info( - "Post-processor %s skipped on mismatching input", - processor.name - ) - continue - input = [processed.pop(i) for i in processor.input] - logger.debug("Post-processor %s invoked with given input %s", processor.name, input) - output = processor(*input) - logger.debug("Post-processor generated output %s", output) - if len(output) != len(processor.output): - error = ErrorFactory.create( - "ERR_PROC_001", - message=f"Number of postprocessing output doesn't match the configuration, expecting {len(processor.output)}, while getting {len(output)}", - caller=self, - severity=ErrorSeverity.WARNING, - model_name=self._model_name, - expected_data={"output_count": len(processor.output), "output_names": processor.output}, - actual_data={"output_count": len(output)}, - related_config={"postprocessor": processor.name} - ) - error.log(logger, as_json=False) - continue - # update as processed - for key, value in zip(processor.output, output): - processed[key] = value - return processed - - def _create_collector(self): - if len(self._in) == 1: - logger.info("Single data flow input detected, using single flow collector on model %s", self._model_name) - return SingleFlowCollector(self._in[0]) - else: - outputs = [set(d.o_names) for d in self._in] - intersection = set.intersection(*outputs) - if len(intersection) == 0 and not any([d.optional for d in self._in]): - logger.info("Aggregation data flow input detected, using aggregation flow collector on model %s", self._model_name) - return AggregationFlowCollector(self._in, timeout=1.0) - else: - logger.info("Multi data flow input detected, using multi flow collector on model %s", self._model_name) - return MultiFlowCollector(self._in, timeout=1.0) - -class InferenceBase: - """The base model that drives the inference flow""" - def initialize(self): - # Enable global error collection FIRST - before any error can occur - enable_global_error_collection(max_errors=5000) - atexit.register(InferenceBase._export_errors) - logger.info("Enhanced error collection enabled (with atexit export)") - - def parse_route(i1, i2) -> Route: - m1 = '' - m2 = '' - d1 = [] - d2 = [] - s = i1.split(':') - t = i2.split(':') - if len(s) > 2 or len(t) > 2: - error = ErrorFactory.create( - "ERR_ROUTE_001", - message=f"Invalid route format: {i1} -> {i2}", - component="InferenceBase", - operation="initialize", - severity=ErrorSeverity.CRITICAL, - input_data={"source": i1, "target": i2} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - else: - m1 = s[0] - m2 = t[0] - if len(s) == 2 and s[1]: - data = json.loads(s[1]) - if isinstance(data, list): - d1 = data - else: - error = ErrorFactory.create( - "ERR_ROUTE_001", - message="Invalid route: source data must be a list", - component="InferenceBase", - operation="initialize.parse_route", - severity=ErrorSeverity.CRITICAL, - input_data={"source_data": data} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - if len(t) == 2 and t[1]: - data = json.loads(t[1]) - if isinstance(data, list): - d2 = data - else: - error = ErrorFactory.create( - "ERR_ROUTE_001", - message="Invalid route: target data must be a list", - component="InferenceBase", - operation="initialize.parse_route", - severity=ErrorSeverity.CRITICAL, - input_data={"target_data": data} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - - return Route(Path(m1, m2), Path(d1, d2)) - - - self._operators: ModelOperator = [] - self._inputs: List[DataFlow] = [] - self._outputs: List[DataFlow] = [] - self._input_config = OmegaConf.to_container(global_config.input) - self._output_config = OmegaConf.to_container(global_config.output) - self._model_repo = global_config.model_repo - self._ready = False - - if not os.path.exists(self._model_repo): - error = ErrorFactory.create( - "ERR_SYS_001", - message=f"Model repository {self._model_repo} does not exist", - caller=self, - severity=ErrorSeverity.CRITICAL, - related_config={"model_repo": self._model_repo} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - - # set up the inference flow - for model_config in global_config.models: - self._operators.append(ModelOperator(OmegaConf.to_container(model_config), self._model_repo)) - - # initialize the operators - for operator in self._operators: - model_config = next((m for m in global_config.models if m.name == operator.model_name), None) - model_home = os.path.join(self._model_repo, operator.model_name) - backend_spec = model_config.backend.split('/') - backend_instance = self._create_backend(backend_spec, model_config, model_home) - if backend_instance is None: - raise RuntimeError(f"Unable to create backend {model_config.backend}") - operator.set_backend(backend_instance) - - if hasattr(global_config, "routes"): - # go through the routing table - for k, v in global_config.routes.items(): - route = parse_route(k, v) - logger.debug("Adding route %s", route) - # neither source nor target model is specified. - if not route.model.source and not route.model.target: - # this is a direct passthrough in the top level, we can use a standalone dataflow - if not route.data.source and not route.data.target: - logger.error(f"Invalid route: {route}, source or target is required for a direct pass") - continue - dataflow = None - if route.data.source: - s_configs = [OmegaConf.to_container(c) for c in global_config.input if c.name in route.data.source] - if len(s_configs) != len(route.data.source): - logger.error(f"Not all the sources are found in the input configs, unable to create passthrough dataflow") - continue - o_tensor_names = route.data.target if route.data.target else route.data.source - if any(n not in [c.name for c in global_config.output] for n in o_tensor_names): - logger.warning(f"Not all the output tensors from {o_tensor_names} are found in the output configs, consider adding a postprocessor to generate the missing tensors") - tensor_names = [(i['name'], o) for i, o in zip(s_configs, o_tensor_names)] - dataflow = DataFlow(configs=s_configs, tensor_names=tensor_names, inbound=True) - elif route.data.target: - t_configs = [OmegaConf.to_container(c) for c in global_config.output if c.name in route.data.target] - if len(t_configs) != len(route.data.target): - logger.error(f"Not all the targets are found in the output configs, unable to create passthrough dataflow") - continue - if any(n not in [c.name for c in global_config.input] for n in route.data.target): - logger.error(f"Not all the targets are found in the input configs, unable to create passthrough dataflow") - continue - tensor_names = [(i, i) for i in route.data.target] - dataflow = DataFlow(configs=t_configs, tensor_names=tensor_names, outbound=True) - else: - logger.error(f"Invalid route: {route}, source or target is required for a direct pass") - continue - if dataflow is not None: - self._inputs.append(dataflow) - self._outputs.append(dataflow) - elif route.model.target: - operator1 = next((o for o in self._operators if o.model_name == route.model.target), None) - if operator1 is None: - error = ErrorFactory.create( - "ERR_ROUTE_002", - message=f"Model {route.model.target} in the routes not found", - caller=self, - severity=ErrorSeverity.CRITICAL, - input_data={"model_name": route.model.target}, - related_config={"available_models": [o.model_name for o in self._operators]} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - # both source and target model are specified. - if route.model.source: - # this is the model provides data - operator2 = next((o for o in self._operators if o.model_name == route.model.source), None) - if operator2 is None: - error = ErrorFactory.create( - "ERR_ROUTE_002", - message=f"Model {route.model.source} in the routes not found", - caller=self, - severity=ErrorSeverity.CRITICAL, - input_data={"model_name": route.model.source}, - related_config={"available_models": [o.model_name for o in self._operators]} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - flow = None - if route.data.source and route.data.target: - tensor_names = [(i, o) for i, o in zip(route.data.source, route.data.target)] - flow = DataFlow(configs=None, tensor_names=tensor_names) - elif route.data.source: - tensor_names = [(i, i) for i in route.data.source] - flow = DataFlow(configs=None, tensor_names=tensor_names) - elif route.data.target: - tensor_names = [(i, i) for i in route.data.target] - flow = DataFlow(configs=None, tensor_names=tensor_names) - else: - logger.error(f"Invalid route: {route}, source or target is required for connecting two models, {operator2.model_name} and {operator1.model_name}") - continue - operator2.import_output(flow) - operator1.import_input(flow) - else: - # this is the top level input - if route.data.source: - s_configs = [] - for s in route.data.source: - c = next((c for c in global_config.input if c.name == s), None) - if c is None: - logger.error(f"Input {s} not found in the input configs, unable to create dataflow") - continue - s_configs.append(OmegaConf.to_container(c)) - else: - s_configs = [OmegaConf.to_container(c) for c in global_config.input] - self._inputs.append(operator1.bind_input(s_configs, route.data.target)) - # only source model is specified. - elif route.model.source: - # this is the top level output - operator = next((o for o in self._operators if o.model_name == route.model.source), None) - if operator is None: - error = ErrorFactory.create( - "ERR_ROUTE_002", - message=f"Model {route.model.source} in the routes not found", - caller=self, - severity=ErrorSeverity.CRITICAL, - input_data={"model_name": route.model.source}, - related_config={"available_models": [o.model_name for o in self._operators]} - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - if route.data.target: - configs = [OmegaConf.to_container(c) for c in global_config.output if c.name in route.data.target] - self._outputs.append(operator.bind_output(configs, route.data.source)) - else: - configs = [OmegaConf.to_container(c) for c in global_config.output if c.name in route.data.source] - if route.data.source == [c['name'] for c in configs]: - self._outputs.append(operator.bind_output(configs)) - else: - logger.warning(f"Output of {operator.model_name} is not compatible with top level output, be sure to add a top level postprocessor") - dataflow = DataFlow(configs=None, tensor_names=[(i, i) for i in route.data.source]) - operator.import_output(dataflow) - self._outputs.append(dataflow) - else: - logger.warning("Empty route entry") - elif len(self._operators) == 1: - # default flow for single model use case without an explicit route - operator = self._operators[0] - # direct connection from top level input to the model - self._inputs.append(operator.bind_input(OmegaConf.to_container(global_config.input))) - # direct connection from the model to top level output - self._outputs.append(operator.bind_output(OmegaConf.to_container(global_config.output))) - else: - logger.error("Unable to set up inference routes") - if len(self._inputs) == 0 or len(self._outputs) == 0: - error = ErrorFactory.create( - "ERR_SYS_002", - message="Either input or output is empty, inference pipeline is not complete", - caller=self, - severity=ErrorSeverity.CRITICAL, - actual_data={ - "n_inputs": len(self._inputs), - "n_outputs": len(self._outputs) - }, - related_config={ - "models": [o.model_name for o in self._operators] - } - ) - error.log(logger, as_json=False) - raise RuntimeError(str(error)) - self._executor = ThreadPoolExecutor(max_workers=len(self._operators)) - self._future = None - - # sanity check on vision pipeline - try: - Pipeline("vision") - except Exception as e: - logger.exception(e) - - # post processing: - self._processors = [] - if hasattr(global_config, "postprocessors"): - configs = OmegaConf.to_container(global_config.postprocessors) - for config in configs: - if config["kind"] == "custom": - self._processors.append( - CustomProcessor(config, self._model_repo) - ) - - # data collector - self._collector = ( - AggregationFlowCollector(self._outputs) - if len(self._outputs) > 1 - else SingleFlowCollector(self._outputs[0]) - ) - # async dispatcher - self._async_dispatcher = None - # stop event for request lifecycle - self._stop_event = threading.Event() - - - # start the inference flow - for operator in self._operators: - self._submit(operator) - - self._ready = True - logger.info("Inference Engine initialized for %s", global_config.name) - logger.info("Inputs: %s", [f.o_names for f in self._inputs]) - logger.info("Outputs: %s", [f.o_names for f in self._outputs]) - - def is_healthy(self): - return self._ready - - def finalize(self): - if self._stop_event is not None: - self._stop_event.set() - if self._async_dispatcher is not None: - self._async_dispatcher.stop() - self._async_dispatcher = None - if self._collector is not None: - self._collector.stop() - self._collector = None - for operator in self._operators: - operator.stop() - self._executor.shutdown() - - logger.info("Inference pipeline is finalized") - - @staticmethod - def _export_errors(): - """Export collected errors to JSON file for test validation. - - Uses ERROR_EXPORT_PATH env var to determine the full file path - (defaults to /tmp/inference_errors.json). - """ - error_export_path = os.environ.get("ERROR_EXPORT_PATH", "/tmp/inference_errors.json") - try: - collector = get_global_error_collector() - if collector: - stats = collector.get_stats(include_recent=100) - collector.export_to_json(error_export_path, include_stack_traces=False) - logger.info("Exported %s errors to %s", stats['total_errors'], error_export_path) - except Exception as e: - logger.warning("Failed to export errors: %s", e) - - def _create_backend(self, backend_spec: List[str], model_config: Dict, model_home: str) -> ModelBackend | None: - raise NotImplementedError("Subclass must implement this method") - - def _on_operator_done(self, future: Future, operator: ModelOperator): - """Callback when an operator thread completes. Handles exceptions by logging to error JSON.""" - try: - future.result() # This raises if the thread had an exception - except Exception as e: - error = ErrorFactory.from_exception( - e, - caller=self, - category=ErrorCategory.INTERNAL, - model_name=operator.model_name, - related_config={ - "model_config": { - "name": operator.model_config.get("name"), - "preprocessors": operator.model_config.get("preprocessors", []), - "postprocessors": operator.model_config.get("postprocessors", []) - } - } - ) - error.log(logger, as_json=False) - - logger.critical(f"Operator {operator.model_name} thread failed with exception: {e}") - logger.critical("Forcing application exit due to model thread failure") - - # Export errors and force exit - no graceful shutdown for unrecoverable critical exception - InferenceBase._export_errors() - os._exit(1) - - def _submit(self, op: ModelOperator): - future = self._executor.submit(lambda: op.run()) - future.add_done_callback(lambda f: self._on_operator_done(f, op)) \ No newline at end of file diff --git a/tools/inference_builder/lib/responder.py b/tools/inference_builder/lib/responder.py deleted file mode 100644 index 2e5c24ca..00000000 --- a/tools/inference_builder/lib/responder.py +++ /dev/null @@ -1,137 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -from lib.asset_manager import AssetManager -from lib.utils import create_jinja2_env, stack_tensors_in_dict, convert_list, get_logger -from omegaconf.errors import ConfigKeyError -from omegaconf import OmegaConf -import base64 -from config import global_config -import json -import re -from pydantic import BaseModel -from typing import Dict, Any - -jinja2_env = create_jinja2_env() - -class ResponderBase: - def __init__(self): - self._action_map = {} - self._inference = None - self._request_templates = {} - self._response_templates = {} - self._asset_manager = AssetManager() - self.logger = get_logger(__name__) - - # load the request and response templates - try: - input_config = OmegaConf.to_container(global_config.server.responders) - except ConfigKeyError: - raise ValueError("No responders found in the config") - for rp, value in input_config.items(): - req_tpls = value.get("requests", {}) - for k, tpl in req_tpls.items(): - if rp not in self._request_templates: - self._request_templates[rp] = {} - if isinstance(tpl, list): - self._request_templates[rp][k] = tpl - else: - self._request_templates[rp][k] = base64.b64decode(tpl).decode() - res_tpls = value.get("responses", {}) - for k, tpl in res_tpls.items(): - if rp not in self._response_templates: - self._response_templates[rp] = {} - if isinstance(tpl, list): - self._response_templates[rp][k] = tpl - else: - self._response_templates[rp][k] = base64.b64decode(tpl).decode() - - async def take_action(self, action_name:str, *args): - action = self._action_map.get(action_name, None) - if not action: - raise ValueError(f"Unknown action: {action_name}") - return await action(*args) - - def healthy_ready(self): - return self._inference and self._inference.is_healthy() - - def process_request(self, responder: str, request: BaseModel) -> Dict[str, Any]: - self.logger.debug(f"Processing request {request}") - - result = json.loads(request.model_dump_json()) - - # find the request template for the endpoint - templates = self._request_templates.get(responder, None) - if not templates: - # no template to be applied on the request - return result - - request_class = next(iter(templates.keys())) - template = templates[request_class] - json_string = jinja2_env.from_string(template).render(request=result) - try: - result = json.loads(json_string) - except Exception as e: - self.logger.error(f"Error parsing request template: {e}") - self.logger.error(f"Json string: {json_string}") - raise e - - # template filters on each field - for key, value in templates.items(): - if not key in result: - continue - if isinstance(value, list): - # this is regex filter for fields - text = result.pop(key) - if not isinstance(text, str): - continue - regx = value[0] - keys = value[1:] - matches = re.findall(regx, text) - for match in matches: - if len(keys) != len(match): - continue - for x, y in zip(keys, match): - if y: - result.setdefault(x, []).append(y) - return result - - def process_response(self, responder: str, request, response: Dict[str, Any]) -> str: - self.logger.debug(f"Processing response {response}") - # Load the response template for the endpoint - templates = self._response_templates.get(responder, None) - if not templates: - # no template to be applied on the response - return response - - response_class = next(iter(templates.keys())) - template = templates[response_class] - json_string = jinja2_env.from_string(template).render(request=request, response=response) - return json_string - - def process_streamed_response(self, responder: str, request, response: Dict[str, Any]) -> str: - self.logger.debug(f"Processing streamed response {response}") - # Load the response template for the endpoint - templates = self._response_templates.get(responder, None) - if not templates: - # no template to be applied on the response - return response - keys = list(templates.keys()) - if len(keys) < 2: - return response - template = templates[keys[1]] - json_string = jinja2_env.from_string(template).render(request=request, response=response) - return json_string diff --git a/tools/inference_builder/lib/utils.py b/tools/inference_builder/lib/utils.py deleted file mode 100644 index 56bd152c..00000000 --- a/tools/inference_builder/lib/utils.py +++ /dev/null @@ -1,387 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import os -import re -import sys -import logging -import time -from typing import Callable, Optional, List, Dict, Any -import importlib -import numpy as np -import torch -import jinja2 -import json -from queue import Queue, Full, Empty -from concurrent.futures import Future -import threading - -kDebug = int(os.getenv("DEBUG", "0")) -PACKAGE_NAME = "ib" - -class NumpyFlatEncoder(json.JSONEncoder): - def default(self, obj): - if isinstance(obj, np.ndarray): - return obj.flatten().tolist() - return super().default(obj) - - -def concat_tensors_in_dict(list_of_tensor_dicts: List) -> Dict: - result = {} - - # Iterate over each dictionary in the list - for d in list_of_tensor_dicts: - for key, value in d.items(): - if isinstance(value, np.ndarray): - result[key] = np.concatenate(result[key], value) if key in result else value - elif isinstance(value, torch.Tensor): - result[key] = torch.cat((result[key], value)) if key in result else value - else: - result[key] = result[key] + value if key in result else value - return result - -def stack_tensors_in_dict(list_of_tensor_dicts: List) -> Dict: - """ - [{'k1': 'v1', 'k2': 'v2'}, {'k1': 'v3', 'k2': 'v4'}] -> - {'k1': ['v1', 'v3'], 'k2': ['v2', 'v4']} - """ - result = {} - - # Iterate over each dictionary in the list - for d in list_of_tensor_dicts: - for key, value in d.items(): - if key not in result: - result[key] = [] # Create a new list for each new key - result[key].append(value) # Append the value to the list - # Iterate over the combined dictionary - for key in result: - tensor_list = result[key] - if isinstance(tensor_list[0], np.ndarray): - result[key] = np.stack(tensor_list, axis=0) - elif isinstance(tensor_list[0], torch.Tensor): - result[key] = torch.stack(tensor_list, dim=0) - - return result - -def split_tensor_in_dict(dict_of_tensor_list: Dict) -> List: - """ - {'k1': ['v1', 'v2'], 'k2': ['v3', 'v4']} -> - [{'k1': 'v1', 'k2': 'v3'}, {'k1': 'v2', 'k2': 'v4'}] - """ - values = [dict_of_tensor_list[k] for k in dict_of_tensor_list] - result = [] - - def _len(v): - if isinstance(v, list): - return len(v) - if isinstance(v, np.ndarray) and v.ndim > 0: - return len(v) - return 1 - - length = min(_len(v) for v in values) - for i in range(length): - result.append({ - k: v.item() if isinstance(v, np.ndarray) and v.ndim == 0 else v[i] - for k, v in dict_of_tensor_list.items() - }) - - return result - - -def convert_list(i: List, f: Callable): - # If the item is a list, apply the function recursively - if isinstance(i, list): - return [convert_list(item, f) for item in i] - else: - return f(i) - -def import_class(module_name, class_name): - # Import the module using importlib - module = importlib.import_module(module_name) - - # Get the class from the module using getattr - class_ = getattr(module, class_name) - - return class_ - -def create_jinja2_env(): - def start_with(field, s): - return field.startswith(s) - - def replace(value, pattern, text): - return re.sub(pattern, text, value) - - def extract(value, pattern): - match = re.search(pattern, value) - return match.group(1) if match else '' - - def raise_helper(message): - raise Exception(message) - - def tolist(value): - if hasattr(value, 'tolist'): - # Convert NumPy array to list and flatten to 1D - return value.flatten().tolist() - elif isinstance(value, list): - # Already a list, return as is - return value - else: - # Fallback: try to convert to list - return list(value) - - jinja2_env = jinja2.Environment() - jinja2_env.tests["startswith"] = start_with - jinja2_env.filters["replace"] = replace - jinja2_env.filters["extract"] = extract - jinja2_env.filters["tolist"] = tolist - jinja2_env.filters["zip"] = zip - jinja2_env.globals["raise"] = raise_helper - - return jinja2_env - -def get_logger(name: Optional[str] = None) -> logging.Logger: - """ Get component logger - - Parameters: - name: a module name - - Returns: A Logger Instance - """ - - log_level = os.getenv("LOG_LEVEL", "INFO").upper() - if kDebug: - log_level = logging.DEBUG - name = f"{PACKAGE_NAME}.{name}" - log_format = "%(asctime)s [%(levelname)s] [%(name)s]: %(message)s" - # sys.stdout.reconfigure(encoding="utf-8") - sys.stderr.reconfigure(encoding="utf-8") - print(f"logger {str(name)}, log_level: {str(log_level)}") - logging.basicConfig( - level=log_level, - format=log_format, - handlers=[logging.StreamHandler(sys.stderr)], - ) - logger = logging.getLogger(name) - logger.propagate = True - # formatter = logging.Formatter(log_format) - # stream_handler = logging.StreamHandler(sys.stdout) - # stream_handler.setFormatter(formatter) - # stream_handler.setLevel(log_level) - # logger.handlers.clear() - # logger.addHandler(stream_handler) - return logger - -def flush(logger): - for h in logger.handlers: - h.flush() - - -class SimpleLogger: - def __init__(self, name: str = ""): - self.name = name - def log_print(self, level, *args, **kwargs): - asctime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) - prefix = f"{asctime} [{str(level)}] [{self.name}]: " - print(prefix, *args, **kwargs) - - def debug(self, *args, **kwargs): - if kDebug: - self.log_print("DEBUG", *args, **kwargs) - - def info(self, *args, **kwargs): - self.log_print("INFO", *args, **kwargs) - - def warning(self, *args, **kwargs): - self.log_print("WARNING", *args, **kwargs) - - def error(self, *args, **kwargs): - self.log_print("ERROR", *args, **kwargs) - -def tensor_info(tensor): - return f" shape: {tensor.shape}, dtype: {tensor.dtype}, dtype: {tensor.device}" - - -logger = get_logger(__name__) - -class FutureWrapper: - """A future wrapper for collecting results from an asynchronous operation""" - def __init__(self, future: Future, depot: Queue, *user_data): - self._future = future - self._depot = depot - self._user_data = list(user_data) - self._future.add_done_callback(self._on_done) - - - def __repr__(self): - return f"FutureWrapper(done={self._future.done()})" - - def _on_done(self, future: Future): - try: - self._depot.put_nowait(self) - except Full: - # fallback policy: best-effort enqueue with small timeout or log-and-drop - try: - self._depot.put(self, timeout=1) - except Full: - logger.warning( - f"FutureWrapper failed to enqueue to depot, dropped" - "consider increasing the future depot size" - ) - - @property - def user_data(self): - return self._user_data - - def result(self): - return self._future.result() - - def done(self): - return self._future.done() - - def cancel(self): - self._future.cancel() - -class FutureConsumer: - def __init__(self, - name: str, - stop_event: threading.Event, - result_callback: Callable[[Any, Any], None]): - self._name = name - self._stop_event = stop_event - self._future_depot = Queue() - self._future_lock = threading.Lock() - self._future_list = [] - self._result_callback = result_callback - self._future_consumer_thread = threading.Thread( - target=self.run, - daemon=True - ) - self._future_consumer_thread.start() - - def append_future(self, future: Future, *user_data): - future_wrapper = FutureWrapper(future, self._future_depot, *user_data) - with self._future_lock: - self._future_list.append(future_wrapper) - - def run(self): - if self._stop_event is None: - logger.error(f"Future consumer {self._name} failed to start, stopped event is None") - return - if not callable(self._result_callback): - logger.error(f"Future consumer {self._name} failed to start, result callback is not callable") - return - - logger.info(f"Future consumer for {self._name} started") - # Keep consuming completion signals and emit results in FIFO order of submission - while not self._stop_event.is_set(): - try: - # Wait for any future to complete; we only use this as a signal - future_wrapper = self._future_depot.get(timeout=1) - except Empty: - continue - except Exception as e: - logger.exception(e) - continue - - # Flush all completed futures from the head of the list (preserving order) - while True: - with self._future_lock: - if not self._future_list: - logger.info(f"Future consumer {self._name} future list is empty.") - break - if not self._future_list[0].done(): - logger.info(f"Future consumer {self._name} the first future in the list is not actually done. {self._future_list}") - break - future_wrapper = self._future_list.pop(0) - self._result_callback(future_wrapper.result(), future_wrapper.user_data) - - logger.info(f"Future consumer for {self._name} stopped") - -class ResultQueue: - def __init__(self, - queue: Queue, - result_callback: Callable[[Any, Any], None], - user_data: Any, - stop_event: Optional[threading.Event] = None): - self._queue = queue - self._result_callback = result_callback - self._user_data = user_data - self._stop_event = stop_event - - def __repr__(self): - return f"ResultQueue(queue={self._queue}, result_callback={self._result_callback}, user_data={self._user_data})" - - def get_all(self): - while self._stop_event is None or not self._stop_event.is_set(): - try: - item = self._queue.get(timeout=1.0) - except Empty: - # nothing to drain right now - continue - except Exception as e: - logger.exception(e) - break - self._result_callback(item, self._user_data) - if not item: - break - logger.debug(f"ResultQueue drained") - -class QueueConsumer: - """Consume ResultQueues in a single daemon thread and emit results. - - Submit work via append_queue(queue, result_callback, user_data=None). - Items pulled from the provided `queue` will be forwarded to - `result_callback(item, user_data)`. - """ - - def __init__(self, - name: str, - stop_event: threading.Event, - queue_get_timeout: float = 1.0): - self._name = name - self._stop_event = stop_event - self._queue_get_timeout = queue_get_timeout - self._queue_depot = Queue() - self._queue_consumer_thread = threading.Thread(target=self.run, daemon=True) - self._queue_consumer_thread.start() - - def append_queue(self, - queue: Queue, - result_callback: Callable[[Any, Any], None], - user_data: Any = None): - if not callable(result_callback): - logger.error(f"Queue consumer {self._name} append_queue failed: result_callback is not callable") - return - result_queue = ResultQueue(queue, result_callback, user_data, self._stop_event) - self._queue_depot.put(result_queue) - - def run(self): - if self._stop_event is None: - logger.error(f"Queue consumer {self._name} failed to start, stopped event is None") - return - - logger.info(f"Queue consumer for {self._name} started") - while not self._stop_event.is_set(): - try: - q = self._queue_depot.get(timeout=self._queue_get_timeout) - except Empty: - continue - except Exception as e: - logger.exception(e) - continue - q.get_all() - - logger.info(f"Queue consumer for {self._name} stopped") diff --git a/tools/inference_builder/mcp.png b/tools/inference_builder/mcp.png deleted file mode 100644 index 7d0bb1cb124ef85a5316b5dcdbfb87c28f7e5ccb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150765 zcmc$`cT`l{vo*?5F#v)I0VNm^1QZZS62*ilIZKozIp@%zC?Jv~XHdymKyntL2?8R} zgeHiD7McdhLK9wX@Z8_`{`khYcZ~bSV{km(&F;O|UaMBstXZ?Rzr3vEak6t{BqSuq zr5@f>Bq1T4AR#%}cJwfOLK7xo3IF@YUQzN6Nq#5&47@pHEFmL7LQ)t)zNJSB?~mC$ zd}2>R!u$*Q?;mdiQhE}S-889t63Q+*bK9;lT8@e9yLFvesF_*RoJUrbqr*p8pt2?qIa+ zcd3QPj%tpCI&nqEOre_8s-8#()-JST-+jAIT!N5ecICsmPGYtA18r^X2Qad|pLZtG z!~_4n;jTD3@z38kS9w0W{QLQvKyJprub*GK9C+mK>vt{xjl*xw&d&0z`Aqb6cfWTK zvecy@ssE&)qH?8Y@*LmZd9DUa9h<;nv5}9`<^uj9iQ&)A$(gbdL|!95ETmVS@4bM3 z&d}+J{QLU;16r!TuWyH*Y(Dt+wY=f0#eWa^Zyk=zMsuxA_0ZoD_}K_0@=!F^(vm#? zAjN!Y?S5l+etuNr_(v{e#YsqF&M3phWKFdW?Y~$0=YM}p|HE7O|K)K0yhfKs?&j5h zC;NvX_rEJWI-0M{Zlo*ns%J)IUVh7^tgF>9m}n#?OifMA&czkY?C9*AlatdfW;i4` zSddm&s9;s5x#*(R(b2KiN6VVrl`%A=aVt@_lZ{22Czig)+0)Ungr3q5bz|>h^{Fvu zBNv-8t+<-SZt%UjbFm}#rsVQ;hmwp;5Q>i_)HE*chJo*NM|{R$v2iK@HebS zMfmvmvTAE}8lHZuor#!SCr&N87}EMC$QmnnFa4kAt>E4<^!v$5+_2p`eE4w0qqK-t z!!tn-2sv_OA?Osko6j=ezn4f$OS7vQ;i0&jrTl2oW!Nlb+(C%?=pkh_HDt6LXUGPf z`O@xPI@zRu!-$9O$|?U32@A+YxWmrZEx${0`RQMcmRn&XUf8>v=BJN*7M0izB|k!Y zFV5icJ)<@5CGP81C1qt;wPc(3@()*6SC@#}ifj53j~@p(EsW;XxUXkdR6HTB5qgqD z-Ft_JbLZ!+u7pcfXmP5jspX`nKS;lo=Ba#r#$m|qI;_b3V{LL@z=7@kH1S_yv0<

Tk78Z7j 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 uV|bf~Zy!Ii`tRIzyE0>}0fQm`XxY?v{Zaa0z diff --git a/tools/inference_builder/mcp/QUICK_NORMALIZATION_REFERENCE.md b/tools/inference_builder/mcp/QUICK_NORMALIZATION_REFERENCE.md deleted file mode 100644 index 7dd0504c..00000000 --- a/tools/inference_builder/mcp/QUICK_NORMALIZATION_REFERENCE.md +++ /dev/null @@ -1,211 +0,0 @@ -# Quick Normalization Reference - -## The Two Critical Parameters - -When generating DeepStream nvinfer configs, **BOTH** of these parameters must exactly match your model's training preprocessing: - -### 1. `net-scale-factor` -**Purpose**: Scales pixel values (typically from [0-255] range) - -**Common values**: -- `0.00392156862745098` (1/255) - Most common, scales to [0,1] -- `0.5` - Scales by half -- `1.0` - No scaling - -### 2. `offsets` (per-channel mean subtraction) -**Purpose**: Subtracts mean values from each color channel after scaling - -**Format**: `R;G;B` (Red;Green;Blue) - -**Common values**: -- **Not specified** or `0;0;0` - No mean subtraction -- `127.5;127.5;127.5` - For [-1,1] normalization -- `123.675;116.28;103.53` - ImageNet mean values - ---- - -## Quick Decision Tree - -### Step 1: Check your training code - -```python -# Example 1: Simple [0,1] scaling -image = image / 255.0 -``` -**Config**: `net_scale_factor: 0.00392156862745098`, **no offsets** - ---- - -```python -# Example 2: [-1,1] normalization -image = (image / 255.0 - 0.5) * 2 -# or: image = (image - 127.5) / 127.5 -``` -**Config**: `net_scale_factor: 0.00392156862745098`, `offsets: "127.5;127.5;127.5"` - ---- - -```python -# Example 3: ImageNet normalization -transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) -``` -**Config**: `net_scale_factor: 0.00392156862745098`, `offsets: "123.675;116.28;103.53"` -*(mean values × 255)* - ---- - -```python -# Example 4: Custom scaling -image = image * 0.5 -``` -**Config**: `net_scale_factor: 0.5`, **no offsets** - ---- - -```python -# Example 5: Custom scaling with mean subtraction -image = (image * 0.01) - custom_mean -``` -**Config**: `net_scale_factor: 0.01`, `offsets: "{R};{G};{B}"` *(your custom mean values)* - ---- - -```python -# Example 6a: Division by std (uniform std across channels) -image = image / 255.0 -image = (image - mean) / std # If std=0.229 for all channels -``` -**Config**: `net_scale_factor: 0.0171302428` *(1/(255×0.229))*, `offsets: "2.118;1.991;1.773"` *(mean/std)* - -⚠️ **Note**: This only works if std is the same for all channels. For per-channel std (e.g., ImageNet `std=[0.229, 0.224, 0.225]`), you need to bake normalization into the ONNX model or use a custom preprocessing plugin, as DeepStream only supports a single scale factor. - ---- - -```python -# Example 6b: Multiplication by scale factor d -image = image * d / 255.0 # Where d might be 1/std or a custom constant -``` -**Config**: `net_scale_factor: d/255` *(if d=0.5, then 0.5/255 = 0.00196078)* - -**Note**: The scale factor becomes `d/255` instead of `1/255`. This pattern is used when training applies a custom scale factor `d`. - ---- - -## The Formula - -DeepStream applies: -``` -output_pixel = (input_pixel × net_scale_factor) - offset -``` - -### Examples: - -**[0,1] normalization** (no offsets): -``` -output = pixel × 0.00392156862745098 -output = pixel / 255 -Result: [0, 1] range -``` - -**[-1,1] normalization** (with offsets): -``` -output = (pixel × 0.00392156862745098) - 0.5 -output = (pixel / 255) - 0.5 -Result: [-0.5, 0.5] range → typically then multiplied by 2 in the model -``` - -**ImageNet normalization**: -``` -For red channel: -output = (pixel × 0.00392156862745098) - 0.485 -output = (pixel / 255) - 0.485 -``` - ---- - -## Common Mistakes - -### ❌ Mistake 1: Using default values without checking training -```yaml -# Default assumes [0,1] normalization -net-scale-factor: 0.00392156862745098 -# No offsets -``` -**Problem**: If your model was trained with ImageNet normalization or [-1,1] range, this will give wrong results! - -### ❌ Mistake 2: Forgetting per-channel offsets -```python -# Training code used: -image = (image / 255) - 0.5 # [-1,1] normalization -``` -```yaml -# But config only sets scale factor: -net-scale-factor: 0.00392156862745098 -# Missing: offsets: "127.5;127.5;127.5" -``` -**Problem**: Mean subtraction is missing, results will be incorrect! - -### ❌ Mistake 3: Wrong offset values -```yaml -# Model trained with ImageNet mean -net-scale-factor: 0.00392156862745098 -offsets: "127.5;127.5;127.5" # WRONG! Should be ImageNet means -``` -**Problem**: Using wrong per-channel values will shift colors incorrectly! - ---- - -## Verification Checklist - -Before deploying your config: - -- [ ] I checked my training code for the exact preprocessing steps -- [ ] I verified the `net-scale-factor` matches the scaling in training -- [ ] I verified the `offsets` match any mean subtraction in training -- [ ] If training had NO mean subtraction, I did NOT set offsets -- [ ] If training had per-channel means, I set the correct RGB values -- [ ] I tested with a known input and compared results - ---- - -## When in Doubt - -1. **Test with known inputs**: Use images with known pixel values -2. **Compare outputs**: Run the same image through training and inference -3. **Check model documentation**: Look for preprocessing specifications -4. **Ask the model creator**: They should know the exact normalization used - ---- - -## Real-World Examples - -### YOLOv5 -```yaml -net-scale-factor: 0.00392156862745098 # Scales to [0,1] -# No offsets - training used simple /255 normalization -``` - -### ResNet-50 (ImageNet pre-trained) -```yaml -net-scale-factor: 0.00392156862745098 # Scales to [0,1] -offsets: "123.675;116.28;103.53" # ImageNet per-channel means -``` - -### TAO ChangeNet ([-1,1] range) -```yaml -net-scale-factor: 0.00392156862745098 # Scales to [0,1] -offsets: "127.5;127.5;127.5" # Subtracts 0.5 per channel -``` - ---- - -## Remember - -> **Both `net-scale-factor` AND `offsets` are equally critical!** -> -> Using the wrong scale factor OR wrong per-channel offsets will result in poor inference accuracy, regardless of how good your model is. - -For detailed information, see: -- [NORMALIZATION_GUIDE.md](NORMALIZATION_GUIDE.md) - Comprehensive guide -- [EXAMPLE_DEEPSTREAM_CONFIG.md](EXAMPLE_DEEPSTREAM_CONFIG.md) - Usage examples - diff --git a/tools/inference_builder/mcp/README-MCP.md b/tools/inference_builder/mcp/README-MCP.md deleted file mode 100644 index c4f16f15..00000000 --- a/tools/inference_builder/mcp/README-MCP.md +++ /dev/null @@ -1,217 +0,0 @@ -# MCP Server Internal Documentation - -This document provides detailed technical documentation for the Inference Builder MCP server. For getting started and basic usage, see the [main README](../README.md#mcp-integration). - -## Tool Reference - -### `generate_inference_pipeline` - -Generates an inference pipeline from a YAML configuration file. - -| Parameter | Required | Description | -|-----------|----------|-------------| -| `config_file` | Yes | Path to the YAML configuration file | -| `server_type` | No | Type of server to generate (`triton`, `fastapi`, `nim`, `serverless`) | -| `output_dir` | No | Output directory for generated code | -| `api_spec` | No | Path to OpenAPI specification file | -| `custom_modules` | No | List of custom Python module files | -| `exclude_lib` | No | Exclude common library from generated code | -| `tar_output` | No | Create a tar.gz archive of the output | -| `validation_dir` | No | Validation directory path to build validator | -| `no_docker` | No | Use local OpenAPI Generator instead of Docker | -| `test_cases_abs_path` | No | Use absolute paths in generated test_cases.yaml | - -### `build_docker_image` - -Builds a Docker image from a generated inference pipeline. - -| Parameter | Required | Description | -|-----------|----------|-------------| -| `image_name` | Yes | Name for the Docker image | -| `dockerfile` | Yes | Path to Dockerfile (must be placed in the output directory) | - -### `prepare_model_repository` - -Prepares a model repository by downloading models from NGC or Hugging Face and copying configuration files. - -| Parameter | Required | Description | -|-----------|----------|-------------| -| `model_configs` | Yes | List of model configurations to prepare | -| `config_dir` | No | Base directory for resolving relative config paths | - -### `docker_run_image` - -Runs a Docker image with optional model repository mounting and environment configuration. - -| Parameter | Required | Default | Description | -|-----------|----------|---------|-------------| -| `image_name` | Yes | - | Name of the Docker image to run | -| `model_repo_host` | No | - | Host path to model repository | -| `model_repo_container` | No | `/models` | Container path for model repository | -| `server_type` | No | `serverless` | Server type hint | -| `env` | No | - | Environment variables to set | -| `cmd` | No | - | Command-line arguments. For serverless flows, supply input values here using `-- ` flags. **Use hyphens, not underscores** in argument names (e.g., `media_url` → `--media-url`). Each flag and value is a separate list item: `["--media-url", "/path/to/video.mp4"]` | -| `gpus` | No | `all` | GPU devices to use | -| `timeout` | No | `300` | Timeout in seconds | - -### `generate_nvinfer_config` - -Generates a DeepStream nvinfer runtime configuration file (nvdsinfer_config.yaml). - -**IMPORTANT**: Before generating a new config file, first call `prepare_model_repository` to download the model and check for existing nvinfer configuration files. Models from NGC typically include a configuration file (YAML or TXT) with all required inference parameters - always prefer using this provided configuration when available. - -| Parameter | Required | Default | Description | -|-----------|----------|---------|-------------| -| `output_path` | Yes | - | Path where the generated config file should be saved | -| `onnx_file` | Yes | - | Name of the ONNX model file | -| `network_type` | Yes | - | Network type (0=detection, 1=classification, 2=segmentation, 3=instance_segmentation, 100=custom) | -| `input_dims` | Yes | - | Input dimensions in format `channel;height;width` (e.g., `3;224;224`) | -| `label_file` | Yes | - | Name of the label file | -| `precision_mode` | No | `2` | Precision mode (0=FP32, 1=INT8, 2=FP16) | -| `custom_lib_path` | No | - | Path to a C++ shared library (.so) for custom output parsing. Required for all models except classic ResNet when network_type is 0-3. For TAO models, build from https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps/tree/master/post_processor | -| `custom_parse_func` | No | - | Symbol name of the custom parsing function. (0) Detection: built-in assumes ResNet; (1) Classification: built-in treats as softmax; (2,3) Segmentation: required; (100) Custom: not required | -| `num_classes` | No | - | Number of detected classes | -| `gie_unique_id` | No | `1` | Unique ID for this GIE | -| `net_scale_factor` | No | `0.00392156862745098` | Scale factor for normalization | -| `offsets` | No | - | Mean subtraction values in format `R;G;B` | -| `classifier_threshold` | No | `0.0` | Confidence threshold for classification | -| `input_tensor_from_meta` | No | `0` | Whether to read input from metadata (0 or 1) | -| `output_tensor_meta` | No | `0` | Whether to output raw tensor format (0 or 1) | - -**Important**: The `net_scale_factor` and `offsets` parameters must match your model's training preprocessing. See: -- [QUICK_NORMALIZATION_REFERENCE.md](QUICK_NORMALIZATION_REFERENCE.md) - Quick reference guide -- [STD_NORMALIZATION_CALCULATOR.md](STD_NORMALIZATION_CALCULATOR.md) - For models with std normalization - -## Resource Navigation - -### Documentation Resources - -| URI | Description | -|-----|-------------| -| `docs://README.md` | Main project README with overview, getting started, and installation | -| `docs://mcp/README-MCP.md` | This document - MCP server internal documentation | - -### Schema Resources - -| URI | Description | -|-----|-------------| -| `schema://config.schema.json` | Main JSON Schema for configuration files | -| `schema://readme` | Comprehensive schema documentation | -| `schema://index.json` | Schema navigation index mapping backend types to parameter schemas | -| `schema://backends/{backend}.schema.json` | Backend-specific schemas (deepstream, triton, vllm, etc.) | -| `schema://backends/parameters/{backend}-parameters.schema.json` | Detailed parameter schemas | - -**Schema Navigation Flow:** -1. Read `schema://config.schema.json` for the main configuration structure -2. When a model specifies a `backend` type (e.g., `vllm`, `triton/python`), read `schema://index.json` to find the corresponding parameter schema path -3. Read the backend-specific parameter schema to get valid parameter options - -### Sample Resources - -Sample resources are dynamically discovered and categorized: - -| URI Pattern | Description | -|-------------|-------------| -| `samples://config/{path}` | Pipeline/application configuration YAML files | -| `samples://runtime_config/{path}` | DeepStream nvinfer runtime configuration files | -| `samples://runtime_preprocess/{path}` | DeepStream nvdspreprocess runtime configuration files | -| `samples://openapi/{path}` | OpenAPI server specification YAML files | -| `samples://dockerfile/{path}` | Sample Dockerfiles | -| `samples://processor/{path}` | Preprocessor/postprocessor Python modules | - -## Usage Examples - -### Generate a DeepStream Pipeline - -``` -Use the generate_inference_pipeline tool to create a DeepStream object detection pipeline using the ds_detect.yaml configuration with serverless output. -``` - -### Explore Available Samples - -``` -List the available MCP resources to see sample configurations, Dockerfiles, and processors. -``` - -### View Sample Configurations - -``` -Read the samples://config/ds_app/detection/ds_detect.yaml resource to see the DeepStream detection configuration. -``` - -### Build Docker Image - -``` -Build a Docker image from the generated deepstream-app pipeline with the name 'my-detector' using the build_docker_image tool. -``` - -## Workflow Integration - -### Typical Development Workflow - -1. **Explore Samples**: Browse `samples://config/*` resources to see available configurations -2. **Examine Configurations**: Read sample resources to understand configuration patterns -3. **Create Your Config**: Modify a sample configuration or create your own -4. **Generate Pipeline**: Use `generate_inference_pipeline` to create your code -5. **Build Container**: Use `build_docker_image` to create a deployable container - -### Integration with Version Control - -The generated code can be: -- Committed to version control -- Used as a starting point for custom modifications -- Shared with team members -- Deployed to production environments - -## Troubleshooting - -### Common Issues - -**MCP Server Not Found** -- Ensure the MCP server is running -- Check that the path in your MCP client configuration is correct -- Verify Python environment has required dependencies - -**Configuration Validation Errors** -- Check that required fields are present in your YAML -- Ensure model definitions are complete -- Verify backend specifications are correct - -**Pipeline Generation Failures** -- Check that the configuration file path is correct -- Ensure all required dependencies are installed -- Verify that the output directory is writable - -### Debug Mode - -To run the MCP server with debug output: - -```bash -python -u mcp_server.py -``` - -## Extending the MCP Server - -To add new tools or resources: - -1. **Add new tools** to the `InferenceBuilderMCPServer` class in `mcp_server.py` -2. **Update tool schemas** in the `list_tools` method -3. **Implement tool logic** in the `call_tool` method -4. **Add tests** for new functionality in `test_mcp_server.py` - -### Server Types - -The `server_type` parameter supports: - -| Type | Description | -|------|-------------| -| `fastapi` | RESTful API server with automatic OpenAPI generation | -| `serverless` | Standalone command-line application | - -### Custom Processors - -Custom preprocessors and postprocessors can be integrated: - -1. Create custom processor classes following the base interface -2. Reference them in your configuration file -3. Use the `custom_modules` parameter when generating pipelines diff --git a/tools/inference_builder/mcp/STD_NORMALIZATION_CALCULATOR.md b/tools/inference_builder/mcp/STD_NORMALIZATION_CALCULATOR.md deleted file mode 100644 index c20130b1..00000000 --- a/tools/inference_builder/mcp/STD_NORMALIZATION_CALCULATOR.md +++ /dev/null @@ -1,395 +0,0 @@ -# Standard Deviation Normalization Calculator - -## Understanding Std Normalization - -### Case 1: Division by Std (Most Common) - -When training uses standard deviation normalization by **dividing** by std: -```python -normalized = (pixel/255 - mean) / std -``` - -This can be rewritten as: -```python -normalized = pixel * (1/(255*std)) - (mean/std) -``` - -Which maps to DeepStream parameters: -- `net_scale_factor = 1/(255 * std)` -- `offsets = mean/std` - -**Example**: If `std = 0.229`, then `net_scale_factor = 1/(255 × 0.229) = 0.0171302428` - ---- - -### Case 2: Multiplication by Scale Factor (Alternative) - -If training uses a scaling factor `d` (where `d` might be related to std): -```python -normalized = pixel * d / 255 -``` - -This maps to DeepStream parameters: -- `net_scale_factor = d/255` -- `offsets` depend on any mean subtraction - -**Example**: If `d = 0.5`, then `net_scale_factor = 0.5/255 = 0.00196078431` - -**Note**: This is less common but may be used in custom preprocessing schemes where `d` could be `1/std` or another scaling factor. - -## The Challenge - -**DeepStream limitation**: Only supports a **single** `net_scale_factor` value, but many models use **per-channel** std values. - -**Example**: ImageNet uses `std=[0.229, 0.224, 0.225]` - different for each channel! - -## Solutions - -### Solution 1: Uniform Std (Best for DeepStream) - -If your model uses the **same std for all channels**, you can directly convert: - -#### Example: Uniform std = 0.229 -```python -# Training normalization -mean = [0.485, 0.456, 0.406] -std = [0.229, 0.229, 0.229] # Same for R, G, B -``` - -#### Calculation: -```python -net_scale_factor = 1 / (255 * 0.229) = 0.0171302428 - -offsets_R = 0.485 / 0.229 = 2.118122 -offsets_G = 0.456 / 0.229 = 1.991266 -offsets_B = 0.406 / 0.229 = 1.772926 -``` - -#### DeepStream Config: -```yaml -net-scale-factor: 0.0171302428 -offsets: 2.118122;1.991266;1.772926 -``` - ---- - -### Solution 2: Average Std (Approximation) - -If std values are close but not identical, use the average: - -#### Example: ImageNet std = [0.229, 0.224, 0.225] -```python -# Training normalization -mean = [0.485, 0.456, 0.406] -std = [0.229, 0.224, 0.225] # Different per channel -``` - -#### Calculation: -```python -avg_std = (0.229 + 0.224 + 0.225) / 3 = 0.226 - -net_scale_factor = 1 / (255 * 0.226) = 0.0173510648 - -offsets_R = 0.485 / 0.226 = 2.146018 -offsets_G = 0.456 / 0.226 = 2.017699 -offsets_B = 0.406 / 0.226 = 1.796460 -``` - -#### DeepStream Config: -```yaml -net-scale-factor: 0.0173510648 -offsets: 2.146018;2.017699;1.796460 -``` - -⚠️ **Trade-off**: This is an approximation. Accuracy may be slightly reduced because we're not using the exact per-channel std values. - ---- - -### Solution 3: Ignore Std (Mean-only, Less Accurate) - -Use only mean subtraction, ignore std division: - -#### Calculation: -```python -net_scale_factor = 1 / 255 = 0.00392156862745098 - -offsets_R = 0.485 * 255 = 123.675 -offsets_G = 0.456 * 255 = 116.28 -offsets_B = 0.406 * 255 = 103.53 -``` - -#### DeepStream Config: -```yaml -net-scale-factor: 0.00392156862745098 -offsets: 123.675;116.28;103.53 -``` - -⚠️ **Limitation**: This does NOT include std normalization, only mean subtraction. Results will be less accurate. - ---- - -### Solution 4: Bake into ONNX (Recommended for Per-Channel Std) - -The most accurate solution: Include preprocessing in the ONNX model itself. - -#### PyTorch Example: -```python -import torch -import torch.nn as nn - -class ModelWithPreprocessing(nn.Module): - def __init__(self, base_model, mean, std): - super().__init__() - self.base_model = base_model - # Register mean and std as buffers - self.register_buffer('mean', torch.tensor(mean).view(1, 3, 1, 1)) - self.register_buffer('std', torch.tensor(std).view(1, 3, 1, 1)) - - def forward(self, x): - # x is in [0, 255] range - x = x / 255.0 # Scale to [0, 1] - x = (x - self.mean) / self.std # Per-channel normalization - return self.base_model(x) - -# Wrap your model -mean = [0.485, 0.456, 0.406] -std = [0.229, 0.224, 0.225] -wrapped_model = ModelWithPreprocessing(original_model, mean, std) - -# Export to ONNX -torch.onnx.export(wrapped_model, dummy_input, "model_with_preprocessing.onnx") -``` - -#### DeepStream Config: -```yaml -# No normalization needed - it's in the model! -net-scale-factor: 1.0 -# No offsets -``` - -**Benefits**: -- ✅ Exact per-channel std normalization -- ✅ No accuracy loss -- ✅ Simpler DeepStream config - ---- - -## Quick Calculator - -### Method 1: Division by Std (Standard Approach) - -**Given Training Parameters**: -- **mean**: [mean_r, mean_g, mean_b] -- **std**: [std_r, std_g, std_b] - -**Training formula**: `(pixel/255 - mean) / std` - -#### If std is uniform (std_r = std_g = std_b = d): - -``` -net_scale_factor = 1 / (255 × d) -offset_r = mean_r / d -offset_g = mean_g / d -offset_b = mean_b / d -``` - -**Example**: If `d = 0.229`, `mean = [0.485, 0.456, 0.406]` -``` -net_scale_factor = 1 / (255 × 0.229) = 0.0171302428 -offsets = 2.118;1.991;1.773 -``` - -#### If std varies per channel (approximation): - -``` -avg_std = (std_r + std_g + std_b) / 3 -net_scale_factor = 1 / (255 × avg_std) -offset_r = mean_r / avg_std -offset_g = mean_g / avg_std -offset_b = mean_b / avg_std -``` - ---- - -### Method 2: Multiplication by Scale Factor - -**Given Training Parameters**: -- **scale_factor**: d (a custom scaling constant) - -**Training formula**: `pixel × d / 255` - -#### Calculation: - -``` -net_scale_factor = d / 255 -``` - -**Example**: If `d = 0.5` -``` -net_scale_factor = 0.5 / 255 = 0.00196078431 -``` - -**Example**: If `d = 1/0.229` (inverse of std) -``` -net_scale_factor = (1/0.229) / 255 = 4.366812 / 255 = 0.0171302428 -``` - -**Note**: The scale factor becomes `d/255` instead of `1/255`. - ---- - -## Common Datasets - -### ImageNet -``` -mean = [0.485, 0.456, 0.406] -std = [0.229, 0.224, 0.225] -``` - -**Recommended**: Bake into ONNX or use average std approximation - -### COCO (if normalized) -``` -mean = [0.485, 0.456, 0.406] -std = [0.229, 0.224, 0.225] -``` -Same as ImageNet - -### CIFAR-10 -``` -mean = [0.4914, 0.4822, 0.4465] -std = [0.2023, 0.1994, 0.2010] -``` - -**Average std**: 0.2009 - ---- - -## Decision Tree - -``` -Do you use std normalization in training? -│ -├─ No → Use simple config: -│ net_scale_factor: 1/255 -│ offsets: mean × 255 (if mean subtraction used) -│ -└─ Yes → Is std the same for all channels? - │ - ├─ Yes → Use combined config: - │ net_scale_factor: 1/(255×std) - │ offsets: mean/std - │ - └─ No → Choose approach: - │ - ├─ Approximation (easier): - │ net_scale_factor: 1/(255×avg_std) - │ offsets: mean/avg_std - │ ⚠️ Slight accuracy loss - │ - ├─ Mean-only (less accurate): - │ net_scale_factor: 1/255 - │ offsets: mean × 255 - │ ⚠️ Missing std normalization - │ - └─ Bake into ONNX (best): - Include preprocessing in model - ✅ Full accuracy, per-channel std -``` - ---- - -## Verification - -To verify your config is correct: - -1. **Test with known input**: - ```python - test_pixel = 128 # Middle gray - - # Training preprocessing: - train_value = (test_pixel/255 - mean) / std - - # DeepStream preprocessing: - ds_value = (test_pixel * net_scale_factor) - offset - - # These should match! - ``` - -2. **Compare outputs**: Run inference on the same image in training and DeepStream, compare results - -3. **Check accuracy**: Use validation dataset to measure accuracy drop - ---- - -## Python Helper Script - -```python -def calculate_deepstream_params(mean, std, use_average=False): - """ - Calculate DeepStream normalization parameters. - - Args: - mean: List of per-channel means [R, G, B] (in [0,1] range) - std: List of per-channel stds [R, G, B] - use_average: If True, use average std (approximation) - - Returns: - tuple: (net_scale_factor, offsets_string) - """ - mean_r, mean_g, mean_b = mean - std_r, std_g, std_b = std - - # Check if std is uniform - is_uniform = (std_r == std_g == std_b) - - if is_uniform: - # Exact calculation for uniform std - net_scale_factor = 1.0 / (255 * std_r) - offset_r = mean_r / std_r - offset_g = mean_g / std_g - offset_b = mean_b / std_b - print("✅ Uniform std detected - using exact calculation") - elif use_average: - # Approximation using average std - avg_std = (std_r + std_g + std_b) / 3 - net_scale_factor = 1.0 / (255 * avg_std) - offset_r = mean_r / avg_std - offset_g = mean_g / avg_std - offset_b = mean_b / avg_std - print(f"⚠️ Using average std approximation: {avg_std:.6f}") - else: - print("❌ Per-channel std detected. Consider baking into ONNX!") - print(" Using average std approximation...") - avg_std = (std_r + std_g + std_b) / 3 - net_scale_factor = 1.0 / (255 * avg_std) - offset_r = mean_r / avg_std - offset_g = mean_g / avg_std - offset_b = mean_b / avg_std - - offsets = f"{offset_r:.6f};{offset_g:.6f};{offset_b:.6f}" - - print(f"\nDeepStream Config:") - print(f" net-scale-factor: {net_scale_factor}") - print(f" offsets: {offsets}") - - return net_scale_factor, offsets - -# Example usage: -# ImageNet normalization -mean = [0.485, 0.456, 0.406] -std = [0.229, 0.224, 0.225] -calculate_deepstream_params(mean, std, use_average=True) -``` - ---- - -## Summary - -- **Best accuracy**: Bake std normalization into ONNX model -- **Good approximation**: Use average std (if stds are similar) -- **Uniform std**: Direct conversion works perfectly -- **Mean-only**: Simplest but least accurate (ignores std) - -Always verify your configuration with test data before deploying! - diff --git a/tools/inference_builder/mcp/examples.md b/tools/inference_builder/mcp/examples.md deleted file mode 100644 index 8406782a..00000000 --- a/tools/inference_builder/mcp/examples.md +++ /dev/null @@ -1,113 +0,0 @@ -# Using Inference Builder with AI Agents — Examples and Guidelines - -## General Guidelines - -1. **Start simple, then refine.** Begin with a short, clear prompt that states the core requirements. Use follow-up messages to add details or adjust behavior. - -2. **Ask for self-check and verification.** Tell the agent to validate its work (e.g., run a smoke test or sanity check) so the result is correct before you rely on it. - -3. **Request documentation and diagrams.** Ask the agent to produce a README and architecture diagrams. These make the solution easier to understand and easier to extend later. - -4. **Use helper scripts for operations.** Request small scripts for common tasks (e.g., “create a script to start, stop, rebuild, get status, and fetch logs for the microservice”). These simplify testing and debugging. - -5. **Correct course early.** If the agent goes off track, give a direct hint right away. For example: - - If no free GPU is available, tell it to stop and retry later. - - If it picks the wrong model, ask it to double-check the choice. - -## Sample Prompts - -### 1. Create a very basic Deepstream Application - -***Use deepstream inference builder tool to create an object detection pipeline with PeopleNet Transformer model from NGC and verify it with a smoke test.*** - -The Agent is expected to draft a plan based on the prompt and generates required files accordingly (file names may differ in each run unless explicitly specified): - -- peoplenet_transformer_pipeline.yaml (pipeline configuration yaml) -- Dockerfile -- nvdsinfer_config.yaml (nvinfer configuration yaml) -- peoplenet.tgz (python code for inference) -- models/peoplenet (folder for required model files) - -The Agent is expected to fix all the build and runtime errors while doing the smoke test. - -### 2. Create an advanced Deepstream Application Supporting Tracker and Multi-stream Inputs - -***Use deepstream inference builder tool to create an object detection pipeline with the PeopleNet transformer model from NGC; the pipeline should support 4 video inputs in parallel and track all the objects in the inputs using NVDCF tracker. Do a smoke test once done.*** - -The Agent is expected to draft a plan based on the prompt and generates required files accordingly (file names may differ in each run unless explicitly specified): - -- peoplenet_transformer_pipeline.yaml (pipeline configuration yaml) -- Dockerfile -- nvdsinfer_config.yaml (nvinfer configuration yaml) -- peoplenet.tgz (python code for inference) -- models/peoplenet (folder for required model files) - -The Agent is expected to fix all the build and runtime errors while doing the smoke test. - -### 3. Create a Deepstream Inference Application with Customized Logic - -***Use deepstream inferenc builder tool to create an object detection pipeline with PeopleNet transformer model from NGC; the pipeline accepts video url as input and output detected bounding boxes. Count the number of people in each frame and raise an alarm whenever the number exceeds 10 by writing it down to a file. Do a smoke test once done.*** - -The Agent is expected to draft a plan based on the prompt and generates required files accordingly (file names may differ in each run unless explicitly specified): - -- peoplenet_transformer_pipeline.yaml (pipeline configuration yaml) -- Dockerfile -- nvdsinfer_config.yaml (nvinfer configuration yaml) -- processor.py (Customized processor for counting and raising alarm) -- peoplenet.tgz (python code for inference) -- models/peoplenet (folder for required model files) - -The Agent is expected to fix all the build and runtime errors while doing the smoke test. - - -### 4. Create a Realtime Video Intelligence Microservice (rtvi) with vllm Backend and Deepstream Accelerated Decoder - -#### 4.1. Start with the Master Prompt as below - -***Locate the MCP tool deepstream-inference-builder and complete the task: Start a new project under name rtvi_vlm and create a video summarization/caption microservice there using Qwen3-VL-2B-Instruct model driven by vllm backend and Deepstream accelerated decoder. The microservice supports adding/deleting RTSP streams as assets and generating video caption for added streams. The given RTSP stream will be chunked to a batch of frames with a given interval for summarization. I also want to build a container image for the microservice to run on B200. Do a smoke test on the image once done.*** - -The Agent is expected to understand the prompt and creates a folder named “rtvi_vlm” and generates all the files there: -- config.yaml (pipeline configuration yaml) -- Dockerfile -- openapi.yaml (server specification) -- processors.py (customized code) -- rtvi_vlm.tgz (backbone python code) -- model-repo (folder for required model files) - -The Agent is responsible for the smoke testing and troubleshooting of any issues encountered with the generated container image. - -#### 4.2. Add Helper Scripts for Manual Testing with Follow-up Prompts - -***Generate a service management script to start, restart, stop, rebuild the service and check the service status, also fetch the service logs. Generate a client script to add/delete streams and trigger a summarization request on streams.*** - -With the generated server and client script, we can ask Cursor to intensively test stream summarization, and during this process Cursor will fix the generated processor code based on the container log. -We'll need to go through this a few times because Cursor has to figure out the best model setup by running it. - -You can ask Cursor to use your live stream: `rtsp://:/`. - -#### 4.3. New feature request - -New features can always be added through follow-up prompts: - -***Now let's add a new feature to the project. After the model generates summarizations, let's postprocess it for each chunk and send them to a Kafka server. Create an environment variable to toggle the feature.*** - -#### 4.4. Document the project for future development - -***Write a detailed documentation for the project to ensure seamless and consistent future work.*** - -Subsequently, the project remains open, allowing for continued adjustment, addition, or removal of features using the same methods. - -#### 4.5. YOLO26s Detection Deepstream Application - -***Download the YOLO26s detection model using the ultralytics library, then convert the model to ONNX model that supports dynamic batch, in Python virtual environment. Write a DeepStream custom parser for the model. Use deepstream inference builder tool to create an object detection pipeline with the model and custom parser. Do a smoke test once done.*** - -The Agent is expected to draft a plan based on the prompt and generates required files accordingly (file names may differ in each run unless explicitly specified): - -- yolo26s_pipeline.yaml (pipeline configuration yaml) -- Dockerfile -- nvdsinfer_config.yaml (nvinfer configuration yaml) -- yolo26s-detection.tgz (python code for inference) -- models/yolo26s (folder for required model files) -- custom_parser (DeepStream custom parser for the model) - -The Agent is expected to fix all the build and runtime errors while doing the smoke test. diff --git a/tools/inference_builder/mcp/mcp_server.py b/tools/inference_builder/mcp/mcp_server.py deleted file mode 100644 index 21a219ff..00000000 --- a/tools/inference_builder/mcp/mcp_server.py +++ /dev/null @@ -1,1994 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. -# All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -MCP (Model Context Protocol) Server for Inference Builder - -This module provides an MCP server that exposes Inference Builder functionality -to MCP-compatible clients like Cursor. -""" - -import asyncio -import os -import sys -from pathlib import Path -from typing import Any, Dict -from mcp.server import Server -from mcp.server.stdio import stdio_server -from mcp.types import ( - CallToolRequest, - CallToolResult, - ListToolsRequest, - ListToolsResult, - Tool, - TextContent, - Resource, -) -import subprocess -import logging -import time -import shutil -import uuid - -# Add the builder directory to Python path -sys.path.append(str(Path(__file__).parent.parent / "builder")) - - -def load_allowed_servers() -> list: - """Load allowed server types from the builder's allowed_servers.txt file. - - Returns: - List of allowed server type strings. - - Raises: - FileNotFoundError: If the configuration file is not found. - ValueError: If the file is empty or contains invalid entries. - """ - file_path = Path(__file__).parent.parent / "builder" / "allowed_servers.txt" - - if not file_path.exists(): - raise FileNotFoundError( - f"Allowed servers configuration file not found: {file_path}" - ) - - allowed_servers = [] - with open(file_path, 'r', encoding='utf-8') as f: - for line in f: - line = line.strip() - if line and not line.startswith('#'): - allowed_servers.append(line) - - if not allowed_servers: - raise ValueError(f"No valid server types found in {file_path}") - - return allowed_servers - - -# Load allowed server types from configuration file -ALLOWED_SERVERS = load_allowed_servers() - - -class InferenceBuilderMCPServer: - """MCP Server that exposes Inference Builder functionality""" - - def __init__(self): - self.server = Server("deepstream-inference-builder") - self.logger = logging.getLogger("deepstream-inference-builder") - - # Register handlers using decorators - self._setup_handlers() - - def _setup_handlers(self): - """Setup MCP server handlers using decorators""" - - @self.server.list_tools() - async def handle_list_tools(): - # The low-level server expects a list[Tool], not ListToolsResult - result = await self.list_tools(None) - return result.tools - - @self.server.call_tool() - async def handle_call_tool(name: str, arguments: Dict[str, Any]): - # Bridge to existing implementation which returns CallToolResult - from mcp.types import CallToolRequestParams - params = CallToolRequestParams(name=name, arguments=arguments) - request = CallToolRequest(params=params) - result = await self.call_tool(request) - if getattr(result, "isError", False): - # Let the low-level server wrap this as an error result - message = "" - for block in getattr(result, "content", []) or []: - if getattr(block, "type", "") == "text": - message = getattr(block, "text", "") - break - raise RuntimeError(message or "Tool execution error") - # Return unstructured content so low-level server wraps it properly - return getattr(result, "content", []) - - @self.server.list_resources() - async def handle_list_resources(): - """List available schema and sample resources""" - self.logger.info("list_resources handler called") - resources = [] - - # Add base schema resources - try: - self.logger.info("Creating base schema resources...") - base_resources = [ - # Schema resources - Resource( - uri="schema://config.schema.json", - name="Configuration Schema", - description=( - "JSON Schema for inference builder configuration files. " - "Defines required fields (name, model_repo, models), " - "tensor specifications, backend types, and server configuration." - ), - mimeType="application/json" - ), - Resource( - uri="schema://readme", - name="Schema Documentation", - description=( - "Comprehensive documentation for configuration schemas including " - "examples, backend-specific parameters, data types, " - "preprocessors/postprocessors, and server responder configuration." - ), - mimeType="text/markdown" - ), - Resource( - uri="schema://index.json", - name="Schema Index", - description=( - "Index mapping backend types to their parameter schemas. " - "Use this to find the correct parameter schema for a given backend " - "(e.g., 'vllm' -> 'backends/parameters/vllm-parameters.schema.json'). " - "Read this first to understand schema navigation." - ), - mimeType="application/json" - ), - # Documentation resources - Resource( - uri="docs://README.md", - name="Project README", - description=( - "Main project documentation for Inference Builder. " - "Includes overview, getting started guide, installation instructions, " - "and links to examples and detailed documentation." - ), - mimeType="text/markdown" - ), - Resource( - uri="docs://mcp/README-MCP.md", - name="MCP Integration Documentation", - description=( - "Detailed documentation for MCP server integration. " - "Includes tool reference with parameters, resource navigation guide, " - "usage examples, workflow integration, and troubleshooting." - ), - mimeType="text/markdown" - ), - Resource( - uri="docs://usage.md", - name="Usage Documentation", - description=( - "Comprehensive usage guide for Inference Builder. " - "Covers command line arguments, configuration file format, " - "model definitions, preprocessors/postprocessors, server configuration, " - "routing, and runtime environment variables." - ), - mimeType="text/markdown" - ), - Resource( - uri="docs://platform-guide.md", - name="Platform Guide", - description=( - "Hardware platform selection guide. " - "Maps target hardware (x86_64 datacenter, Jetson/Tegra, arm-sbsa servers " - "such as GB10/GB300/DGX Spark) to the correct Dockerfile template, " - "DeepStream base image, GPU architecture flags, PyTorch install method, " - "and CUDA version. **Read this first** when building a Docker image to " - "avoid runtime failures caused by mismatched base images or missing " - "platform libraries (e.g. libnvbufsurface on Tegra)." - ), - mimeType="text/markdown" - ), - ] - self.logger.info("Created %d base_resources objects", len(base_resources)) - for i, res in enumerate(base_resources): - self.logger.debug(" base_resource[%d]: uri=%s, name=%s", i, res.uri, res.name) - resources.extend(base_resources) - self.logger.info("After extend, resources has %d items", len(resources)) - except Exception as exc: - self.logger.exception("Error creating base resources: %s", exc) - - # Dynamically discover backend schema resources - try: - schema_dir = Path(__file__).parent.parent / "schemas" - backends_dir = schema_dir / "backends" - self.logger.debug("Schema dir: %s (exists: %s)", schema_dir, schema_dir.exists()) - self.logger.debug("Backends dir: %s (exists: %s)", backends_dir, backends_dir.exists()) - if backends_dir.exists(): - # Backend schemas (e.g., deepstream.schema.json, triton.schema.json) - for schema_file in sorted(backends_dir.glob("*.schema.json")): - backend_name = schema_file.stem.replace(".schema", "") - resources.append(Resource( - uri=f"schema://backends/{schema_file.name}", - name=f"Backend Schema: {backend_name}", - description=( - f"JSON Schema for {backend_name} backend configuration. " - f"Defines backend-specific parameters and settings." - ), - mimeType="application/json" - )) - - # Backend parameter schemas (e.g., deepstream-parameters.schema.json) - params_dir = backends_dir / "parameters" - if params_dir.exists(): - for param_file in sorted(params_dir.glob("*-parameters.schema.json")): - backend_name = param_file.stem.replace("-parameters.schema", "") - resources.append(Resource( - uri=f"schema://backends/parameters/{param_file.name}", - name=f"Backend Parameters: {backend_name}", - description=( - f"JSON Schema for {backend_name} backend parameters. " - f"Defines detailed parameter options for model configuration." - ), - mimeType="application/json" - )) - self.logger.info("After backend discovery, resources has %d items", len(resources)) - except Exception as exc: - self.logger.exception("Error discovering backend schemas: %s", exc) - - # Dynamically discover sample resources categorized by type - try: - samples_dir = Path(__file__).parent.parent / "builder" / "samples" - self.logger.debug("Samples dir: %s (exists: %s)", samples_dir, samples_dir.exists()) - if not samples_dir.exists(): - self.logger.warning("Samples directory not found: %s", samples_dir) - else: - for sample_dir in sorted(samples_dir.iterdir()): - if sample_dir.is_dir(): - sample_name = sample_dir.name - description = self._get_sample_description(sample_name) - - # Collect all files recursively from the sample directory - # This ensures deeply nested configs like nvdsinfer_config.yaml - # under ds_app/*/* are exposed as resources. - all_files = [ - f for f in sample_dir.rglob("*") if f.is_file() - ] - - # Category 1a: DeepStream nvinfer runtime configs (e.g., nvdsinfer_config.yaml) - # These are NOT pipeline definitions; they are runtime nvinfer config - # files that belong in the model repository when DeepStream backend is used. - runtime_yaml_files = [ - f - for f in all_files - if f.is_file() - and f.suffix == ".yaml" - and f.name == "nvdsinfer_config.yaml" - ] - for runtime_yaml in sorted(runtime_yaml_files): - rel_path = runtime_yaml.relative_to(samples_dir) - resources.append(Resource( - uri=f"samples://runtime_config/{rel_path}", - name=f"DeepStream Runtime Config for Inference: {rel_path}", - description=( - "DeepStream nvinfer runtime configuration file " - "(nvdsinfer_config.yaml). " - "This file should live in the model repository when Deepstream backend is used " - "and be referenced via 'infer_config_path' in the " - "DeepStream backend parameters, not used as a pipeline " - "configuration YAML." - ), - mimeType="application/x-yaml" - )) - - # Category 1b: DeepStream preprocess runtime configs (e.g., nvdspreprocess_config*.yaml) - # These are runtime configuration files for the nvdspreprocess plugin and - # should also live in the model repository when DeepStream backend is used. - preprocess_runtime_yaml_files = [ - f - for f in all_files - if f.is_file() - and f.suffix == ".yaml" - and f.name.startswith("nvdspreprocess_config") - ] - for preprocess_yaml in sorted(preprocess_runtime_yaml_files): - rel_path = preprocess_yaml.relative_to(samples_dir) - resources.append(Resource( - uri=f"samples://runtime_preprocess/{rel_path}", - name=f"DeepStream Runtime Config for Preprocessing: {rel_path}", - description=( - "DeepStream nvdspreprocess runtime configuration file " - "(nvdspreprocess_config*.yaml). " - "This file should live in the model repository when DeepStream " - "backend is used and be referenced via 'preprocess_config_path' " - "in the DeepStream backend parameters, not used as a pipeline " - "configuration YAML." - ), - mimeType="application/x-yaml" - )) - - # Category 1c: OpenAPI / server specification YAML files - # These define the HTTP API contract (e.g., for FastAPI, Triton, NIM) - # and should be treated as server configuration, not pipeline configs. - openapi_yaml_files = [ - f - for f in all_files - if f.is_file() - and f.suffix == ".yaml" - and ( - f.name in ("openapi.yaml", "openapi.yml") - or f.name.endswith("_openapi.yaml") - or f.name.endswith("_openapi.yml") - ) - ] - for openapi_yaml in sorted(openapi_yaml_files): - rel_path = openapi_yaml.relative_to(samples_dir) - resources.append(Resource( - uri=f"samples://openapi/{rel_path}", - name=f"OpenAPI Server Spec: {rel_path}", - description=( - "OpenAPI specification YAML describing the HTTP API for an " - "inference server (e.g., FastAPI, Triton, NIM). " - "Treat this as server configuration: it defines request/response " - "schemas and endpoints and is referenced via 'api_spec' when " - "generating a FastAPI/NIM/TRITON server, not as a model or " - "pipeline configuration." - ), - mimeType="application/x-yaml" - )) - - # Category 1d: Pipeline / application configuration YAML files - yaml_files = [ - f - for f in all_files - if f.is_file() - and f.suffix == ".yaml" - and f.name != "nvdsinfer_config.yaml" - and not f.name.startswith("nvdspreprocess_config") - and not ( - f.name in ("openapi.yaml", "openapi.yml") - or f.name.endswith("_openapi.yaml") - or f.name.endswith("_openapi.yml") - ) - ] - for yaml_file in sorted(yaml_files): - rel_path = yaml_file.relative_to(samples_dir) - resources.append(Resource( - uri=f"samples://config/{rel_path}", - name=f"Sample Config: {rel_path}", - description=( - f"Sample pipeline/application configuration YAML for " - f"{sample_name}. {description}" - ) if description else f"Sample configuration: {rel_path}", - mimeType="application/x-yaml" - )) - - # Category 2: Dockerfiles - dockerfiles = [f for f in all_files if f.is_file() and f.name.startswith("Dockerfile")] - for dockerfile in sorted(dockerfiles): - rel_path = dockerfile.relative_to(samples_dir) - resources.append(Resource( - uri=f"samples://dockerfile/{rel_path}", - name=f"Sample Dockerfile: {rel_path}", - description=( - f"Dockerfile for {sample_name}. " - f"Use as reference for container image builds." - ), - mimeType="text/plain" - )) - - # Category 3: Processor Python files (files with "processor" in name) - processor_files = [ - f for f in all_files - if f.is_file() and f.suffix == ".py" and "processor" in f.stem.lower() - ] - for processor in sorted(processor_files): - rel_path = processor.relative_to(samples_dir) - resources.append(Resource( - uri=f"samples://processor/{rel_path}", - name=f"Sample Processor: {rel_path}", - description=( - f"Sample preprocessor/postprocessor for {sample_name}. " - f"Python module with callable classes for pipeline processing." - ), - mimeType="text/x-python" - )) - - self.logger.info("After sample discovery, resources has %d items", len(resources)) - except Exception as exc: - self.logger.exception("Error discovering sample resources: %s", exc) - - self.logger.info("Listed %d MCP resources", len(resources)) - if len(resources) > 0: - self.logger.info("First resource URI: %s", resources[0].uri) - self.logger.info("Last resource URI: %s", resources[-1].uri) - else: - self.logger.warning("Resources list is EMPTY - this is the problem!") - - return resources - - @self.server.read_resource() - async def handle_read_resource(uri): - """Read a schema or sample resource by URI""" - # Convert AnyUrl to string for string operations - uri = str(uri) - schema_dir = Path(__file__).parent.parent / "schemas" - samples_dir = Path(__file__).parent.parent / "builder" / "samples" - - # Handle docs:// URIs for documentation files - if uri.startswith("docs://"): - project_root = Path(__file__).parent.parent - docs_mappings = { - "docs://README.md": project_root / "README.md", - "docs://mcp/README-MCP.md": project_root / "mcp" / "README-MCP.md", - "docs://usage.md": project_root / "doc" / "usage.md", - "docs://platform-guide.md": project_root / "doc" / "platform-guide.md", - } - if uri in docs_mappings: - file_path = docs_mappings[uri] - else: - raise ValueError( - f"Unknown docs resource URI: {uri}. " - f"Available: docs://README.md, docs://mcp/README-MCP.md, docs://usage.md" - ) - - # Handle schema:// URIs - elif uri.startswith("schema://"): - # Static schema mappings - uri_to_file = { - "schema://config.schema.json": schema_dir / "config.schema.json", - "schema://readme": schema_dir / "README.md", - "schema://index.json": schema_dir / "index.json", - } - - if uri in uri_to_file: - file_path = uri_to_file[uri] - elif uri.startswith("schema://backends/"): - # Handle dynamic backend schema URIs - rel_path = uri.replace("schema://backends/", "") - file_path = schema_dir / "backends" / rel_path - - # Security check: ensure path doesn't escape backends directory - backends_dir = schema_dir / "backends" - try: - file_path.resolve().relative_to(backends_dir.resolve()) - except ValueError as exc: - raise ValueError(f"Invalid backend schema path: {rel_path}") from exc - else: - raise ValueError( - f"Unknown schema resource URI: {uri}. " - f"Use schema://config.schema.json, schema://readme, " - f"schema://index.json, or schema://backends/*" - ) - - # Handle samples:// URIs (with category prefix: config/, dockerfile/, processor/, " - # runtime_config/, runtime_preprocess/, openapi/) - elif uri.startswith("samples://"): - rel_path = uri.replace("samples://", "") - - # If the URI is only a category prefix (e.g., samples://runtime_config), - # return a helpful error instead of trying to map it to a file. - category_labels = { - "config": "pipeline/application configuration YAML files", - "dockerfile": "sample Dockerfiles", - "processor": "sample pre/postprocessor Python modules", - "runtime_config": "DeepStream nvinfer runtime configuration files (nvdsinfer_config.yaml)", - "runtime_preprocess": "DeepStream nvdspreprocess runtime configuration files (nvdspreprocess_config*.yaml)", - "openapi": "OpenAPI server specification YAML files", - } - rel_path_stripped = rel_path.rstrip("/") - if rel_path_stripped in category_labels: - label = category_labels[rel_path_stripped] - raise ValueError( - f"'{uri}' is a category prefix for {label}, not a specific resource. " - f"Call list_resources to see the available 'samples://{rel_path_stripped}/...'" - " URIs, then use read_resource on one of those full URIs." - ) - - # Strip category prefix if present - for category in ( - "config/", - "dockerfile/", - "processor/", - "runtime_config/", - "runtime_preprocess/", - "openapi/", - ): - if rel_path.startswith(category): - rel_path = rel_path[len(category):] - break - file_path = samples_dir / rel_path - - # Security check: ensure path doesn't escape samples directory - try: - file_path.resolve().relative_to(samples_dir.resolve()) - except ValueError as exc: - raise ValueError(f"Invalid sample path: {rel_path}") from exc - - else: - raise ValueError( - f"Unknown resource URI scheme: {uri}. " - f"Supported schemes: docs://, schema://, samples://" - ) - - if not file_path.exists(): - raise FileNotFoundError(f"Resource file not found: {file_path}") - - # Check if the path is a directory - if file_path.is_dir(): - # List files in the directory to help the user - try: - files = [f.name for f in file_path.iterdir() if f.is_file()] - files_list = "\n - ".join(sorted(files)) if files else "(no files found)" - raise ValueError( - f"'{uri}' points to a directory, not a file. " - f"The MCP resource reader can only read individual files. " - f"Files in this directory:\n - {files_list}\n\n" - f"To read a specific file, use a URI like:\n" - f" {uri}/{{filename}}" - ) - except Exception as exc: - raise ValueError( - f"'{uri}' points to a directory, not a file. " - f"The MCP resource reader can only read individual files." - ) from exc - - with open(file_path, 'r', encoding='utf-8') as f: - content = f.read() - - return content - - def _sanitize_arguments(self, arguments: Dict[str, Any]) -> Dict[str, Any]: - """Redact sensitive values in tool arguments for logging.""" - if not isinstance(arguments, dict): - return {} - sensitive_keys = { - "api_key", "apikey", "token", "password", "secret", - "authorization", "auth", "bearer", "access_token", - } - redacted: Dict[str, Any] = {} - for key, value in arguments.items(): - if isinstance(key, str) and key.lower() in sensitive_keys: - redacted[key] = "" - else: - redacted[key] = value - return redacted - - async def list_tools(self, _request: ListToolsRequest) -> ListToolsResult: - """List available tools""" - return ListToolsResult( - tools=[ - Tool( - name="generate_inference_pipeline", - description=( - "Generate a deployable inference service from a YAML configuration file. " - "Outputs a complete project with model serving code, API endpoints, and deployment files. " - "Read 'samples://*' resources for example configurations, " - "or 'schema://config.schema.json' resource for the full configuration schema." - ), - inputSchema={ - "type": "object", - "properties": { - "config_file": { - "type": "string", - "description": ( - "Path to the YAML configuration file defining the pipeline. " - "If the user has not provided a config file, generate one based on " - "their requirements: read 'schema://config.schema.json' for the full schema, " - "'schema://index.json' to find backend-specific parameter schemas " - "(maps backend type to 'schema://backends/parameters/*'), " - "'schema://readme' for documentation, and 'samples://*' resources for " - "reference examples. Create the YAML file at a suitable path, then provide " - "that path here." - ) - }, - "server_type": { - "type": "string", - "enum": ALLOWED_SERVERS, - "default": "serverless", - "description": ( - "Type of server to generate. Use 'serverless' for standalone applications " - "designed for batch inference " - "(no API spec needed and no server section should appear in the config_file). " - "Use 'fastapi' for microservices that serve inference requests via HTTP endpoints " - " (requires api_spec and 'server' section in config_file)." - " If the user's intent is unclear, ask them to explicitly choose " - "between 'serverless' and 'fastapi' before proceeding." - ) - }, - "output_dir": { - "type": "string", - "description": ( - "The user's project directory where generated artifacts will be placed. " - "This directory will contain configurations, custom processors, Dockerfiles, " - "and other files for the inference project. A subdirectory named after the " - "pipeline (from config YAML) will be created here, or a tar.gz archive if " - "tar_output is enabled. If the project location is unclear, ask the user to " - "specify it, or prompt them to confirm after creating a new project directory." - ), - "default": "." - }, - "api_spec": { - "type": "string", - "description": ( - "Path to OpenAPI specification file (YAML/JSON). " - "Required for 'fastapi', 'triton', and 'nim' server types. " - "Not needed for 'serverless' type. If the user has not provided an " - "OpenAPI spec, attempt to generate one based on their requirements. " - "If the given information is insufficient to generate a valid spec " - "(e.g., missing endpoint definitions, request/response schemas), " - "ask the user to provide an OpenAPI specification file." - ) - }, - "custom_modules": { - "type": "array", - "items": {"type": "string"}, - "description": ( - "List of paths to custom Python module files for preprocessors and " - "postprocessors. Each module must define classes with a 'name' attribute " - "and '__call__' method to be registered in the pipeline. Determine if " - "processors are needed based on the user's requirements and pipeline " - "structure (e.g., input transformations, output formatting). If processors " - "are required, read 'samples://processor/*' resources for reference examples, " - "then generate the Python files accordingly, save them in the project " - "directory, and include their paths here." - ) - }, - "exclude_lib": { - "type": "boolean", - "default": False, - "description": ( - "If true, exclude the common utility library from generated code. " - "Use when deploying to an environment where the library is already installed." - ) - }, - "tar_output": { - "type": "boolean", - "default": False, - "description": ( - "If true, output a tar.gz archive instead of a directory. " - "This affects how the generated pipeline is copied into the container " - "image in the Dockerfile: use COPY with directory when false, or ADD " - "with tar.gz extraction when true. Set to true when transferring the " - "pipeline to a remote build system." - ) - }, - "validation_dir": { - "type": "string", - "description": ( - "Path to output directory for API validation/test artifacts. " - "When provided, generates OpenAPI client code and test cases " - "for validating the inference endpoints." - ) - }, - "no_docker": { - "type": "boolean", - "default": False, - "description": ( - "If true, use locally installed OpenAPI Generator CLI instead of Docker. " - "Requires 'openapi-generator-cli' to be installed and in PATH." - ) - }, - "test_cases_abs_path": { - "type": "boolean", - "default": False, - "description": ( - "If true, use absolute paths in generated test_cases.yaml. " - "Use when test files are located outside the validation directory." - ) - } - }, - "required": ["config_file"] - } - ), - Tool( - name="build_docker_image", - description=( - "Build a Docker image from a generated inference " - "pipeline. The Dockerfile is expected to consume the " - "tar.gz archive produced by 'generate_inference_pipeline' " - "when 'tar_output' is true (for example, using " - "'ADD .tar.gz /app') rather than copying a " - "loose directory of files. Agents should prefer " - "tar_output=true for Docker-based deployments." - ), - inputSchema={ - "type": "object", - "properties": { - "image_name": { - "type": "string", - "description": "Name for the Docker image" - }, - "dockerfile": { - "type": "string", - "description": ( - "Path to Dockerfile. Always generate the Dockerfile based on user " - "requirements and 'samples://dockerfile/*' resources. " - "**Before choosing a Dockerfile template, read 'docs://platform-guide.md' " - "to identify the correct base image and template for the target hardware** " - "(x86_64 datacenter, Jetson/Tegra, or arm-sbsa servers like GB10/GB300/DGX Spark). " - "Consider model backend (triton, vllm, tensorrt-llm, deepstream), server type " - "(serverless, fastapi), and hardware platform. " - "The Dockerfile MUST be placed in the output_dir where the generated " - "pipeline resides, as its parent directory becomes the Docker build " - "context for properly transferring the pipeline code into the container." - ) - } - }, - "required": ["image_name", "dockerfile"] - } - ), - Tool( - name="docker_run_image", - description=( - "Optionally run a built Docker image to help with testing and " - "troubleshooting. This is a lightweight helper around " - "'docker run' that can mount a prepared model repository " - "from the host into the container, set environment " - "variables, and pass command-line arguments. " - "The container is started with --ipc=host so that " - "PyTorch / TensorRT-LLM multiprocessing can share " - "tensors via /dev/shm without hitting the default " - "64 MB Docker limit. " - "Use this after 'prepare_model_repository' and " - "'build_docker_image' have completed." - ), - inputSchema={ - "type": "object", - "properties": { - "image_name": { - "type": "string", - "description": ( - "Name of the Docker image to run " - "(for example, 'my-inference-service:latest')." - ) - }, - "model_repo_host": { - "type": "string", - "description": ( - "Optional host path to a prepared model repository " - "directory (for example, produced by " - "'prepare_model_repository'). If provided, it will " - "be mounted into the container at " - "model_repo_container via a Docker volume." - ) - }, - "model_repo_container": { - "type": "string", - "description": ( - "Container path where the model repository should " - "be mounted (for example, '/models'). Used only " - "when model_repo_host is provided." - ), - "default": "/models" - }, - "server_type": { - "type": "string", - "description": ( - "High-level server type hint to choose sensible " - "defaults (for example, 'serverless' or 'fastapi'). " - "For non-serverless servers, the container will be " - "run on the host network to make HTTP endpoints " - "reachable from the host." - ), - "default": "serverless" - }, - "env": { - "type": "object", - "description": ( - "Optional environment variables to set inside the " - "container. Keys and values are serialized as " - "`-e KEY=VALUE`." - ), - "additionalProperties": { - "type": "string" - } - }, - "cmd": { - "type": "array", - "description": ( - "Optional list of command-line arguments or an " - "alternative command to pass to 'docker run' after " - "the image name. For serverless flows this is " - "typically the inference entrypoint arguments. " - "IMPORTANT: when server_type is 'serverless', the " - "user's input must be supplied via CLI arguments in " - "this list. Argument names use hyphens, not " - "underscores (e.g., the input named 'media_url' " - "becomes '--media-url '). Each flag and its " - "value should be separate items, for example: " - "[\"--media-url\", \"/path/to/video.mp4\"]." - ), - "items": { - "type": "string" - } - }, - "gpus": { - "type": "string", - "description": ( - "GPU devices to use for the container, passed as " - "`--gpus` (for example, 'all', 'device=0', " - "'device=0,1')." - ), - "default": "all" - }, - "timeout": { - "type": "integer", - "description": ( - "Maximum time in seconds to wait for the container " - "process to complete before timing out. For " - "non-serverless servers this is the time to wait " - "before collecting logs and stopping the container." - ), - "default": 300 - } - }, - "required": ["image_name"] - } - ), - Tool( - name="prepare_model_repository", - description=( - "Optionally prepare a model repository directory for deployment. " - "Given a model configuration list, this tool can download model artifacts " - "(for example from NGC or Hugging Face) and copy associated runtime " - "configuration files (such as DeepStream nvdsinfer_config.yaml and " - "nvdspreprocess_config*.yaml) into a model repository layout that " - "matches the generated pipeline and Dockerfile. Use this when the " - "user does not already have a model repository prepared." - "It is recommended to mount the model repository as a volume when running the Docker image." - ), - inputSchema={ - "type": "object", - "properties": { - "model_configs": { - "type": "array", - "description": ( - "List of model configurations to prepare, following the same " - "structure as the 'models' section in builder/tests/" - "test_docker_builds.py. Each item is an object with fields: " - "'name' (required, model name), 'source' (optional, 'NGC' or " - "'HF', default 'NGC'), 'target' (required, directory where the " - "prepared model repository should be created), 'path' (for NGC: " - "registry model path; for HF: repo id like " - "'Qwen/Qwen2.5-VL-3B-Instruct'), 'version' (for NGC), " - "'configs' (optional, path relative to config_dir of a directory " - "of runtime config files to copy into the final model repository), and " - "'post_script' (optional, shell command to execute after model download " - "for post-processing steps)." - ), - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Model name (used as the final directory name).", - }, - "source": { - "type": "string", - "enum": ["NGC", "HF"], - "description": ( - "Model source: 'NGC' for NVIDIA NGC registry models, " - "or 'HF' for Hugging Face models." - ), - }, - "target": { - "type": "string", - "description": ( - "Target directory on the local filesystem where the prepared " - "model repository should be created." - ), - }, - "path": { - "type": "string", - "description": ( - "For NGC: registry model path (for example, " - "'nvidia/tao/grounding_dino'). For HF: model repo id " - "(for example, 'Qwen/Qwen2.5-VL-3B-Instruct')." - ), - }, - "version": { - "type": "string", - "description": ( - "For NGC models, the version/tag to download (for example, " - "'grounding_dino_swin_tiny_commercial_deployable_v1.0')." - ), - }, - "configs": { - "type": "string", - "description": ( - "Optional path (relative to config_dir) to a directory containing " - "runtime configuration files (for example, DeepStream " - "nvdsinfer_config.yaml, nvdspreprocess_config*.yaml, label files) " - "that should be copied into the final model repository." - ), - }, - "post_script": { - "type": "string", - "description": ( - "Optional shell command or script to execute after the model is downloaded. " - "This can be used for post-processing steps like installing additional " - "dependencies, converting model formats, or applying patches. " - "The script is executed with the model's target directory as the current " - "working directory." - ), - }, - }, - "required": ["name", "target"], - }, - }, - "config_dir": { - "type": "string", - "description": ( - "Base directory used to resolve relative 'configs' " - "paths in model_configs. Typically this is the " - "directory containing your pipeline/test " - "configuration files." - ), - "default": "." - } - }, - "required": ["model_configs"] - } - ), - Tool( - name="generate_nvinfer_config", - description=( - "Generate a DeepStream nvinfer runtime configuration file (nvdsinfer_config.yaml). " - "This configuration file is required by the DeepStream backend and must be placed " - "in the model repository. It defines inference parameters such as model file paths, " - "precision mode, network type, input dimensions, and custom parsers. " - "The generated file should be referenced via 'infer_config_path' in the DeepStream " - "backend parameters. See 'samples://runtime_config/*' resources for examples." - "**IMPORTANT: Before generating a new config file, first call 'prepare_model_repository' to download the model and check for existing nvinfer configuration files.** " - "Models from NGC typically include a configuration file (YAML or TXT) with all required inference parameters - always prefer using this provided configuration when available. "), - inputSchema={ - "type": "object", - "properties": { - "output_path": { - "type": "string", - "description": ( - "Path where the generated nvdsinfer_config.yaml file should be saved. " - "This should typically be in your model repository directory." - ) - }, - "onnx_file": { - "type": "string", - "description": ( - "Name of the ONNX model file (e.g., 'model.onnx'). " - "This file should exist in the same directory as the config file." - ) - }, - "precision_mode": { - "type": "integer", - "enum": [0, 1, 2], - "default": 2, - "description": ( - "Precision mode for inference: 0=FP32, 1=INT8, 2=FP16. " - "Default is FP16 (2) for optimal performance on modern GPUs." - ) - }, - "network_type": { - "type": "integer", - "enum": [0, 1, 2, 3, 100], - "description": ( - "Network type: 0=detection, 1=classification, 2=segmentation, " - "3=instance_segmentation. This determines how the model output is interpreted." - "100=custom is used for models that need to output raw tensors for custom downstream processing along with output-tensor-meta: 1." - ) - }, - "input_dims": { - "type": "string", - "description": ( - "Model input dimensions in format 'channel;height;width' " - "(e.g., '3;224;224' for a 224x224 RGB image). " - "Note: the format is C;H;W, not C;W;H." - ) - }, - "label_file": { - "type": "string", - "description": ( - "Name of the label file (e.g., 'labels.txt'). " - "This file should contain class names, one per line, and be placed " - "in the same directory as the config file." - ) - }, - "custom_lib_path": { - "type": "string", - "description": ( - "Path to a C++ shared library (.so) that provides custom output parsing functions. " - "Required for all models except classic ResNet when network_type is 0, 1, 2, or 3 (not required for network_type 100 which outputs raw tensors). " - "For TAO-trained models, build the library from https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps/tree/master/post_processor. " - "For other models, provide the path to your own custom parser library." - ) - }, - "custom_parse_func": { - "type": "string", - "description": ( - "Symbol name of the custom parsing function exported by custom_lib_path. " - "Behavior varies by network_type: " - "(0) Detection - if omitted, the built-in parser assumes a ResNet model with 'bbox' and 'cov' output layers. " - "(1) Classification - if omitted, the built-in parser treats model output as a softmax layer. " - "(2) Segmentation, (3) Instance segmentation - no built-in parser available, custom_parse_func is required. " - "(100) Custom - not required, raw tensors are output directly for downstream processing." - ) - }, - "num_classes": { - "type": "integer", - "description": ( - "Number of detected classes for the model. Required for detection and classification networks and can be deducted from the label file." - ) - }, - "gie_unique_id": { - "type": "integer", - "default": 1, - "description": ( - "Unique ID for this GIE (inference engine) in the pipeline. " - "Use different IDs if you have multiple inference engines in the same pipeline." - ) - }, - "net_scale_factor": { - "type": "number", - "default": 0.00392156862745098, - "description": ( - "Scale factor for input normalization. Default is 1/255 = 0.00392156862745098 " - "for models expecting [0,1] normalized inputs. IMPORTANT: This must match the " - "scaling factor used during model training. Common patterns: " - "(1) Simple scaling: 1/255; " - "(2) With uniform std: 1/(255*std) - dividing by std; " - "(3) With scale factor d: d/255 - multiplying by d; " - "(4) Custom: any value matching training. " - "For per-channel std normalization, consider baking into the ONNX model or using " - "a custom preprocessing plugin, as DeepStream only supports a single scale factor." - ) - }, - "offsets": { - "type": "string", - "description": ( - "Per-channel mean subtraction values in format 'R;G;B' " - "(e.g., '127.5;127.5;127.5' for [-1,1] normalization, " - "'123.675;116.28;103.53' for ImageNet models). " - "IMPORTANT: This must match the per-channel mean subtraction used during " - "model training. If training used mean subtraction, you MUST specify this " - "parameter. If no mean subtraction was used during training, omit this parameter " - "or use '0;0;0'. Incorrect offsets will result in poor inference accuracy." - ) - }, - "classifier_threshold": { - "type": "number", - "default": 0.0, - "description": ( - "Confidence threshold for classification results. " - "Only classifications above this threshold will be reported." - ) - }, - "input_tensor_from_meta": { - "type": "integer", - "enum": [0, 1], - "default": 0, - "description": ( - "Whether to read input tensor from metadata (1) or from frame buffer (0). " - "Set to 1 when using nvdspreprocess for custom preprocessing." - ) - }, - "output_tensor_meta": { - "type": "integer", - "enum": [0, 1], - "default": 0, - "description": ( - "Whether to output in DeepStream metadata format (0) or raw tensor format (1). " - "Set to 1 if raw tensors are expected as inference output, which allows downstream " - "components to access raw tensor data as a Dictionary." - "Set to 0 for TYPE_CUSTOM_DS_METADATA output type, where the custom parser library processes the raw tensors into detected objects." - ) - } - }, - "required": ["output_path", "onnx_file", "network_type", "input_dims", "label_file"] - } - ), - ] - ) - - async def call_tool(self, request: CallToolRequest) -> CallToolResult: - """Execute a tool""" - name = request.params.name - arguments = request.params.arguments - - start_time = time.perf_counter() - self.logger.info( - "tool_call_started name=%s args=%s", - name, - self._sanitize_arguments(arguments), - ) - - try: - if name == "generate_inference_pipeline": - result = await self._generate_pipeline(arguments) - elif name == "build_docker_image": - result = await self._build_docker_image(arguments) - elif name == "docker_run_image": - result = await self._docker_run_image(arguments) - elif name == "prepare_model_repository": - result = await self._prepare_model_repository(arguments) - elif name == "generate_nvinfer_config": - result = await self._generate_deepstream_nvinfer_config(arguments) - else: - raise ValueError(f"Unknown tool: {name}") - - duration_ms = (time.perf_counter() - start_time) * 1000.0 - self.logger.info( - "tool_call_completed name=%s error=%s duration_ms=%.2f", - name, - bool(getattr(result, "isError", False)), - duration_ms, - ) - return result - except Exception as e: - duration_ms = (time.perf_counter() - start_time) * 1000.0 - self.logger.exception( - "tool_call_failed name=%s duration_ms=%.2f error=%s", - name, - duration_ms, - str(e), - ) - return CallToolResult( - content=[TextContent(type="text", text=f"Error: {str(e)}")], - isError=True - ) - - async def _generate_pipeline( - self, arguments: Dict[str, Any] - ) -> CallToolResult: - """Generate inference pipeline""" - config_file = arguments["config_file"] - server_type = arguments.get("server_type", "serverless") - output_dir = arguments.get("output_dir", ".") - - # Build command - use the same Python executable as the parent process - cmd = [ - sys.executable, "builder/main.py", - "--server-type", server_type, - "-o", output_dir, - config_file - ] - - # Add optional arguments - if "api_spec" in arguments: - cmd.extend(["-a", arguments["api_spec"]]) - - if "custom_modules" in arguments: - for module in arguments["custom_modules"]: - cmd.extend(["-c", module]) - - if arguments.get("exclude_lib", False): - cmd.append("-x") - - if arguments.get("tar_output", False): - cmd.append("-t") - - if "validation_dir" in arguments: - cmd.extend(["--validation-dir", arguments["validation_dir"]]) - - if arguments.get("no_docker", False): - cmd.append("--no-docker") - - if arguments.get("test_cases_abs_path", False): - cmd.append("--test-cases-abs-path") - - # Execute the command - inherit the current process environment - - result = subprocess.run( - cmd, - capture_output=True, - text=True, - cwd=Path(__file__).parent.parent, - env=os.environ.copy(), # Inherit the current environment - check=False, - ) - - if result.returncode == 0: - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Successfully generated inference pipeline!\n\n" - f"Output directory: {output_dir}\n\n" - f"Command executed: {' '.join(cmd)}\n\n" - f"Output:\n{result.stdout}" - ) - ] - ) - else: - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - "Failed to generate pipeline:\n\n" - f"Error:\n{result.stderr}\n\n" - f"Command: {' '.join(cmd)}" - ) - ) - ], - isError=True - ) - - def _get_sample_description(self, sample_name: str) -> str: - """Get description for a sample""" - descriptions = { - "ds_app": ( - "DeepStream applications for object detection and " - "segmentation" - ), - "qwen": "Qwen language models with various backends", - "changenet": "Change detection models", - "nvclip": "NVIDIA CLIP models for vision-language tasks", - "tao": "NVIDIA TAO toolkit models", - "dummy": "Dummy models for testing and development" - } - return descriptions.get(sample_name, "") - - async def _docker_run_image( - self, arguments: Dict[str, Any] - ) -> CallToolResult: - """Run a Docker image for testing/troubleshooting.""" - image_name = arguments["image_name"] - model_repo_host = arguments.get("model_repo_host") - model_repo_container = arguments.get("model_repo_container", "/models") - server_type = arguments.get("server_type", "serverless") - env_vars = arguments.get("env") or {} - cmd_args = arguments.get("cmd") or [] - gpus = arguments.get("gpus", "all") - timeout = int(arguments.get("timeout", 300)) - - # Base docker run command (no shell, argument list only) - # Use --ipc=host so the container shares the host's /dev/shm. - # Docker's default 64 MB /dev/shm is insufficient for - # PyTorch / TensorRT-LLM multiprocessing which shares tensors - # via shared memory, causing SIGBUS when /dev/shm is exhausted. - # Assign a deterministic name so we can force-remove the container - # on timeout — subprocess.TimeoutExpired kills the `docker run` - # client process but leaves the container running with GPUs held. - container_name = f"ib-run-{uuid.uuid4().hex[:12]}" - cmd: list[str] = [ - "docker", "run", "--rm", "--ipc=host", - "--name", container_name, - ] - - # GPU configuration - if gpus: - cmd.extend(["--gpus", str(gpus)]) - - # Network: for serverless we still use host network so local clients can connect - cmd.append("--network=host") - - # Volume for model repository if provided - if model_repo_host: - host_path = str(Path(model_repo_host).expanduser().resolve()) - volume_arg = f"{host_path}:{model_repo_container}" - cmd.extend(["-v", volume_arg]) - - # Environment variables - if isinstance(env_vars, dict): - for key, value in env_vars.items(): - cmd.extend(["-e", f"{key}={value}"]) - - # Image name and optional command/args - cmd.append(image_name) - if isinstance(cmd_args, list): - cmd.extend([str(a) for a in cmd_args]) - - self.logger.info( - "docker_run_invoked image=%s model_repo_host=%s cmd=%s", - image_name, - model_repo_host, - " ".join(cmd), - ) - - try: - result = subprocess.run( - cmd, - capture_output=True, - text=True, - timeout=timeout, - check=False, - ) - except FileNotFoundError: - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - "Docker not found. Please ensure Docker is installed " - "and available in your PATH before using docker_run_image." - ), - ) - ], - isError=True, - ) - except subprocess.TimeoutExpired: - is_serverless = server_type == "serverless" - if is_serverless: - # Serverless containers should finish within the timeout. - # The `docker run` client is dead but the container keeps - # running (and holding GPU memory). Force-remove it. - cleanup_msg = "" - try: - subprocess.run( - ["docker", "rm", "-f", container_name], - capture_output=True, - timeout=30, - check=False, - ) - cleanup_msg = ( - f" The orphaned container '{container_name}' has " - "been force-removed." - ) - except Exception as cleanup_exc: - cleanup_msg = ( - f" WARNING: failed to remove orphaned container " - f"'{container_name}': {cleanup_exc}. " - "Please remove it manually with: " - f"docker rm -f {container_name}" - ) - self.logger.warning( - "Failed to remove timed-out container %s: %s", - container_name, - cleanup_exc, - ) - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - f"Docker run timed out after {timeout} seconds " - f"for image '{image_name}'.{cleanup_msg} You may " - "want to increase the timeout or inspect the " - "image logs manually." - ), - ) - ], - isError=True, - ) - else: - # Non-serverless (persistent) servers are expected to keep - # running past the timeout — that means the server started - # successfully. Leave the container running. - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - f"Container '{container_name}' is running " - f"(image '{image_name}'). The server appears to " - f"have started successfully (still alive after " - f"{timeout}s). To stop it later: " - f"docker rm -f {container_name}" - ), - ) - ], - isError=False, - ) - except Exception as exc: - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Exception while running Docker image '{image_name}': {exc}", - ) - ], - isError=True, - ) - - text = ( - f"docker run command: {' '.join(cmd)}\n\n" - f"exit code: {result.returncode}\n\n" - f"stdout:\n{result.stdout}\n\n" - f"stderr:\n{result.stderr}" - ) - - return CallToolResult( - content=[TextContent(type="text", text=text)], - isError=result.returncode != 0, - ) - - async def _prepare_model_repository( - self, arguments: Dict[str, Any] - ) -> CallToolResult: - """Prepare model repositories by downloading models and copying configs. - - This mirrors the 'models' handling in builder/tests/test_docker_builds.py, - but is exposed as an optional MCP tool so agents can help set up - model repositories before Docker image builds. - """ - # New interface: model_configs is a list of dicts (each includes 'name') - # Backward-compat: accept legacy 'models_config' dict keyed by model name. - model_configs = arguments.get("model_configs") - legacy_models_config = arguments.get("models_config") - config_dir_arg = arguments.get("config_dir", ".") - - if model_configs is None and legacy_models_config is not None: - # Convert dict[name -> config] into list[{name, ...config}] - if isinstance(legacy_models_config, dict): - converted: list[dict[str, Any]] = [] - for legacy_name, legacy_info in legacy_models_config.items(): - if isinstance(legacy_info, dict): - merged = dict(legacy_info) - merged["name"] = legacy_name - converted.append(merged) - model_configs = converted - else: - model_configs = [] - - if not isinstance(model_configs, list) or not model_configs: - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - "No models specified in model_configs. " - "Nothing to prepare for model repositories." - ), - ) - ] - ) - - # Resolve config_dir relative to project root (repo root) - project_root = Path(__file__).resolve().parents[1] - config_dir = Path(config_dir_arg) - if not config_dir.is_absolute(): - config_dir = (project_root / config_dir).resolve() - - messages: list[str] = [] - - for model_info in model_configs: - try: - if not isinstance(model_info, dict): - messages.append( - "❌ Skipping model entry: config must be an object" - ) - continue - - model_name = model_info.get("name") - if not model_name or not isinstance(model_name, str): - messages.append( - "❌ Skipping model entry: missing required 'name'" - ) - continue - - source = str(model_info.get("source", "NGC")).upper() - target = model_info.get("target") - if not target: - messages.append( - f"❌ Skipping model '{model_name}': missing required 'target'" - ) - continue - - target_dir = Path(target).expanduser() - final_model_dir = target_dir / model_name - - # Create target parent directory - target_dir.mkdir(parents=True, exist_ok=True) - - if final_model_dir.exists(): - messages.append( - f"✅ Model '{model_name}' already exists at {final_model_dir}, " - f"skipping download" - ) - else: - if source == "HF": - # Hugging Face model download, based on DockerBuildTester.download_models - hf_repo = model_info.get("path") - if not hf_repo: - messages.append( - f"❌ Skipping HF model '{model_name}': missing 'path'" - ) - continue - - messages.append( - f"📥 Downloading Hugging Face model '{model_name}' " - f"({hf_repo}) to {final_model_dir}" - ) - - # Use huggingface_hub.snapshot_download instead of git clone - # so that actual binary weights are fetched via the HF CDN - # (git clone only retrieves LFS pointer stubs unless a full - # LFS pull is performed, which fails for gated repos without - # proper credential configuration). - try: - from huggingface_hub import snapshot_download - snapshot_download( - repo_id=hf_repo, - local_dir=str(final_model_dir), - ignore_patterns=["*.pt", "*.bin", "original/*"], - ) - except Exception as e: - messages.append( - f"❌ Failed to download HF model '{model_name}': {e}" - ) - continue - else: - # Default to NGC - ngc_path = model_info.get("path") - version = model_info.get("version") - if not ngc_path or not version: - messages.append( - f"❌ Skipping NGC model '{model_name}': " - f"both 'path' and 'version' are required" - ) - continue - - full_ngc_path = f"{ngc_path}:{version}" - messages.append( - f"📥 Downloading NGC model '{model_name}' " - f"({full_ngc_path}) to {final_model_dir}" - ) - - # Run NGC CLI to download the model version - download_cmd = [ - "ngc", - "registry", - "model", - "download-version", - full_ngc_path, - ] - result = subprocess.run( - download_cmd, - capture_output=True, - text=True, - timeout=900, - check=False, - ) - if result.returncode != 0: - messages.append( - f"❌ Failed to download NGC model '{model_name}': " - f"{result.stderr.strip()}" - ) - continue - - # Infer downloaded folder name as in test_docker_builds.py - model_base_name = ngc_path.split("/")[-1] - downloaded_folder = Path( - f"{model_base_name}_v{version}" - ) - if not downloaded_folder.exists(): - messages.append( - f"❌ Downloaded folder not found for model " - f"'{model_name}': {downloaded_folder}" - ) - continue - - try: - shutil.move(str(downloaded_folder), str(final_model_dir)) - except Exception as exc: - messages.append( - f"❌ Failed to move downloaded model '{model_name}' " - f"into {final_model_dir}: {exc}" - ) - continue - - # Copy configs into final_model_dir if specified - configs_rel = model_info.get("configs") - if configs_rel: - source_configs = (config_dir / configs_rel).resolve() - if source_configs.exists(): - messages.append( - f"📄 Copying runtime configs from {source_configs} " - f"to {final_model_dir}" - ) - try: - for item in source_configs.iterdir(): - dest = final_model_dir / item.name - if item.is_file(): - shutil.copy2(str(item), str(dest)) - elif item.is_dir(): - shutil.copytree( - str(item), str(dest), dirs_exist_ok=True - ) - except Exception as exc: - messages.append( - f"⚠️ Failed to copy configs for '{model_name}': {exc}" - ) - else: - messages.append( - f"⚠️ Config path not found for model '{model_name}': " - f"{source_configs}" - ) - - # Execute post-script if specified - post_script = model_info.get("post_script") - if post_script: - messages.append( - f"🔧 Executing post-script for '{model_name}': {post_script}" - ) - try: - script_result = subprocess.run( - post_script, - shell=True, - capture_output=True, - text=True, - cwd=str(final_model_dir), - timeout=600, - check=False, - ) - if script_result.returncode == 0: - messages.append( - f"✅ Post-script executed successfully for '{model_name}'" - ) - if script_result.stdout.strip(): - messages.append( - f" Output: {script_result.stdout.strip()}" - ) - else: - messages.append( - f"❌ Post-script failed for '{model_name}' " - f"(exit code {script_result.returncode}): " - f"{script_result.stderr.strip()}" - ) - except subprocess.TimeoutExpired: - messages.append( - f"❌ Post-script timed out for '{model_name}' after 600 seconds" - ) - except Exception as exc: - messages.append( - f"❌ Failed to execute post-script for '{model_name}': {exc}" - ) - - messages.append( - f"✅ Prepared model repository for '{model_name}' at " - f"{final_model_dir}" - ) - - except Exception as exc: # Catch-all per model - messages.append( - f"❌ Exception while preparing model '{model_name}': {exc}" - ) - - summary = "\n".join(messages) - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - "Model repository preparation completed.\n\n" - f"{summary}" - ), - ) - ] - ) - - async def _build_docker_image( - self, arguments: Dict[str, Any] - ) -> CallToolResult: - """Build Docker image from generated pipeline""" - image_name = arguments["image_name"] - dockerfile = arguments["dockerfile"] - - # Validate Dockerfile exists - dockerfile_path = Path(dockerfile) - if not dockerfile_path.exists(): - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Dockerfile not found: {dockerfile}. Please " - f"provide a valid Dockerfile path." - ) - ], - isError=True - ) - - # Use Dockerfile's parent directory as build context - build_context = str(dockerfile_path.parent) - - # Build Docker image - cmd = [ - "docker", "build", - "-f", dockerfile, - "-t", image_name, - build_context - ] - self.logger.info( - "docker_build_invoked image=%s dockerfile=%s context=%s", - image_name, - dockerfile, - build_context, - ) - - try: - result = subprocess.run( - cmd, - capture_output=True, - text=True, - cwd=Path(__file__).parent.parent, - check=False, - ) - - if result.returncode == 0: - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - f"Successfully built Docker image " - f"'{image_name}'!\n\n" - f"Command executed: {' '.join(cmd)}\n\n" - f"Output:\n{result.stdout}" - ) - ) - ] - ) - else: - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Failed to build Docker image:\n\n" - f"Error:\n{result.stderr}\n\n" - f"Command: {' '.join(cmd)}" - ) - ], - isError=True - ) - except FileNotFoundError: - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - "Docker not found. Please ensure Docker is " - "installed and available in your PATH." - ) - ) - ], - isError=True - ) - - async def _generate_deepstream_nvinfer_config( - self, arguments: Dict[str, Any] - ) -> CallToolResult: - """Generate DeepStream nvinfer runtime configuration file""" - import yaml - - # Extract required parameters - output_path = arguments["output_path"] - onnx_file = arguments["onnx_file"] - network_type = arguments["network_type"] - input_dims = arguments["input_dims"] - label_file = arguments["label_file"] - - # Extract optional parameters with defaults - precision_mode = arguments.get("precision_mode", 2) # Default FP16 - custom_lib_path = arguments.get("custom_lib_path", "") - custom_parse_func = arguments.get("custom_parse_func", "") - num_classes = arguments.get("num_classes") - gie_unique_id = arguments.get("gie_unique_id", 1) - net_scale_factor = arguments.get("net_scale_factor", 0.00392156862745098) - offsets = arguments.get("offsets") - classifier_threshold = arguments.get("classifier_threshold", 0.0) - input_tensor_from_meta = arguments.get("input_tensor_from_meta", 0) - output_tensor_meta = arguments.get("output_tensor_meta", 0) - - # Validate network_type - network_type_names = { - 0: "detection", - 1: "classification", - 2: "segmentation", - 3: "instance_segmentation", - 100: "custom" - } - if network_type not in network_type_names: - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Invalid network_type: {network_type}. Must be 0 (detection), " - f"1 (classification), 2 (segmentation), 3 (instance_segmentation), " - f"or 100 (custom)." - ) - ], - isError=True - ) - - # Validate precision_mode - precision_names = {0: "FP32", 1: "INT8", 2: "FP16"} - if precision_mode not in precision_names: - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Invalid precision_mode: {precision_mode}. Must be 0 (FP32), 1 (INT8), or 2 (FP16)." - ) - ], - isError=True - ) - - # Validate input_dims format (should be channel;height;width) - dims_parts = input_dims.split(';') - if len(dims_parts) != 3: - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Invalid input_dims format: '{input_dims}'. " - f"Expected format: 'channel;height;width' (e.g., '3;224;224')" - ) - ], - isError=True - ) - - try: - # Validate dimensions are integers - for dim in dims_parts: - int(dim) - except ValueError: - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Invalid input_dims: '{input_dims}'. All dimensions must be integers." - ) - ], - isError=True - ) - - # Build the configuration - config = { - "property": { - "gie-unique-id": gie_unique_id, - "net-scale-factor": net_scale_factor, - "onnx-file": onnx_file, - "network-mode": precision_mode, - "network-type": network_type, - "infer-dims": input_dims, - "labelfile-path": label_file, - } - } - - # Add optional fields - if offsets: - config["property"]["offsets"] = offsets - - if num_classes is not None: - config["property"]["num-detected-classes"] = num_classes - - if input_tensor_from_meta: - config["property"]["input-tensor-from-meta"] = input_tensor_from_meta - - if output_tensor_meta: - config["property"]["output-tensor-meta"] = output_tensor_meta - - if network_type == 1: # classification - config["property"]["classifier-threshold"] = classifier_threshold - - if custom_lib_path: - config["property"]["custom-lib-path"] = custom_lib_path - - # Add custom parse function name based on network type - if custom_parse_func: - if network_type == 0: # detection - config["property"]["parse-bbox-func-name"] = custom_parse_func - elif network_type == 1: # classification - config["property"]["parse-classifier-func-name"] = custom_parse_func - elif network_type == 2: # segmentation - config["property"]["parse-segmentation-func-name"] = custom_parse_func - elif network_type == 3: # instance_segmentation - config["property"]["parse-bbox-instance-mask-func-name"] = custom_parse_func - # network_type 100 (custom) doesn't need a parse function name - - # Generate YAML content with header - header = """# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# IMPORTANT NORMALIZATION PARAMETERS: -# - net-scale-factor: Must match the scaling factor used during training -# - offsets: Must match any per-channel mean subtraction used during training -# Incorrect normalization will result in poor inference accuracy! - -""" - - yaml_content = yaml.dump(config, default_flow_style=False, sort_keys=False) - full_content = header + yaml_content - - # Write to file - try: - output_file = Path(output_path) - output_file.parent.mkdir(parents=True, exist_ok=True) - - with open(output_file, 'w', encoding='utf-8') as f: - f.write(full_content) - - return CallToolResult( - content=[ - TextContent( - type="text", - text=( - f"Successfully generated DeepStream nvinfer configuration!\n\n" - f"Output file: {output_path}\n\n" - f"Configuration summary:\n" - f" - Network type: {network_type_names[network_type]} ({network_type})\n" - f" - Precision mode: {precision_names[precision_mode]} ({precision_mode})\n" - f" - ONNX file: {onnx_file}\n" - f" - Input dimensions: {input_dims}\n" - f" - Label file: {label_file}\n" - f" - Scale factor: {net_scale_factor}\n" - + (f" - Per-channel offsets: {offsets}\n" if offsets else " - Per-channel offsets: NOT SET (no mean subtraction)\n") - + (f" - Number of classes: {num_classes}\n" if num_classes else "") - + (f" - Input from metadata: {bool(input_tensor_from_meta)}\n" if input_tensor_from_meta else "") - + (f" - Output as metadata: {bool(output_tensor_meta)} (raw tensors in DS META)\n" if output_tensor_meta else "") - + (f" - Custom library: {custom_lib_path}\n" if custom_lib_path else "") - + (f" - Custom parse function: {custom_parse_func}\n" if custom_parse_func else "") - + "\n⚠️ IMPORTANT: Verify that net-scale-factor and per-channel offsets match your model's training normalization!\n" - + " - net-scale-factor must match the scaling applied during training\n" - + " - offsets must match any per-channel mean subtraction used during training\n" - + " - If training used no mean subtraction, offsets should not be set (or set to 0;0;0)\n" - + f"\nGenerated content:\n\n{full_content}" - ) - ) - ] - ) - except Exception as e: - return CallToolResult( - content=[ - TextContent( - type="text", - text=f"Failed to write configuration file:\n\n{str(e)}" - ) - ], - isError=True - ) - - -async def main(): - """Main entry point for the MCP server""" - logging.basicConfig( - level=logging.DEBUG, - format=("%(asctime)s %(levelname)s %(name)s - %(message)s"), - ) - logger = logging.getLogger("deepstream-inference-builder") - logger.info("starting_mcp_server") - server = InferenceBuilderMCPServer() - logger.info("server_created") - - async with stdio_server() as (read_stream, write_stream): - logger.info("stdio_server_started") - init_options = server.server.create_initialization_options() - logger.info("initialization_options_created") - await server.server.run( - read_stream, - write_stream, - init_options, - ) - - -if __name__ == "__main__": - asyncio.run(main()) diff --git a/tools/inference_builder/mcp/setup_mcp.py b/tools/inference_builder/mcp/setup_mcp.py deleted file mode 100644 index 27bfb593..00000000 --- a/tools/inference_builder/mcp/setup_mcp.py +++ /dev/null @@ -1,207 +0,0 @@ -#!/usr/bin/env python3 -""" -Setup script for Inference Builder MCP Integration - -This script helps install dependencies and configure the MCP integration -for use with MCP-compatible clients such as Cursor and Claude Code. - -Usage: - python setup_mcp.py [CONFIG_PATH] - -Arguments: - CONFIG_PATH Path to the MCP config file (default: ~/.cursor/mcp.json) - -Examples: - Cursor (global): python setup_mcp.py ~/.cursor/mcp.json - Cursor (project): python setup_mcp.py /path/to/project/.cursor/mcp.json - Claude Code: python setup_mcp.py ~/.claude/.mcp.json -""" - -import argparse -import subprocess -import sys -from pathlib import Path - -def run_command(cmd, description): - """Run a command and handle errors""" - print(f"Running: {description}") - print(f"Command: {' '.join(cmd)}") - - try: - result = subprocess.run(cmd, capture_output=True, text=True, check=True) - print(f"✓ {description} completed successfully") - if result.stdout: - print(f"Output: {result.stdout.strip()}") - return True - except subprocess.CalledProcessError as e: - print(f"✗ {description} failed") - print(f"Error: {e.stderr.strip()}") - return False - except FileNotFoundError: - print(f"✗ Command not found: {cmd[0]}") - return False - -def check_python_version(): - """Check if Python version is compatible""" - version = sys.version_info - if version.major < 3 or (version.major == 3 and version.minor < 8): - print(f"✗ Python 3.8+ required, found {version.major}.{version.minor}") - return False - print(f"✓ Python {version.major}.{version.minor}.{version.micro} is compatible") - return True - -def test_integration(): - """Test the MCP integration""" - print("\nTesting MCP integration...") - - if not run_command([sys.executable, "mcp/test_mcp_server.py"], "Running integration tests"): - print("Integration tests failed. Please check the errors above.") - return False - - return True - -def create_mcp_config(config_path=None): - """Create or update MCP configuration file - - Args: - config_path: Optional path to the MCP config file. - Defaults to ~/.cursor/mcp.json if not specified. - """ - import json - - print("\nSetting up MCP configuration...") - - if config_path: - config_file = Path(config_path).expanduser().resolve() - config_dir = config_file.parent - if not config_dir.exists(): - config_dir.mkdir(parents=True, exist_ok=True) - print(f"✓ Created directory: {config_dir}") - else: - default_dir = Path.home() / ".cursor" - if not default_dir.exists(): - default_dir.mkdir(parents=True, exist_ok=True) - print(f"✓ Created directory: {default_dir}") - config_file = default_dir / "mcp.json" - - # Define the server configuration for this project - server_name = "deepstream-inference-builder" - server_config = { - "command": str(Path(sys.executable)), - "args": [str(Path.cwd() / "mcp" / "mcp_server.py")], - "cwd": str(Path.cwd()), - "env": { - "PYTHONPATH": str(Path.cwd() / "mcp") - } - } - - # Load existing config or start with empty structure - existing_config = {"mcpServers": {}} - if config_file.exists(): - try: - with open(config_file, 'r') as f: - existing_config = json.load(f) - # Ensure mcpServers key exists - if "mcpServers" not in existing_config: - existing_config["mcpServers"] = {} - print(f"✓ Found existing config with {len(existing_config['mcpServers'])} server(s)") - except json.JSONDecodeError as e: - print(f"⚠️ Existing config is not valid JSON: {e}") - print("Creating new configuration (existing file will be overwritten)...") - existing_config = {"mcpServers": {}} - except Exception as e: - print(f"⚠️ Could not read existing config: {e}") - print("Creating new configuration...") - existing_config = {"mcpServers": {}} - - # Check if the server is already correctly configured - existing_server = existing_config["mcpServers"].get(server_name, {}) - if (existing_server.get("cwd") == server_config["cwd"] and - existing_server.get("command") == server_config["command"]): - print(f"✓ MCP server '{server_name}' already exists and is correct: {config_file}") - return True - - # Update or add the server configuration (preserving other servers) - if server_name in existing_config["mcpServers"]: - print(f"⚠️ Updating existing '{server_name}' server configuration...") - else: - print(f"Adding '{server_name}' server to configuration...") - - existing_config["mcpServers"][server_name] = server_config - - # Write the merged config back - try: - with open(config_file, 'w') as f: - json.dump(existing_config, f, indent=2) - print(f"✓ Updated MCP config: {config_file}") - print(f" Total servers configured: {len(existing_config['mcpServers'])}") - print("Note: You may need to restart your MCP client for the configuration to take effect.") - return True - except Exception as e: - print(f"✗ Failed to update MCP config: {e}") - print("Please manually update the MCP configuration file.") - return False - -def parse_args(): - """Parse command-line arguments""" - parser = argparse.ArgumentParser( - description="Setup script for Inference Builder MCP Integration", - formatter_class=argparse.RawDescriptionHelpFormatter, - epilog=""" -Examples: - python setup_mcp.py # Default: ~/.cursor/mcp.json - python setup_mcp.py ~/.cursor/mcp.json # Cursor (global) - python setup_mcp.py .cursor/mcp.json # Cursor (project-specific) - python setup_mcp.py ~/.claude/.mcp.json # Claude Code (global) - python setup_mcp.py .mcp.json # Claude Code (project-specific) - """ - ) - parser.add_argument( - "config_path", - nargs="?", - default=None, - help="Path to the MCP config file (default: ~/.cursor/mcp.json)" - ) - return parser.parse_args() - - -def main(config_path=None): - """Main setup function - - Args: - config_path: Optional path to the MCP config file. - """ - print("Inference Builder MCP Integration Setup") - print("=" * 50) - - # Check Python version - if not check_python_version(): - print("\n❌ Setup failed: Python version incompatible") - return False - - # Test integration - if not test_integration(): - print("\n❌ Setup failed: Integration tests failed") - return False - - # Setup MCP config - create_mcp_config(config_path) - - print("\n" + "=" * 50) - print("🎉 Setup completed successfully!") - print("\nNext steps:") - print("1. Restart your MCP client (Cursor, Claude Code, etc.)") - print("2. Verify the 'deepstream-inference-builder' MCP server is connected") - print("3. Try using the tools:") - print(" - 'Show me what sample configurations are available from the inference builder?'") - print(" - 'Generate a DeepStream object detection pipeline using the inference builder with PeopleNet transformer model from NGC.'") - print("\nFor more information, see mcp/README-MCP.md") - - return True - - -if __name__ == "__main__": - args = parse_args() - success = main(args.config_path) - sys.exit(0 if success else 1) - diff --git a/tools/inference_builder/mcp/test_mcp_client.py b/tools/inference_builder/mcp/test_mcp_client.py deleted file mode 100644 index e19c3ab5..00000000 --- a/tools/inference_builder/mcp/test_mcp_client.py +++ /dev/null @@ -1,171 +0,0 @@ -#!/usr/bin/env python3 -""" -Simple MCP client to test direct communication with the inference-builder MCP server -""" - -import asyncio -import json -import subprocess -import sys -from pathlib import Path - - -class SimpleMCPClient: - def __init__(self, server_command, server_args, cwd=None): - self.server_command = server_command - self.server_args = server_args - self.cwd = cwd or Path.cwd() - self.process = None - - async def start_server(self): - """Start the MCP server process""" - cmd = [self.server_command] + self.server_args - print(f"🚀 Starting MCP server: {' '.join(cmd)}") - print(f"📁 Working directory: {self.cwd}") - - self.process = await asyncio.create_subprocess_exec( - *cmd, - cwd=self.cwd, - stdin=asyncio.subprocess.PIPE, - stdout=asyncio.subprocess.PIPE, - stderr=asyncio.subprocess.PIPE - ) - print("✅ MCP server started") - - async def send_request(self, request): - """Send a JSON-RPC request to the server""" - if not self.process: - raise RuntimeError("Server not started") - - request_str = json.dumps(request) + '\n' - print(f"📤 Sending request: {request}") - - self.process.stdin.write(request_str.encode()) - await self.process.stdin.drain() - - # Read response - response_line = await self.process.stdout.readline() - if not response_line: - stderr_output = await self.process.stderr.read() - raise RuntimeError(f"No response from server. stderr: {stderr_output.decode()}") - - response = json.loads(response_line.decode().strip()) - print(f"📥 Received response: {json.dumps(response, indent=2)}") - return response - - async def initialize(self): - """Initialize the MCP connection""" - init_request = { - "jsonrpc": "2.0", - "id": 1, - "method": "initialize", - "params": { - "protocolVersion": "2024-11-05", - "capabilities": { - "tools": {} - }, - "clientInfo": { - "name": "test-client", - "version": "1.0.0" - } - } - } - response = await self.send_request(init_request) - - # Send initialized notification - initialized_notification = { - "jsonrpc": "2.0", - "method": "notifications/initialized", - "params": {} - } - print(f"📤 Sending initialized notification: {initialized_notification}") - request_str = json.dumps(initialized_notification) + '\n' - self.process.stdin.write(request_str.encode()) - await self.process.stdin.drain() - - return response - - async def list_tools(self): - """List available tools""" - request = { - "jsonrpc": "2.0", - "id": 2, - "method": "tools/list", - "params": {} - } - return await self.send_request(request) - - async def call_tool(self, tool_name, arguments=None): - """Call a specific tool""" - request = { - "jsonrpc": "2.0", - "id": 3, - "method": "tools/call", - "params": { - "name": tool_name, - "arguments": arguments or {} - } - } - return await self.send_request(request) - - async def cleanup(self): - """Clean up the server process""" - if self.process: - self.process.terminate() - await self.process.wait() - print("🛑 MCP server stopped") - - -async def main(): - """Test the MCP server with a direct client""" - print("🧪 Testing MCP Server with Direct Client") - print("=" * 50) - - # Configuration matching the Cursor MCP setup - script_dir = Path(__file__).parent - server_command = str(Path.cwd() / ".venv" / "bin" / "python") - server_args = [str(script_dir / "mcp_server.py")] - cwd = Path.cwd() - - client = SimpleMCPClient(server_command, server_args, cwd) - - try: - # Start server - await client.start_server() - - # Initialize connection - print("\n📋 Step 1: Initialize MCP connection") - init_response = await client.initialize() - - # List tools - print("\n📋 Step 2: List available tools") - tools_response = await client.list_tools() - - if 'result' in tools_response: - tools = tools_response['result']['tools'] - print(f"✅ Found {len(tools)} tools:") - for tool in tools: - print(f" • {tool['name']}: {tool['description']}") - - # Test generate_inference_pipeline with missing config to verify error handling - print("\n📋 Step 3: Test generate_inference_pipeline error handling") - gen_response = await client.call_tool("generate_inference_pipeline", { - "config_file": "/nonexistent/path/config.yaml" - }) - - if 'error' in gen_response or ('result' in gen_response and gen_response['result'].get('isError')): - print("✅ generate_inference_pipeline correctly returned error for missing config") - else: - print(f"📋 generate_inference_pipeline response: {gen_response}") - - except Exception as e: - print(f"❌ Error: {e}") - import traceback - traceback.print_exc() - - finally: - await client.cleanup() - - -if __name__ == "__main__": - asyncio.run(main()) diff --git a/tools/inference_builder/mcp/test_mcp_server.py b/tools/inference_builder/mcp/test_mcp_server.py deleted file mode 100644 index 9847bb7b..00000000 --- a/tools/inference_builder/mcp/test_mcp_server.py +++ /dev/null @@ -1,144 +0,0 @@ -import unittest -import tempfile -import os -from pathlib import Path -from types import SimpleNamespace - -from mcp_server import InferenceBuilderMCPServer -from mcp.types import CallToolRequest, CallToolRequestParams - - -class MCPServerTests(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - self.server = InferenceBuilderMCPServer() - - async def test_list_tools_contains_expected(self): - # Our server ignores the request payload; pass None - result = await self.server.list_tools(None) - tool_names = {t.name for t in result.tools} - self.assertIn("generate_inference_pipeline", tool_names) - self.assertIn("build_docker_image", tool_names) - self.assertIn("generate_nvinfer_config", tool_names) - - async def test_call_unknown_tool(self): - params = CallToolRequestParams(name="does_not_exist", arguments={}) - req = CallToolRequest(params=params) - res = await self.server.call_tool(req) - self.assertTrue(res.isError) - self.assertIn("Unknown tool", res.content[0].text) - - async def test_generate_deepstream_nvinfer_config(self): - """Test generating a DeepStream nvinfer config file""" - with tempfile.TemporaryDirectory() as tmpdir: - output_path = os.path.join(tmpdir, "nvdsinfer_config.yaml") - - params = CallToolRequestParams( - name="generate_nvinfer_config", - arguments={ - "output_path": output_path, - "onnx_file": "test_model.onnx", - "network_type": 0, # detection - "input_dims": "3;640;640", - "label_file": "labels.txt", - "precision_mode": 2, # FP16 - "num_classes": 80, - "custom_lib_path": "/opt/nvidia/deepstream/deepstream/lib/libnvds_infercustomparser_tao.so" - } - ) - req = CallToolRequest(params=params) - res = await self.server.call_tool(req) - - # Check that the call was successful - self.assertFalse(res.isError, f"Tool call failed: {res.content[0].text if res.content else 'No content'}") - - # Check that the file was created - self.assertTrue(os.path.exists(output_path), f"Config file was not created at {output_path}") - - # Check file contents - with open(output_path, 'r') as f: - content = f.read() - self.assertIn("onnx-file: test_model.onnx", content) - self.assertIn("network-type: 0", content) - self.assertIn("network-mode: 2", content) - self.assertIn("infer-dims: 3;640;640", content) - self.assertIn("num-detected-classes: 80", content) - - async def test_generate_deepstream_nvinfer_config_invalid_network_type(self): - """Test that invalid network type is rejected""" - with tempfile.TemporaryDirectory() as tmpdir: - output_path = os.path.join(tmpdir, "nvdsinfer_config.yaml") - - params = CallToolRequestParams( - name="generate_nvinfer_config", - arguments={ - "output_path": output_path, - "onnx_file": "test_model.onnx", - "network_type": 99, # invalid - "input_dims": "3;640;640", - "label_file": "labels.txt" - } - ) - req = CallToolRequest(params=params) - res = await self.server.call_tool(req) - - # Check that the call failed - self.assertTrue(res.isError) - self.assertIn("Invalid network_type", res.content[0].text) - - async def test_generate_deepstream_nvinfer_config_invalid_dims(self): - """Test that invalid input dimensions are rejected""" - with tempfile.TemporaryDirectory() as tmpdir: - output_path = os.path.join(tmpdir, "nvdsinfer_config.yaml") - - params = CallToolRequestParams( - name="generate_nvinfer_config", - arguments={ - "output_path": output_path, - "onnx_file": "test_model.onnx", - "network_type": 0, - "input_dims": "3;640", # invalid - missing dimension - "label_file": "labels.txt" - } - ) - req = CallToolRequest(params=params) - res = await self.server.call_tool(req) - - # Check that the call failed - self.assertTrue(res.isError) - self.assertIn("Invalid input_dims format", res.content[0].text) - - async def test_generate_deepstream_nvinfer_config_with_output_tensor_meta(self): - """Test generating config with output-tensor-meta parameter""" - with tempfile.TemporaryDirectory() as tmpdir: - output_path = os.path.join(tmpdir, "nvdsinfer_config.yaml") - - params = CallToolRequestParams( - name="generate_nvinfer_config", - arguments={ - "output_path": output_path, - "onnx_file": "custom_model.onnx", - "network_type": 0, # detection - "input_dims": "3;640;640", - "label_file": "labels.txt", - "precision_mode": 2, - "num_classes": 80, - "output_tensor_meta": 1 # Output raw tensors in DS META format - } - ) - req = CallToolRequest(params=params) - res = await self.server.call_tool(req) - - # Check that the call was successful - self.assertFalse(res.isError, f"Tool call failed: {res.content[0].text if res.content else 'No content'}") - - # Check that the file was created - self.assertTrue(os.path.exists(output_path), f"Config file was not created at {output_path}") - - # Check file contents - with open(output_path, 'r') as f: - content = f.read() - self.assertIn("output-tensor-meta: 1", content) - self.assertIn("onnx-file: custom_model.onnx", content) - -if __name__ == "__main__": - unittest.main() diff --git a/tools/inference_builder/overview.png b/tools/inference_builder/overview.png deleted file mode 100644 index 608fd1fa0c119f7cb13d2a13182cc86b997d1c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81445 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%0Ab%gwYk8p$V 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­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 QICnUqYk0Ik+xF^z0q83P?EnA( diff --git a/tools/inference_builder/doc/assets/inference_flow.png b/tools/inference_builder/doc/assets/inference_flow.png deleted file mode 100644 index d3c4900fef315fb43c4fa808fe6795c3b69e62ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500165 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�Ea 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 z zJ|=|FCTx6u#WU$XHtseBWi_a8o@;4^>gjyxn=)|Qd#!qxwncgnDZ5tq z*8g zyAe{BMio{;`rtmYA;d7<=G9jqw}I8etS4YaR)@YqJW6w!6sS9T4O;V9Zj-FS&0e*> zVp2LxsDU(pe_da{nk>dnm)#UO_tw~P4lKX-{VcNz7B`qGCYgEzIo^A$d#-|WUmWoZ zPDWRpKqDR){2JXDZQE@xOBS1YWW1;>1TqPRnF=~6@wx^E6m~OJ5z>&ZSn9k;;sj

MV_HuFm<@&Nv$m}Oc z#}#EXYir<20=dnX{odJDFRTw9Yfz}^nE0!=PeyXLvN8m*Eoyk=+M*)J(`Qz0 z3mvz~L`ebZxzs{J=o?y7azC5kQa^M$u;dWz&>vDav5;@D8&P<68hm&~I7a#Y6&XGw zG(jzR7vG|u-yTOI_OiZxM)f?Ci14O6|Ko^+_>4#^< zJ24*{RIJr1-xXE@i3slQId^?tFpV6w8;7IyT;1L@Q&3TDRn$wcZ4|<1GQ!@bA}spM z+eaU9dG4vLT#N(LLzvnIujYc7`2Xi_<1P;tvTAGbUcDXqzS!W@#;`e>9=Wozg8q^P z;{94jXlS{dpp#l;WfjvG*RoRe-W~>}PZ23#I6;89T@Ugc(DvHcA!E&v(f))_&W|wyvi@j9GM5vpV^E1bvGAr-paZC3} zP|)|__FJJ(Ya(+qB%$qY20Fp1S!Qt?-kg^XM1@WfCaND?vxOf$?-(E1WTb*JuP&Re zZ!Dh2_j4&79kiiji4yqHr$`SkYp>34E+JJ~RdD9u6v+2-xZgT!0`_H>bsVL~UJIAx zwaG3nM=4d$ zSa(zYgA;yZXz)2Ktc(2N7;%5OjXVgQ{2`OyWuE|6G6irg8uawmr?}}uBH=*RuRUr{ zGt_syd52jzIoc`4kHV~M)Hz76;^4TYU7X5C@Z9go!zyXT#=x`YW-xi4>-+YQ9mnf- zf&j**Q#I(epz`~p?;BnVa@Uo<2Il;d;odGv8%LHL_$xGMM^Oo%DIJ@H zvM#2~`Cf2ss;u!;uHkHp6S4A=Qs>^OW|y77 zV0nqvN6@Yx#z7tk;Cr^;HaqMJ-L3hMd&gC-PdnL|Yn>aPC34PJDxe@}f5}sfyF` z5O*DaV|BZSlVkS+DLky>dd`Ux+-?^eFWMa#?!>vFhiPOW^7+lArRkwBf)0nLU=P|( z`0KLT#JW9_G)of6YfD_fOUHU33R^BNh5MDBlF=PXlS^v*0QTr{;XWGPP-=jd5Zbq5 zLGl>e?l^T}B@{n#fybZpY|=)$Xn|L{;Rja(YDtcGukzk>$H&YZH}7+LI3M^ay4xRT z79!!3z0In*cadT-C>-Nim0ar66AnFI1SM%vAvIi}a1lb3lcoGy;-Ll1M zg}r=*WFadh8Vw#>ul$08Q+gpU8)A#Ff^!vKOW!SJSpevK?(G_>o@@v}y~0U*fo6AS zp4O?YJ+lsocz~3w_;o=U#gs8^;RgE3Nv-B<9@2$en^jC6GWjI-V~syQ^ZC8A%H zh^(4>ArjLzu|IWRR3+AH>jJpm#d#-v^29BRa@wivQX#VoL=erR!h=ccF&Nc!St2uVLcq9 zJ%kb-g3e3PF5rWzaTAD^vj(N0w=)C3J5GL3RW&Jm)q8ZsvD;~Jkq|EOyADf>`p34i zH;TW&{KQ#JeADE(1R+gnWPD? zTQbY3KA_juzw`{FSo8{>_GYFcUy>ngKI0ZLU=+4@gxX*EypGA*;c;6j5j;j|yksO? zIM7=(5H#TaC3ciF;vV_GZMM?upMOT2<5;20c%dkd<;t_pWf&IH0)5OLzD-x4D4z`^ z!S3RYgS)5eTbopTWf;=vDpV{SC_mTu)=bo*N<>uNjW#+Xi9bN12FDZYc8EYs3Q-Bk zL79v6{FQW11pUyW-5D;86lFhG8ogV3wQnGRFdv9LPjoScmLAZx&%GZU+EZauAU9u+ zL;ZHCvn5+s$B6+mDIlPay{}^}?8CZfz2Eq=1mmkX`ua+Goad=%<7S(yt5rBCySU*E z^kkXY{OIlhJ8s7e#5Y%L)V21)rRLh-xL#osCK0;D0|G0n{kDlPLuQ`{9p`5n2(WDk zuj8(a?{r%&=Lo$Q@$tQ=@?eHCw=4i05fo?OZ5yI9VSuy}n`Env+GhKR`)QzJD>QG5vk!E~>~?^wn>;+4$-0hTDG*7-1XjZ1Smi zziigh^T!*0W-`k=AJ3m_F&kI&OEpETK%kWBL+j5#mUiD#>Z#&Bcf4m$Fe?7mHf`o!LANbDUv zY5O8wpR5s@g}lJL$NLaZf%zNk4wkaBfJhY!^Nz1e?=ZL1gQY%^n8 zA~Idln>!Uc_Nq~G5(glah(aK0hpAnvpJ(ey3L8})JTCqKH1UKm;fZ|+CJWcCdYd2*5;Ab7m0aO+A&i3b!e0yYF#Fpjxdz|2J*HoeK3*&zgKx?n^R%%cZe5N%xc@nv zDz86nF!`iAAz5^D98VFhZQm3p&)SG?6%tzWXsF29Qoqy%}@Upyc}?g zau!K4T2EOu>p#IPE6*ni(2rTip%WGIN%h|6e+R&lG<(aYj@>Mui@3kmQgpb9{rb|o zI2E?;^=Li6o(QuD@NHteAn!kcnXHh?0*Hz;EfnX&W7yijEc3y zwRF+koCwsvJ$O%@jsd31u>iFAIicm2g#8CMP0lR&zZ?|sW?fy0t$@dBpMUc@FY;Z1 zncqLmN^~f*b|{K`UO=79vv4fE7WsGhPFdR-C#5#nXWtULDz%|0j6`nk?yIw%row_e z#Lr`1M9Tx~ic8SVydSl7XsJJ391w-$$;1$92OYGb7NNw5Betjk>zXU=O5C`s=HOc@ z)0SME!zR*g1JwkU1^ZD#^~6eq|36D-t*tkW&#<3)L5*f4G4Qjg-f4@C?I87e3?+dG z^r(F*$kp*`#BQ;^8b7PV6f})-PTcS$;b^%tb)in}20}ZbtQ3@I$q=Zr@YzNIdf&w7 zXu9XMjfz$LoV2>r()cK6K>;cvT<=cCoOh+xFwu>Y)ry>3CK@b)%)2(bL0k_#=2adh zj@-U>ob?cRvDeYLYQ`loQ-l6CMKrR@3zIA)N=9!?&a#(S+DaisC zp0f)8q*5b|vB zH+oU{Y`?;5LI!4S-`S$x-*8lK+W29Y~jdV<4J8!&J; zZW8%+IFvR{dinVlnJ-MeO+z0e|3H^fKYh_*_M!JL_MBFYUPIr^N z)julQ|6#v&AqrAb@DH~$ZB*>+=m-c1Kpa|H+Tf6o%Hb%;Y#D=tzw4r}Z~B0vt(Mrr znlEk4i|00Qw~H)YMeBY9wC_j9i7~m4SjYgI#ri!et3AH!<^}rcJ!BwmXh>;6n4T_XCsgu$yd0>u9vmzfS~-JWZX!eMMp#^1q?`TG z_}o(`__RtN^Qhocf3aWlH8+_SzVU1lizeC9$96mCvF#eUX5hyrK&^2{fW)0%Vt6l~ z{p!*^RIVjG47JF`Y(B*6$NI3861{y+`c>VL8LtHWrt&zU@nuv-9WEe5)xi}`!n@{p zck$U7vbAcn7nk6LK~PvF2?^;qs!f`O=~lFxn@#s32kPzJbKhSekR`!j0QZHz+(YG~ ziPnA7=-Jg{d}vi!mMxTSn*KHx=5YXFkGVY%g-NU5JOb91K}8>z#Joz!Jz%Q7HJARW z$b3dg4{@3xGo*GM5-HuEIAs(VB#YEzF!WmO5EVr?*>48D&g9F~GZVjDs+Q{Kt|}$n zi9c12Z!a;s6!a|IBX2oOe^fd#fZcHi1@$xR))4H&@t$W9YKIbn>b@n`dEv$n69!pT zJ^6YIQCKQTzp5WZ=0zc>mOEvZjlacGq`6G+i8`U zpG@8rIVwIa1lIBpGM_W4BSeiB|K(B#d_h=vlt+0pL2JjVzKM!z=h$0Xd^{G62Psd4OiIf`g#0{9lU?s7CRJ>ewT zOZ^Mde_y0Yha52Tuf;8ogKz8~vr4So%IA$2O6vs`4RS2D+`8j+Hrvzb=BF#L(?h|; zm!sWnMS+jnQVXBA#A_|OmJ=R9tq(EF%c3pRBay-Jf&V-MRH4iY!9@Uba^}V!^!8&+ zY7QzB_`vf6lq&N;pfNfMQQAjL>Od3KBP)V%y2Lwg%xNb$EG!vQ9WU4F$b)dQ@l_5Y z7NpPH5tJ`X-N#2&&kymQ#E7Fmx~Odnu{?R90PS1#!(0#;a*1GBO~u4tCcpP^mQ3tM zDyaw27Qp2YDsuV^siKh2nR}}i}~Jd3CxPjp%cZ-H?uCw{0nbLKV5}A zb@CarMjK$k%&#kRVy-9^trS?2QMU6l*as1xzgaQg?bX(O&iR=a{l*i-gr$7afaEw8 zW+uUW+0VIZ=O#Uzck7B!QD&Nc09`(A4xWif7oyuoZ9}gpodr9RL`ace*7o?Izmd1i z<6N-b_Xwx$i6BsXyaNIkmO{_imXI^wq-Z!E!b9EhmQz#t^D@y-l8`*Vbr~68-hZ~( zUk@I*-i#I9Pzq-nHC+1{v^P(icz`{xx4RJM!*YQ=|6T+b7>#(3VLa7g6>IB_7~oG? z>5Z7u3=BID6IUKWW;h7#Ylzs zvAF58vftbr^;N)Pq!5DB0E*jQJR$#N50uxU_6My zh5xq2T;tA}1qCV7fvT20pSC%|rwk0h=tip`x0bK6vPt~Hr!-6KLk?S&r??D;_iQL* z_zl_Dud})LiLFv*Gd9I4c8V!ZHICHNn9Gs;ZI_NaeJ9HyZgygHz2#TTMw43==}rGK zpmxZ>3=$z-4B2zPHR`OA+9IGdqXTU7E;vlT#S$>*RpCS zZ?FIONNX8tCuf0u{m2n*GNeqWCu+NMiB7bRy=e0ac0<+9F}iVKKMQ!>RGyBVKCM$7 zCuf0DT=wjOpG{-#74W~Ah+SU)xElMh4?WHyYBDk_z|GzFIU2yNkw{u`+Xx|uOlPwF zUpw9odD*G;>wULzZ(Gloc9MQdi3MwZxoXz$)yZ3-+zD^Ua#o=KrfUmz=BCB`>?(x0 z&2?ko=;8=1VoRs_y_-b@b*}|6R<9j}RfOhWlk$Ux985P#r%!yZM#rAC5HFHn?{e51o%8}E>?6uxMu$Q%| z-t-g8CV=y+v36}vtCHUr3%O`b^0$4<*Cm3bC@_a;Gzg`Yg-yYMZRVnPI3z?4g%n%y zq@e|gDp-`L^vtt=^9UEv17f+^XPv(6FRXQz5 zKbzrv_U>G7;#`*0z+SkUb@Wnzojr@=NLNE0(1K>9WG#*cQe%ak{@H?Lw2DF$e{24s z!TU}y&3^pt5zy=E671P=WS72#xg{&52(z^R$_zGia)2&l=RbKkvnk@$zc6Nk~%^rPYoV(gk5v+(el zgTY&;M0)|-A4LY6Ca0`%H0;Ze_Qoq@nwZstQ<;8)2ho!;%SNZVyV%+A3njJU2m zD3Ig|3%up!qz~Qa2P$@QF!!35UjSW|25fTBLo463)LZwqreyC|-Mb~5{PO+R%;^Rp z{j@dDVGI_@<2fg*v+Y0Jp`N*;^v=vKdGHhLwHuaX5{T45jiA-g|z~oPRn-E&9aI z3~IK%PM9cS$s}{JAL!usqEZcAGEzKI*c)wgC@HjIQU(UgUvGbiBH(u6+8olF&kL6c zIyNSFW4#3w(6+%xArgJ*=YiJKHFw70v>Y^%qoSZQiblN;XsMmJJjvHRdtCwcyAPx|;_l8}tPhx%Cc zPsy%qYb))VKVn5Ywp&dI1YN0(+6rWp-N_=-1cRc}t-mxg5_xA@QkCRC&l{y#-Ji3? zu}F~~z3eRCv3+8+-uBu@fr@RBp<5*hz>(#LAa+jpnTJp-Us)*38!>Wadt_sKsyn1T z23zek6W;SOMM}?_@qMapWH|;f(GF07^4Z;zA_~S%1~c*ckjk%6)t~{at?#A(ie4fa}bW_FF>9wmDHF5jt?oY+>cFoQQaY z*etMY`DymF_S(bePe_yQ6jl#pIL!k+izC>MCG{xuwP>ohI{}h2A!-gTT;_Xu?>Rxh z|Bvl`ZLFsXp|-HF*j}h(hc$D*ljekVmWPLj&o^qJlHl6Lc;$l$8bn^k12p!KN{J8C zvJf47t~C-I61Yc^M#ugJZGT4gESKU$npOSz`Nx`JbStxiumbwflb}MXbx|MR^C8PV zp9`XfEnc&=SX>5n@JGyXN{%EJq~I`#zK;U4pgJNk+)awT9Sz~(0f}yQp4sYKxOnmr ziHC!w<2W9qJpqimP{j&!h#E>6&}4TFi$d&i9diEQo7wOIw$=7sGQ9#>+r7N(wlWl~OvIh#UcnXK&{ z6^*4>cmC4qZg>7$j9(ny!vKAPDM-FV+^mUk(8LFlwX#$-x&ok+yFT^I5#HNS!ZX$s6}?PtTsN&GjN zc<(xIsdUPMcxi}UmEnEcyv9R8I}QS>V)(|kRrY@zKjY14+{U}@4Q!|BFDIz6T5#mQ zG}orGzd`x%0_k;zojW-Sycx+H!|z3kNJ_7Ihmna8ne~SE*8BS)prhq2vM!Iv$T*X=g=+(R`k3RHY1Q!~dC7%A&;s zNVSQ7TPuIH!=jun{0TNv6rwrtj%1-02QxL-WN)dPfXwn^JB7(uGwN)sHJy3ZX)6?N zXsHh0rqNaAjJORzqC zMI&f)AdZgR7)=ofLZ){$S^U^eAZqriwsij`xCm36)U4bTN)|>$fLv0C|D0_$WKCh& zawM%cfSMSCoERmX4vqPeOzW0Ed{P10;Kz)Cjf;}CADS;u>;U;8&O$y#ZX&bMd^0So zFpP{Ns@PF5Y3XP^BPv7BqIxKWn#KO9AMXz4RhbuIZ(N*DU7opR% zj7%SzX)Ptw5>yjy51lR)2^DK2E6Ip(FJ1anj}Z@lq0Ir880{S0-xw8Z6Uww)9`LsC z2qx0Jp!2IFZDFw0F^Q5Mmno`Fj@u~VXsK%^i`G476sLc$RawWpfF(^*REav5?^jnT z<`I*)sO=-PH85^rw{qhBv(mH;MUP#_uW|MKKriJdA8EU&USGT`bbj$)7V;+Pb+Bn5 zgEcoIP|pB!O9}^nu|0LcQ4`(er6?-PvNZn5XAlv z*y!T;eujQYO4)=rLu1U-NHr z&)6}CRtke^zD`!BoImeqo;s_MLa>pUO5&+;TsKB3FT8|6VZg=O9=h@)xya zhggJqge$WD;x?u&`RdZ?(mi`j20s>;kB*}57bEru`z&c7AWOFvSVYGp&-?BSVQ1^TfQ5soJwc1Vu32c?yb>IlB}w1>LXe(D5oo&SW1KK1n`KYniz=qvF>@A zJ*0}MZ!5~^Yb}AJJ_eT^AKi|WzO5+MvIaYMoy;REn7W@d-1AEZ!}g1Y+d$S^u!)=QX{V883(b1geN**|hmC%o4$w_i}M4(09j zes}E+`)b&K+Q>c0$*Ehhd!6RX!K+uT_MVP8oYD-kreb0>W#p5y7x@=9|7IFb4sZZN z9E4e%rW1nui#1O>eV^Gu^ID6MUPR+W5-Qdj@7*?Rm#{F0x^Rk@h@+P*ooe(O+rxo;nQ! z&ewY)Se_$~zTlf>fSFB@!-5^p?qJB6WSPG2g7o9Zwuei2r&x>bDQ3E?Co%DMk`sq> z$7fplktY?un<}|tt(fyd(7Yg|#mbfDa?XeVBi*|{ju}$JP#S#Ey+ze-|6eC%cd2jX z6WL-l=Flc4YgYTyf%HVLTEN=vJ#1*W=SGMd>q~Ojg_}3Z013AS-XmuoD84^aTR0k} zoOay!_hMkPt=mNKVKZU%z4wkZVEWB9ea6yYSt{s_EJdM{O4mh*xRBWLtqbs)X?1HW z^80rx-ubWb56`P6Rjdg^M!OJ{X& z&vJqM@%w9d`0LIY*}2k*wpsQfgSr%HmaQ$sNAzj?rQeUb3m1us(zV$`5(lYE>m}7^ zye>lck?CSA(=RV^?I&dokurE4kAti8Jey+S2oFoa6H(+PGLQnxky@7=mC z51>p&q0al=Bo#_#q0GQWyY>?=B#3jT*5AdzyFF|H~W_@&2)DsmI6#|q% z_6U{b#xr+HMLPf9p0(q9;aF`=i1ekFls}?G8EX46p}d)VE0oJ0k_V<+N%1n{3lggSbE?y=Rco*NCy(9X8{b@MWV zsc*5$x?6?toJpV<3;4a%OQ9IhiQ@s>im>hF)}bx0s@Av%gk-gVmYpyxR9Aiwcy{CZDgV6O=%bmwf0p-h|jN(t>Ou!5rStqAw zz_@r{!2j6`Jdn(R)YjH!@V<2=?>Oh|w6irqRz)k_UkOj#37%j@d~m%7)TW<^C2m4i z-K|*cC^FF^C+-DIV2nixOI^fsReRy)oE&!cnYgH=lq0E!-;aL`rOB#qT6d6qIe154 zc4e=U;RM2OaLw*cFJ|z`3>ulQSut`$8?>>;!NDmu zv>Xr2qNO44?I=8U*oqwe*4k+0!QlVJ6FLbN7s_P*Px1nr=P z?n%$`T3|Y`-mCXEA>+L(P-#wyg0VJ3&W^+C+LwNX4W35F6Ri%{FLgb@!TD3Lb-wNU zedU8oORxvEX%Jkm+yt}yM2B(cuQtiw>l_D9=)zkR3}*uP`1L@Fv>k*5F+-LVmO5zn z&iuK?on$QjKZ)6keSy_9QV_HCRH;{l1=CO_0kCe06F#BY>;jR7bAj6GLfGXB(4kG~ z9#c8^wmrK7l`DaNz2V(&Jfxt%x|$Hqtiz+$@xRZJHu1Zhb8^wtB<%oN7g(r7+DCmIr)G* zz>>a6HwZkqpoSUaIh6g{50?OK=sCSl=jozn~S zmy1I*TVRWN1t{F>NHyLp&i@zOFX!HiE((AWhP3cTF_hIbv^dQWfb>3UF z+v8a-X3&T#k%pqYkH9R; zvnZo7P>%huIZgoBUrkG6d(0!gRr}jnW-TpD1=2_;*J#gY1<(x4$Y(vDsFTFyhbUd$ zo+{D{Kc*v_U68&}jj_3zx^ih`=|Rtv+i38fm1!b+WQ%KF)FY`sgWXv}tWnoEo0a(R zpHTO&iX5|BW{VbGIVy+{A~-C1GbTFjqy4iyk4V(e#j9Dv?24dcDt!w_FZvjrzyyqp z^c4ERtaGd15IWA3WYYK1_4(+eut*tO93x`Wrr7Pn`9V7*jwn{SN3RX-GdLihXQ!Yfz6mk~q zg3WGHBmp+Y)d*LJQV96U%a!15QE4WMpZ}l3AJfGxQl(bfp>y#N@ zi&c)TQ|s((RTll#)F7)Pz(@Vh=H=tjMmgZ7x)S2f{YaBZWZLrJdF0Qd#&T3mb?}b7 z*mjY;gN8KQ`sY_~Gi_jb-qg|+qBchau&@fA6 zwm2zUZUw7E&Dtc|beCLS@ILyrAL3|}j1hsP@-Ku2*bn^^`$XA8?}3aBVCxw0c5+;y z+^4SB(FhDVuV`KQ3)cDbN9I19F*A)%vvU9W-Q#$?kpo)rOI7~_Rd=yji6>dM(Eod# znqT}9Z+u;WuImga=T4GlPre3tui0E*_2_66kS&|GX1MDwceGj9(~kFMssxhX@o0@Q zd4+b_Upu zPPf5dPXWn@{hYe~%s9Q?o17PB&=G{hlfBQM*Fkhg^) z*u6EdrOr+M(8Nsv7WtXzwUWv>2x1>K1=#v%T>EsO;tv&mDs}f>Pl@!l17la>LX%^26k}G z;C;$z%m6q}6L$XUb)n2ocD^qCXULR0*$~blG zlT3p3>mPJ@SY;=eItt$rXfPd>3YFYDGmj7xv?o8l^#jE`hB6UzIG8+@&r}raR$)OD z=vsNH&RG3euYGx2Xl{cXqfjQ`Vn8^y8O!JZ+FeUm+*;b4PfP^vjrTcNY4>{Yr*}L@PMzZ>%N|jz3bqDf8`|I z^KIOqW}Q(L4>JtO4 zjSL5PPVHOMaa>C&2)rAycO^Pg!G86{!V5+0^45-y4x+`H5wW<){nO)4m+ES*T8$Ho zw}Zu9zP%b?^+t-D28Mn&tk%tArJd{mbLmQY1|y>bn6febs~8(;*~j6hJl! zK3$PlVyxcgi+Co9gpVl=;cZO!U|ulqur`uT0yBinJ^xTwE1SB zb0AJFRehN=pZ!U**_gWPEKEGcG;my9x3_!5Y>{ybh01x}=~YW(^Z~UvYNTES7yL{` zJvBnGK_=JBm!kap&C$5-Um)WD{r)2_!Mq}*#q)?hEjd#u@BEJa zE%@A49uH>9wZrI4a0$6kLI$(Cr^gE3Tsl7O3m;?u;3E{QSm(Q$yvhMoFQo^*ZBZ)gKVoI;A__9L5PhBh03^;1me5!o?j&n(SX(YR#n!)lZ8U z)u@5&9FhQHA89K!qQq#@K#Bkt+B4~AgPFnsV-`cJ?Xf4JTV%e%HRvkd7FdtFSDAP*>-^Gi*>XNi9 zdTonMbh?K;J?u$&qxh4}$i@$_8FBx^W_)Agnf6P_8wMwYBtT1i?piRB{9a+U`bjSH4rek#Pn zEZ6#RgcfhHiTqdwDdJMhahnHZ(iPnu2%#OR@sPE2Y7X5bibn9FUD{*n*rW{1yg|v+ z={B^SmCo5KElXy1=0-l<3QHF88ets8aks@azQR$hW~>%Oz?Z?2xMKHl+!(>R@sOS# zj9o3$^7O@?@v6Tg#V^Mb^V1 zMnEm}@$-~F^}LU7(g(ZgdT-O@_h(n7+AMwioQ$&xTl5)fQOYkbIr=$^%1P+2%IV`r z?LMlRud_z0ZS8y9R{w?Rf8E-Pc98e1rWI(&0bgyN_!VOS zX%}riGMp0fKBCRg7aW&*LdbObzrwQT7Mw76>wg{016x9k?W2#$hOm~G(n4-MA{x+< zubx?zV~_sVuSOmL?CnBA@8;${gKlU1;~50a=2bjsznu}dLFGBJu)ry0r0S;!3_bml z6OjR^`)5v?AqUU?SAZNb21-p1oG`RFW+|lBSc(j!v zv(JPh+cr%^v+)@g+^nW7U+?2j$x;^OwP$g%`x1TT+M?7OU;CSDx|J{yCx_H238C)= z%OZ_fW?J#CxiRH9C;g;wd}t?rV5cr)pIa%5MJ#n#w-D2;Et*5V=g$9H%F3P+Hb zVV>R6)yHwmGWc=Ih)6YCFxEy0g`|whmujSs#VqZakr?dW*HRHAqolVvcpxD=bowar zpg;u3{z(Nf*wb*-irsn5?A3Q&fLJS4CdGN5>hqPDVlw9g)elN-fq{POuM^eKnTdLS z;7WC4NqIWjW0G*;#TO`bmaa#kMy&^)gFA37PC}woFBt_oHG_uaPmB|Ig~8 zt48iu^OsNq5VtMu?A*YqFD<7^n01C(U!wp+W?Eqv+OE|j#+zjXjjVOyjHK8rGsRb~ zC-sk9;)bX>IPebZq-e%@1I2%gf6Q zOiUf`6_VZnQv}(d-@chj$;e0~em}beum}M=8E4z4)q@i`#Rb^$I14h;UDE49Es{0V z@nG#skjYi>N&}@(&N!)U&AO}CnqRX5PHrOuVTK4;mt&KAoy&q&-p3>CONQirQwU14 zePNJkRdWrc6CibkOeMdIPK_f6jg8~iV>i92%td};4)lLIqE!wZu^cbOFtgquvq9Mm zO?B@%emINX(D@4=>Wx(p1{lJh(H;bhj7mg&XM-OMoxkEXR|NNe_$h%?1zM}2y=GU( z8v)=v8KZAKu?7Uj8Lh3YI52&;PLzvR_wI?H$w`U7YN^eY)=_4mC&z^+D8#&QKPC~z zFf&u;aI<`}9=R7KH+RcrdIEk$@E$<7jMKvDs6eD~c1vdZ9OYR;og+@P@0vHW=<~Ou zHD!o=;8Jy|d^Q4lf!DK;{iLe>-BA<_bZeDHN9Gm!U1|LdRc6ac@-Z0E%JIafeGaPx z6L%M(MftzEurvSz2T7c#{l-;LsykEmgzY_Ftubn)0KVsS0PX~gyuCwW$-oE5BWm9kuw8%AA9keh z$D&Jct@R|6sHBAmG~C}vl37*%fyGQ};@h=_Y4g!!(#P%pq(RZS51CWi! z!vN^YjM`k0BD}eb12t^j&o2PQXzcxy^Ev_iRoN$0Fdg1NmxzvGJTwrGBSY5POEsb4&tmnc5q!JUp& zma8(KG2?S>GmxXvx~Mspl75qap$6;neiz+3fgojfiC)Kh2a8z8OKzC1NHlr>8ZEsy zV_aN36BCTB4}Sy)pcHu{>VJtHN~EBXNQzM%mFrO;-}_9)3IjpD`AY zz)JyV9QhX#0mM}nW_Hr5{Rv9|hsXiYh;b5|EUjXq=RaHGD_mHP@(ngT5;}Ja6ar0P ze)Epm@7qS~3_GI@Cp-PxwzF03vd45YRqn}N`85u(Z}XdI;h(U8@|r!>H2DR+t49_5 zYXT#~Kpph_RN(pBj@5JLUpLzdIkW`$+MrA*kd-#_v!+#ErrtXCRHI(tkrL17f+k?VH#;C!i1>9i|9eTcp-k$F^|BOz#f7$) zjq*ZS57GB3HczjFA*nQ5JA6EGOX6vKuT_s6)i+c{L|5rgR!Yj7HTB&90agc3I#yZ6 z<3!jsOdm*wT!{`~|3VeISIS5mUFk^uN_$?XmHOz@BBz1M%K+M}%8 zk@s2Rn@GR-Wrj`TN4f6HWbDw$#o#CJFM7T(iaR+GonmfBwPv&1G$sb+#=UH0_Vg9^ zs(*ULmZvbMKBw?Sd=oC%!^$H2LJb*PI;icsdVh2(CVSEu?oVD5lX`qlxndNosUH~U z;KA;>#7y?|Y1@~ad0fNcw&5ybbz}dr(_eBAVIk9Y9(!v^+7+nZLai79_}PtgejX z>KbU=mecK;;DfjEn#MFEun710&NtL*ht z_vhvoPZ|@l#~k4+deH}~lo$|CeFlF)nN@eUXV`$(^-0JP_|_7=NQB;TOBm(*kV2{P zOR`G$czJ`xedQ915YCNpQV729@$~;iYNGYipm*H3^CCq}ihL&dlBd%y-vgTJZ@bA-hWh+iD=p0y3@T9S+NmQ`0vC*am zS*uumyjfHbXsXQ85v&<>%Xqf@QBY+Y3kW@oAmJZ~oZRv!Z4D^wzSLBI)!V3i|EZocF?5A4%^3JSc zPZq;!<20gB3iHaixR6jZ9D@r!kPI08P4WEq5n`sVtkSD{OG5XcSCg3c{`B`0O+I%n z>_rC2$psvhTUF{PX3o}*65i@L);3B7ds^lxO7}?O`l#Xt7E4o44OeSL;0czGtToM< zU?BEA8v!UKPi`#@iQ%>&en^Q(>rLSmd%Lm!4_k;C8BKsA>P92whQ0h7$7z-1=A@CG zeZ8;E?h*c9A1k6B1jlL=H~zkhBg|EGryY@}H;7BiC&h&N6guYcwo11oL|ARfeD!dk zV71hMxfR8HVJ2y}J~zkRasmx52e76tbY`uJf%R!;Ubx3d)g*=KyY%jMjz_N65y@UO z543o3yf4a9j)!q{0CcY_*79_u4&Q!Z}KWErf|)r88+UcnP5C%_>xPbA)$`q|u?d>*)l_l1nJ5iSR_l8F33{;spP#h5AoS z?wVwSB~#0hCF{v(Ri`u~;V(yH4P{C2^;^^fEUr1trId(uh;2*za z_z&)2viFNrx62nyi6rxQAiNBR#?*U|V8&G_)4$I6J(yZTSD?L9Sa~1p+7|+@N-c&c zbjSoMaRN|Sx~EdM%FbFBYIdrp8gM*#nZ;CmTXu*@PrONqb88xoYy74wv+(Ho7idU{58p-@(&Z4W#z|M#G%7NS@TIL!yU@o^uoHFF`Vr&zTTB&bwN#}Vaa!gaOiWRnFt_Wt*~U4tLr*WO&m^AM zje+-urb{(3hk2$l)eHTYw?r+8my1Vc(3#Y&1DcC~R3KyLla&40`0F4oPR1Ko$-MEl z&h|dpKdvp{%$a%O|GqMS!PfHU-*3ax+V(eUf26a3{?}iw#7|s8~KK9 zL$!B<`TG|bd0?E1`~dMSth_eV3UQ18eUu7YR(vzPY1F)OSTa65w~=T3j3u$`MX)uv z`qMFE%5h9YUwxm&hco&QX0^Xc{eLHJFEn&H+HA-omYJ|kMou3yFE|mY(nm=oXA#8_ zg!}bJ87@aXW}Yr5)yoxZGmYrVhI?>0U($49&PTWj#dpPnG?s-GQtjA^KBzw9#RgEMMH|ePKYmc^+V_NIFUGzE{1@zV-N2 z1SYk28_rJq2{-MOQettPP}8%TppX|PZkeQ}dACHo-Ec^d*R=<4cTnSdbHH8C&`n>s z%k-CW=-&xE5EA%Y_o?I+6u_@u9ZQ2%RRg~FCjq&{vvm#s=_w>M!3xOZD#WqwkhURF z)MgQxWWkcIRMMd`NWbTO?VAy^QS5D{5^=>L>16j0h$yTJVt3D3u8~XHQok8jMr-*8 z^{Q!>K}afXJ&cd5$;brKLY-+@O%^*m2hw>k)fMht+RMRjJ(O`L%=jnrZ=pN0leqyU z$UDUP9Z}(D9QpAi=F<>L5*YS>p9UVxSzWrPJ4!+D`w9hg$u9d8Jeh9LrfBcBsA8sJ z?_+G6`U6CixGck+u&b#z*VH^&b%EG=KMXJH-fjzJhO#0H4~P(%wU}ypUXM8FQJ-cC z1!vM)7%#tnJwQenzMoP9IANg+vgI4kL*8fMb%S7T#bB=g`7;{~w6M@_!f{1a+re2>pBSX}WY>5r!DAgn=;up;Qg#GpG*^lU znaFFVRJIRv)YsS0O%X+*b{DpP@LJ}-&*?S*mMf^HZY7Nd* z-0bLjvU;t9U*8sKHsNqhl6TF~h2v51kW`d3b=`6mjEo!lPA?=C9TO4-1=5y4%9ePG zv^XepnjbQYG_l*fpm#R#fl4!-G2D=Kezj7?n=yOFV|IsUO*B-aSJ%EGfAqH%;6Krw z$E&Bb2fR)uihV#!Pb*^da3us=R?`*qxc6SgC;WO$P-JtiS0@1`Na((}IQdA<*&D~b zaSXrmTJoNSqzC2C?zN3b4$E%jd08@e4w%39!6@<;9`>3#ufN5o&$Dk4*~i%SU-zRO zd9O;~ncyul#~a-6TRj3pBPloaHFYOGoHY))Um@9G$~pZ*BNlEgr<*WZ%7(!l2i6)y zt&nW%H0Izx2G_u%rG-BA80zeHc!PF-%GCZP+ zedD^^ohOOV|7zXP7y+_3NCpL}Z z2KK>;Nnbu(nkBHy#i&)AVT5B=^yVMy)ik;a#GYGo_Lpj!=^(%tqUFj(i$B8jR>z5i z@jv90KgAdeb_&)nGH59RZwz@qQxJQDT8{%r3#us9O}%X z4+E~cs5(C$@>zm4(IUkhbtyY>D59t(gR@%&<>Iq7WPJ!iF)2T8tJj$xWe%PGtxgv1J@nv5zIzaOT_42djOK{1Ck0;iRX@# zkBKJ?XID6~m|^FaE)pdo2chA+k;^9COtYX+J9!V4MOVyCyvR3z0|2&Sh6%?TLxWC+ zEU(Hp-+spf3fuK{<&>2}LPAi0^uC2pijwl!HWqmMjul(0p5mUi-qr3{ux>z~$JR3O z9H6JyZ_5iQfNXxHebvG&K008OTz7MyLP)+lx`YXGbxD^l=<#Sa>4k6AycpT@`rw9| z!KJwio5mubp7bU+vgBI~1LN#btG>zK$69EtjT+6;&)bIJc@Mfq9nJC@8J-FEFtfG8 z!;{|dRsqul*bJqTALy;}(yX~*4L+T1fZU;Zf0Azt6wg_I=1GaJum1GP6>FNrtk%_( z#2?YikTV5$rkD+Orv!o1^rJ@Vh72V6NSy?{nrrexbR&H4TJDHlzsJyNe?iR7R?bo> zVBh&fq*M8sGKZX&?8}Y*UsBnBU3eNn3=sg(xf1PjO{p6s&cQS=dlhLujW?-V$?ZNS;~2Dzlxe8 zhF8P+atM!Y&dB;OOvfeS(FCEoz1hXyEG9FAg73`ubeLXp^m#{_Xk%n zlqkaUSutYNGop(Xat|_O?bGELWhV{}h8r#*Q@>T@YN0FgSEoB*HMO9TJXw>K&M*Ul z_$SITDk{S$8YMkMlu|pcfoqI%$;%s9Y)wR4@f5i$x8})+9V0FmX!-fV5`7&FJ%#RJ zaVXu{C#UWETGlFhp2U*wRRQ3*W!kiC+esu<7yYh0pmQzf?Tapqz102QV z_;j`W<0V(#(C{N!J()0`n)1-pKO`&YD}R$~L43a9w2vL$wqmWNnVKHN^nky1ScHte zn8-_JP)zFpDMH5$(IxzK!c9}j_Nv!h?||f&tU{Zc%MHgY2AJkTCWa1#&KMYhM`1F% zUA_N0FTnXbm_TT#6V?MnFfg>J_y~{Rl9u9!P*)771!pj?@VAs0h8{Z*KI_lP$vIqY zJ9{ao(Zc){9kF_)FF3^Y;GE2SqjAZK-Ds^$IJJ)SL%^s&l?zQ>SM!= z0js1_?N>>{t;16)>y84J&+win-=d1%yn|lgU(%FYv!(YHwPmapih^|+;Tw2OkVAKR zii|nm*wtMlD?2QucSOqzF`1>%*%X13j;_XsMM7twBnJmboyYy-M_4P}Y+`03ND;Hn zh>YK*YlTYL1e`Ym2f^TVfJKqxt^VAd98s{Fx-R=?H!iRssrr^obD0zr5fg)Z|MFtm z4x^k<<8_u{w=P@djXqBQ%;R@o^NnD11YRF>#q=kfb?egtyOU&TdkkJ)Lii|ne@}P_ z0TZXm%;5f>wzI@{Rw|~Ulyg&-63nJzAFJg+b!}? z7Fme?R^(vEk7e)@Jd?Q~^7otX{EpUKS=W zxbq?8(JQr&ABwKBu~8bgw^~g(0!FAQ8Y2bD2AyYn(YH-`cm%j%c1@Rt-@ewlUS3qy|VBn7%;*HrdB zzkE9~?Rm31!Ig7n`v>@{5jziq%yatn2Ao#^RoOBj7)D~zVmP@1eV)fPYxu;Q$Nv0qv|V5Nq|xb zbIFPS#A&m*tDE@P1SxXG1LUUiqVi^&3GqTMiR$O}HCx3tlZJ7IRoZ|h)Ymh*Q|Xd) z6!OP9Ig&PKdW#F%l3obUud2Tg^_7L8c@~TG9X!3--6;;z=bW99pq-$u_`y*snvQ79N_SX1vhd z1;W_n6-J4Z9d)MqlZRKcC>b68hR;$&HHY;6cwz-W0#&Lx5c61$Zqu$CtkW$_-C;9Z za5ih^Fn^nBMnV+g?DES#>tA&b;R}7;GHt`eV<(yIPpcz zWUE_${zOL?Ps28lhTe`y9pHB1f${clGU}v@%#pa~uZ;W3Bd4mJNO_7gqjN?cJ|@!C z{Y3}9c-VW;-Tdq{&T= zB$%e93jzPJ=_=ub7^W4X?X;`xhHnfUvC#b0rZc50`^#-B~gR zfyT%r&OTAigA}-TU$xmze|XCZc&OTGYf;DMhM|ArY_GNvFscr*bqjIU$ywW}ciN%p zyq!(*X~_!iwv0YIgP+b!DBn15uIYZdD&qfwcI5s0<50(W0l4eHKwwf5u_FB#ame~= zhqu{zh>W4?TOw$9xJrftDU!R3pAuW1L&=L;r#+J0jJlxhQO;M1qHWEmMyS}>;=|wQ z_|6XbGZjH$cFQ}s6uUTiW%xukbzzNtoCJjLsBUKTdt_LG6%E3QDvzc-j;KeE`c=T5 z#5xumIg_W|FpMD;6>a~+TpC@WQc!C3eCcJ6@SJdRglru@!>7+;6U$hj*I&i0Ph`81 zc)?(8-$sAqcR~V@csK3KtD;DgM}09#1`#v4j?5V%n8=Vutf=wsZcKx_l-gqk(wZ{^ zad$21r?1~ateyioMSa-HRRMc{QAk^Mkkf{@5R-f03j}X=pW*1MKki{L$ZD}!xUavT z!*ZDF@#Dvy;0O>0qMx7N=LbZ1ap34({6wmfTvQX}PO$>6JcS`)hKpH)SPyS{V<5HI zH{$ObJvBU;ew9y5kaL-ob?}r8MQey+wKFkjoy(o1&w-Mfnx4$o3GMk)Sm%k}D!cI^ z=d0U|64x6lJUsH;Qm!>wA>sN5TS??nT73_s&M#Vd-{Mh-40U|a3NO2UgY11thl27U zkjA`K=~ZKIM>z)sb>m3RQMi^!<{4RrI#6$h;U3{Eea4lJ{l^4>)u1`TdJ^UZo~wm)sHa~{v2ewSha?|_$LQ#Xj-33b#Skvz zkz4$$#UMG-A+_$k@7wLm_}mj5{tiLd@Wcj5S(1R>eo!2~!!^a>B0|J!0A-P8Q%PyW zNPEH}d9j7a9BGRqcPL#mP0C?14K5N%2x;$}*A(B;pwIeR90YX(rX6Evt!v@BN+v^UZomkcvC!qkQ)V~k^VKSIA)^mM?kxsdQ zg3uMLQ4-3eK}1u*uV&kw8HdFb02vv}$X z9f&WEeuJFrpKjMYcwbNekOYwy78VT1C>vf&cXo#}X_PrO%4jWyx>;oAtc%k;E=EpW z=7Jnbvy29xNSEs4*fxL$YPFz~XRxL9ORTASFTrYi?QkvHE929ms*lW#e%@t9>~iMG z&qSB520O}l8;BAt9+p{*ncFM^Gs$^bq!;za%1&J={!6%jUx9wN2?!K#iJNG2Ud zai-^*io;qfr9T{b^yl~^3@a!W@Ai>qDlf2YoA;u=SU?{UXnZd99DS}R=t%kOy#>c2 za0?93ntW}?6(XO+_`Gj=rR#ZigHvr=eQ@kAP5|*l8g^%g{%m)cI*k zP&o7S3KYI^#d+{~MQFwU+HgY%Jpy`jxOO;TAx%@#6 z-Vx*(7jY2W%=KcE5E_mi>+FqF-?byD1gB%B&;dX+k4?P8T?)VaF)=Pj5r^F??i|wTl`x7&O_|o5Ml+P%PoL;B>sl3e)}6z|w1+xV*)SE^EI= z+mesU54e{M)1Sw&Q&1GUKOg`)4OXB_*RJUNl<3GzC$g^QS&63~76_-`0dxA36F(dE(=Vb+dZM{a z-a6`LZazLffD!PG);2JziN-3Al3D$`>y4K!FbU>SH` z_73R3VQx=TPph-->40V=Bj>`a}Sc3ie?*s2mjEC zG@504N-s~l7ExLF(oc&~nF5Sdm~x_g+sI{*Z7C&vHF<5(=qD@hN`lu|qooT9dmF=FQoR~A6tw&66qSvhRUJ#6X39wy76AmCcH z5oV=OV=@U`k0r;{DRh+w`>mhjarQSilt3qsTs^FfxKmnQ=1BYNPvc~Oaf+vi?Xix{ zxtLd)rr2gVfBDPyts$G;jbB-1{_$Q8jIbVaH0lhKvdv*DGSNmHL5-ncpKMCSu6v!> z$>HM|>P9>D^L&t90&H6?|2F-F&}~t4!KkdRk(-86?`0{FqKwq(qd+WqN|FbJuBr)P zT!0;h@hF}mIU!EK$n37c)xc|v)sqr<@l37J6;{qIa}U?Tfmvr$fM(^^ewmoCVM|as@|_1xVs3>_5HoFBZcmm_|bi zj+PnCz!Vy)3+;`kH$DvHSSOhWPfse(8z1viGkPg@XM7f2NorS2*A=}#8y|Nd@Ey@T zLS6=*MnjhIT1-coEn@C1y1h4ZYfmU{59d#s%i_a-C&d7Y^N+Qws3>JnP>=xuAa!2< z`e{squ{;zpeB#LC*Z=||l>W3%fOo%%=RO)20ET;^#-ps~aNRfBi+?>QT=i(-5xJv& zX0qou>OP9BGV<``JoxMpN)ewkX#(S{VQd6DDAFLOlt#keCKF03olxtLkL1ZMD#mN{ zV7H06D{4w)DnmQi^e<@`FO94$_-hrvlwqkMT{His;aH1kPNsdi^X`uUwDI1_16bVC! z)fi`uPSh3$*Mb=a*PYx!isqWz@Pziay7QlGx^<9-4iw&;s1d?WwxP)hE-D^->>nai zf-&mOVulNZ6-OuQ%Dex>3s-H$cQc386S4M>_r(_9qk#4I@8#S+Y`$w7QrBfFyDrF`D!N0=PoH zLyaI0wiUpMYq`>4Y3S)EJ(`=4@nY5BV;C z58Jf4D*(S?xN6U4Td0)M1w(%+x$_9fEMLi0+IRf9l;WsBRMoy%Jd-Ldl;1y zxR_JAzCPCq52~Z0L!u`vnT9`}%PS7D*p{f$wT!+zH$ zf|TdpGC7LjKr%%r<}=A^%@OM<5N5!PdP*}$)4nv998lcr>^GI1g;wsbXnbaWI_@-WKQ zzGHFGnKTxz%ew}xE&gaXm|#___A;n&7T9DjtF74EnRN_LPJkAK<{SW{$IqHe@N8($ zsr{v){P)qZOkIK2-k8&|iuQ`@>$ARf*vh36#nH=+UXn>1)n8O6c4O!pk{FE&8YWf5 zx_rw6ICXL)m+vFL?L%L%tEsHKw>9zDr0dYSM^(S2M)cwVgOXr$@*rN!f=6G>eJzTR z{C5R>%?s#xuO{sh6*bdb@q^w6Jr`_xa1%if(iz70|I2IT|50{e&<_o7rGvHNY?P_q zVjf6QRypIXpyQr2r{jd%+!}h6kA9f2!>FizDP3Grf5Xe0{83#!u|!ANE>@#x>d)Q5 zxrUzS_D5>-rLNYPd)7J?}gHa*Ae|;BD*B&b@ri_LnI8zrJwa z3e+cQcYUnz$qF*IOi41u`dAC)FAiUSJBHHP_I1)S5&1;Ad>V0CZG{TG&$E>lC3I z!-No|VB_TS`P!&uRMc=W8&9%&?dv7l{uo3_-023K%W4csUmL5D_%R;(pQ4L@KW8bi z#^~4>Kr2UxlsSUuI15JAKBU{!<+(klA$?FX23A)O|NQM`CXu%@^8md_+TmrK8|AjbAspRGMFfkb6*n zDn|~nVD9MZv|#XV1Zg*k21f}7Czs+eyJWf3+!;kw}fwbHet!NI496(%)v z2tj=o(E)EX7Lt1e{Z=%q$-jUZnTbF15D&ZxxM%>BhhH4*pFP)$8T^?Um~LHa0Ce`M z6w+?|_0?kceywC};t`o-NQNZXj5^9DHBc#oc*)$3&W>C^n4+U3@7s5}qRa&Z1?4%} zof4nUyiU4x{uTDmuft1i2BoB2!o^E6%ho}7!7=e=^OWi3vkh(82cdt4_`ZD=gMJn)TWiFnQx=KJx3oJ zw2{Ecz>e$V@WS{r-~ni|sx!?bd1vnz2ac*c(Bq7mVEqhYLyr}?BCRZ^pb7sF2LP>zris*_u!Ii(pWzeilD3mn(A3QM~ESns*_d297`fM8OY(S&Aa z^fYvf5eKsN18c6<4datbe3|ntXm*_W2f|UT>jg3^xmL(+9L2(4MEDZ{a-3ZzuQ|TR zpw$M+LVyTw9USe63KvydIo@2@pJ3V}B^#>w6B1T~NC(2R111audzr-x#v~IXhqoNr z<%yEN0QB#zEWUhC`ox+(PDKHh#;w^1cR=iire63UPHt~MkcI`59?e`1XJ?it(pLB& z)Vy#Uow5Q?;Cqw0h3~Yi|LsmXldus-m0wMb`ZNxSc|6{NekO=(j{=HrXQ*jG{#fhA zwK?byfF2l~`Q^zbCET+N@%yI$+((u#qh?V6!iHo4b88Ay&Hl9-#VOVnQt`p8heV9Y z?{M&eErAAe%y%)z^%?voWB+CA;3I0>q8ONxBF#xMQhdkos`+#4rj_s}Wp`2Yb`8<* z-DW@?4!7Z%l~9+6%de?f4y{uf=<}ErV(7D2*$~d1Kdf%D6Ao{Bp*6Tbe;I4ruk+4( zXXoT*ioT>+XONk{dXj~0f%I6waaS1g!t6p*gpo+QX~Zb4&){NS1X`%QSxx=JI(Bh) zErhydOL7`EC0kL%Y`-PRe|!1eW-nnVZR?u#_a_31J%BHv};om`|8fR7vI%UH*5G&aQi+$%|Y6N2--uJKF5!K|n~DqnsrI;(N1149^x1 z0H$~vZml(W+a9Glb~b%(S)$CeFxuVE1eLGS>o>YW>E>mr^GZQm^rvu_#k2NP6uO?K zYBIeQ8LIa`u&Q5BA_gQO$Bl;M<4CtxhPz&ziPAbPsz?Q0ElZgb!pH?f%dGd7U+ijO zhGI(^HUvE{{?s*c(!g%A>UDj*_B7q#|Jyam*s3+|7gr1A%&`_I{vP9!d&{+j{g=|R z{~97wo+mjv`2#zu;;P}_4=(uV+JCV<@XI64G~PE2Z>Mkiu)Y45;B@ozE>BLlp7{0F zJx1c5G^1Pa->C-Q44}jBZMV|h4K$AlC!4E3tUT#_BZ`T5r~@$KYe%R=@Z zoGWX5ah-3p#IN&*&n35COg_aNl5+3RKh4Vq+2451?48~(58MP=mtykG_LTG6pDHXtXv$J=ah55TbRD3l$ zGvAUqc>9~fbK~zTR9;e$+5JIe>dWI7!xuM}AO9CoU?8}=s@!=&%Koz_*DJSwz_lmJ>JpV62JfZdt-mG^)>zZ zeHnAbCfCYefy_egd_5037_xdMd zHiz#tyB99qAjI0vpK$-)-W&VV^}oG|=-wEsRPe#e>eD*C)`L2SwPq&_YB%Zz&NtNdk2ceiczID4b{oM4@S z`DJ$pVU+Dm+n2h>7A_SI>eea%9dA%l>i=Y7iv1BEo9^kM=MC)FDFgSPemKl;54;Lb zY|>Glxo*v7_7xg$gA0~FQcsy1*ULD0J+Sd1De{<6|F6s(P0iz1gWC;W2XNMT-tM1~ zV9Zk|T(EGL%yIKI$9vB9-`8LFWLhF{vB#TzQJrs?H-7j$b>o*1sega|2&VbRw;t9! zdcuB#$UOU+{M*yt*MD${?iH(Em#+N(7T1jX)gi$4cQ(VWGxyr1x1US?d}JYq`HP3i z+UrCV3R9(1?=LpY^tXx&jdi)7VE>~;vO9O@%^!#R{R=WbDzrrNd=>s=wjZ^Q%=6~2 zE>vB*fTum2w=O#7BXCcHcdS9}(a z&5w0xzu+ff_SGiq-xryqKVP2Ov{hrrR>8N;e-ppX>^zcvR72;qdtIKYQQn)z`69io zyNv?AR4`dx6A#yW5}J6v$#cSUS%+hvokX769Ns)<`HtB$+m=4AKA>MB_f8~S(b}4O z=FQ3z^%YFb)on?ykEWm4z3b24M_rr#tKC=la&La~{~z{$+t^>HD|#(%d}GefpMCE^ zWvbP@)Q|_M?|glv1(`j~9J6~4%@Ae%aXLS9#vOAmHD@dX_0g^oYdLthn)dI1U;P$% zzhHO2z0;vX0&;SB-4`A({P@MHxaMDNMTJBYbM3;bEeS`?yw=da-OJfrBPb!$AN(qHnpzfr`>k2sKSz$BYg@0qcW&6k&zK||zj5DKcLL_@5gi zKQ-0|6#Oll%E8?@f4%5G#zqdFFV*??-zI+LcPS_^VEQ}dye_Z}#_F+F=g`cv2S4!h z1os`kZ^qwyaz%64ZNcJeB1-=cW*u>Tk?`w5rt?{K)Q;foD5o>WlYXAiH7K2b(|N7$ znPQ=~z~c80UElikbbM~R_apBn|Mc~y4s8CB#)QfPS3wB z^Q%(-o^H7L!nZ;xdsZH~$?KN!we)r8`NwSiM;@8J4vd`E-^#gnq3Mph-V=0.20.0 -mcp>=1.0.0 diff --git a/tools/inference_builder/schemas/ARCHITECTURE.md b/tools/inference_builder/schemas/ARCHITECTURE.md deleted file mode 100644 index e823c64b..00000000 --- a/tools/inference_builder/schemas/ARCHITECTURE.md +++ /dev/null @@ -1,244 +0,0 @@ -# Schema Architecture - -This document describes the unified schema architecture for the Inference Builder. - -## Design Principles - -1. **DRY (Don't Repeat Yourself)**: Common structures are defined once in base schemas -2. **Composition over Inheritance**: Use JSON Schema's `allOf` to compose schemas -3. **Separation of Concerns**: Backend logic is separate from parameter validation -4. **Extensibility**: Easy to add new backends without duplicating code - -## Schema Hierarchy - -``` -┌─────────────────────────────────────────────────────────────┐ -│ config.schema.json │ -│ (Top-level configuration) │ -│ ┌───────────────────────────────────────────────────────┐ │ -│ │ - name, model_repo │ │ -│ │ - input[], output[] │ │ -│ │ - server (responders) │ │ -│ │ - models[] ←──────────────────────────────────┐ │ │ -│ │ - routes │ │ │ -│ └────────────────────────────────────────────────│─────┘ │ -└─────────────────────────────────────────────────────────────┘ - │ - ▼ - ┌────────────────────────────────────────┐ - │ common/base-model.schema.json │ - │ (Base Model Structure) │ - │ ┌──────────────────────────────────┐ │ - │ │ - name │ │ - │ │ - backend │ │ - │ │ - max_batch_size │ │ - │ │ - input[] │ │ - │ │ - output[] │ │ - │ │ - parameters (generic) │ │ - │ │ - preprocessors[] │ │ - │ │ - postprocessors[] │ │ - │ └──────────────────────────────────┘ │ - └────────────────────────────────────────┘ - │ - ┌───────────────┴───────────────┐ - │ allOf Composition │ - │ │ - ┌───────────▼──────────┐ ┌────────────▼───────────┐ - │ Backend Schemas │ │ Parameter Schemas │ - │ (backends/*.json) │ │ (parameters/*.json) │ - │ │ │ │ - │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ - │ │ deepstream.json ├─┼──────┼→│ deepstream-params │ │ - │ └──────────────────┘ │ │ └────────────────────┘ │ - │ │ │ │ - │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ - │ │ triton.json ├─┼──────┼→│ triton-params │ │ - │ └──────────────────┘ │ │ └────────────────────┘ │ - │ │ │ │ - │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ - │ │ vllm.json ├─┼──────┼→│ vllm-params │ │ - │ └──────────────────┘ │ │ └────────────────────┘ │ - │ │ │ │ - │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ - │ │ tensorrtllm.json ├─┼──────┼→│ tensorrtllm-params │ │ - │ └──────────────────┘ │ │ └────────────────────┘ │ - │ │ │ │ - │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ - │ │ polygraphy.json ├─┼──────┼→│ polygraphy-params │ │ - │ └──────────────────┘ │ │ └────────────────────┘ │ - │ │ │ │ - │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ - │ │ dummy.json ├─┼──────┼→│ dummy-params │ │ - │ └──────────────────┘ │ │ └────────────────────┘ │ - └──────────────────────┘ └────────────────────────┘ -``` - -## Schema Composition Example - -### DeepStream Backend - -The DeepStream backend schema is composed as follows: - -```json -{ - "allOf": [ - { - "$ref": "../common/base-model.schema.json" // Inherit common structure - }, - { - "properties": { - "backend": { - "enum": ["deepstream/nvinfer"] // Restrict backend type - }, - "parameters": { - "$ref": "parameters/deepstream-parameters.schema.json" // Specific params - } - } - } - ] -} -``` - -This composition means: -- ✅ The model **must have** all fields from `base-model.schema.json` (name, backend, input, output, etc.) -- ✅ The `backend` field **must be** `"deepstream/nvinfer"` -- ✅ The `parameters` field **must validate** against `deepstream-parameters.schema.json` - -## Benefits of This Architecture - -### 1. Maintainability -- **Single source of truth**: Common fields defined once in `base-model.schema.json` -- **Easy updates**: Change base schema → all backends updated -- **Clear ownership**: Parameters are isolated in their own files - -### 2. Consistency -- **Guaranteed structure**: All backends share the same base structure -- **Type safety**: Common types defined in `definitions.schema.json` -- **Validation rules**: Consistent validation across all backends - -### 3. Extensibility -- **Add new backend**: Create 2 files (backend schema + parameters) -- **No duplication**: Reuse base model schema via `allOf` -- **Clear pattern**: Follow existing backend schemas - -### 4. Developer Experience -- **Better IDE support**: $ref resolution provides autocomplete -- **Clear documentation**: Each parameter schema documents its options -- **Validation messages**: Precise error messages point to exact issues - -## Adding a New Backend - -To add a new backend (e.g., `onnxruntime`): - -1. **Create parameter schema**: `backends/parameters/onnxruntime-parameters.schema.json` - ```json - { - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/onnxruntime-parameters.schema.json", - "title": "ONNX Runtime Backend Parameters", - "type": "object", - "properties": { - "execution_providers": { - "type": "array", - "items": {"type": "string"} - }, - "graph_optimization_level": { - "type": "string", - "enum": ["basic", "extended", "all"] - } - } - } - ``` - -2. **Create backend schema**: `backends/onnxruntime.schema.json` - ```json - { - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/onnxruntime.schema.json", - "title": "ONNX Runtime Backend Configuration", - "allOf": [ - {"$ref": "../common/base-model.schema.json"}, - { - "properties": { - "backend": { - "const": "onnxruntime" - }, - "parameters": { - "$ref": "parameters/onnxruntime-parameters.schema.json" - } - } - } - ] - } - ``` - -3. **Update definitions**: Add `"onnxruntime"` to `common/definitions.schema.json#/definitions/backendTypes` - -4. **Update index**: Add entry to `index.json` - -That's it! No need to duplicate input/output/preprocessor definitions. - -## Schema References - -### Internal References (within a schema) -```json -"$ref": "#/definitions/tensorSpec" -``` - -### External References (to other schemas) -```json -"$ref": "../common/base-model.schema.json" -"$ref": "parameters/deepstream-parameters.schema.json" -"$ref": "definitions.schema.json#/definitions/dataTypes" -``` - -### GitHub URL References (for public access) -```json -"$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/config.schema.json" -``` - -## Validation Flow - -``` -User YAML Config - ↓ -config.schema.json (validates top-level) - ↓ -models[] → base-model.schema.json (validates common fields) - ↓ -backend type check → specific backend schema - ↓ -parameters validation → backend-specific parameter schema - ↓ -✓ Valid Configuration -``` - -## Testing Schemas - -### Using the validation script: -```bash -python schemas/validate_config.py builder/samples/vllm/vllm_cosmos.yaml -``` - -### Using Python directly: -```python -import json -import yaml -from jsonschema import validate - -with open('schemas/config.schema.json') as f: - schema = json.load(f) - -with open('builder/samples/vllm/vllm_cosmos.yaml') as f: - config = yaml.safe_load(f) - -validate(instance=config, schema=schema) -``` - -## Future Enhancements - -1. **Conditional validation**: Use `if/then/else` to validate parameters based on backend type -2. **oneOf for backend selection**: Automatically select parameter schema based on backend -3. **Custom formats**: Define custom string formats for paths, URIs, etc. -4. **Schema versioning**: Support multiple schema versions for backward compatibility - diff --git a/tools/inference_builder/schemas/README.md b/tools/inference_builder/schemas/README.md deleted file mode 100644 index c482ac1a..00000000 --- a/tools/inference_builder/schemas/README.md +++ /dev/null @@ -1,686 +0,0 @@ -# Inference Builder JSON Schemas - -This directory contains JSON Schema definitions for NVIDIA Inference Builder YAML configurations. These schemas provide validation, autocompletion, and documentation for creating inference pipeline configurations. - -## Overview - -The Inference Builder allows you to create inference pipelines with various backends such as DeepStream, TensorRT, Triton, TensorRT-LLM, vLLM, etc. These schemas help validate your configuration files and provide IDE support. - -## Schema Organization - -``` -schemas/ -├── config.schema.json # Main configuration schema -├── backends/ # Backend-specific schemas -│ ├── deepstream.schema.json # DeepStream backend -│ ├── triton.schema.json # Triton backend -│ ├── vllm.schema.json # vLLM backend -│ ├── tensorrtllm.schema.json # TensorRT-LLM backend -│ ├── polygraphy.schema.json # Polygraphy backend -│ ├── dummy.schema.json # Dummy backend -│ └── parameters/ # Backend-specific parameters -│ ├── deepstream-parameters.schema.json -│ ├── triton-parameters.schema.json -│ ├── vllm-parameters.schema.json -│ ├── tensorrtllm-parameters.schema.json -│ ├── polygraphy-parameters.schema.json -│ └── dummy-parameters.schema.json -├── common/ # Common definitions -│ ├── base-model.schema.json # Base model schema (shared structure) -│ ├── definitions.schema.json # Shared type definitions -│ ├── preprocessors.schema.json # Preprocessor schemas -│ └── postprocessors.schema.json # Postprocessor schemas -└── README.md # This file -``` - -### Schema Composition - -The schemas use JSON Schema's composition features for better maintainability: - -- **Base Model Schema** (`common/base-model.schema.json`): Defines the common structure shared by all backends (name, backend, input, output, max_batch_size, preprocessors, postprocessors) -- **Backend Schemas** (`backends/*.schema.json`): Extend the base model using `allOf` and specify which backend types are valid -- **Parameter Schemas** (`backends/parameters/*.schema.json`): Define backend-specific parameters with validation rules - -This approach: -- ✅ Eliminates duplication across backend schemas -- ✅ Ensures consistency in common fields -- ✅ Makes it easy to add new backends -- ✅ Provides clear validation for backend-specific options - -## Main Configuration Schema - -The main schema (`config.schema.json`) defines the structure of inference builder configuration files: - -### Required Fields - -- `name`: String identifier for the microservice -- `model_repo`: Path to the directory containing model files -- `models`: Array of model specifications (at least one required) - -### Optional Fields - -- `input`: Array of input tensor specifications (required when pipeline includes multiple models or when inputs use custom types) -- `output`: Array of output tensor specifications (required when pipeline includes multiple models or when outputs use custom types) -- `server`: Server configuration including responders (not required for serverless) -- `routes`: Route map for tensor flow between models (required for multi-model pipelines) -- `postprocessors`: Top-level postprocessors (for consolidating outputs from multiple models) - -### Example Configuration - -```yaml -name: "my_service" -model_repo: "/workspace/model-repo" - -input: - - name: "text" - data_type: TYPE_STRING - dims: [-1] - - name: "images" - data_type: TYPE_CUSTOM_IMAGE_BASE64 - dims: [-1] - optional: true - -output: - - name: "output" - data_type: TYPE_FP32 - dims: [-1, -1, -1] - -models: - - name: "my_model" - backend: "triton/tensorrt" - max_batch_size: 1 - input: - - name: "input0" - data_type: TYPE_FP32 - dims: [3, 768, 768] - output: - - name: "output0" - data_type: TYPE_FP32 - dims: [10, 768, 768] -``` - -## Backend-Specific Schemas - -### DeepStream Backend - -**Files**: -- Schema: `backends/deepstream.schema.json` -- Parameters: `backends/parameters/deepstream-parameters.schema.json` - -Used for DeepStream-based inference pipelines. - -**Backend Type**: `deepstream/nvinfer` - -**Parameters** (defined in `deepstream-parameters.schema.json`): -- `infer_config_path`: Array of paths to DeepStream nvinfer runtime configuration files (required). The configuration file typically accompanies the ONNX model from NGC as a YAML or TXT file - always prefer using this provided configuration when available. If no configuration file is provided with the model, one must be created based on the model architecture, inference implementation details, and post-processing approaches. -- `preprocess_config_path`: Array of paths to nvdspreprocess configuration files (optional) -- `batch_timeout`: Timeout in microseconds for batching multiple inputs -- `inference_timeout`: Inference timeout in seconds -- `tracker_config`: Configuration for object tracking -- `msgbroker_config`: Configuration for message broker integration -- `render_config`: Configuration for rendering and display -- `perf_config`: Performance monitoring configuration -- `kitti_output_path`: Paths for KITTI format output dumps - -**Example**: -```yaml -models: - - name: tao - backend: deepstream/nvinfer - max_batch_size: 1 - parameters: - infer_config_path: - - nvdsinfer_config.yaml - preprocess_config_path: - - nvdspreprocess_config.yaml - batch_timeout: -1 - inference_timeout: 5 -``` - -### Triton Backend - -**Files**: -- Schema: `backends/triton.schema.json` -- Parameters: `backends/parameters/triton-parameters.schema.json` - -Used for Triton Inference Server with various frameworks. - -**Backend Types**: -- `triton/python` -- `triton/tensorrt` -- `triton/onnx` -- `triton/pytorch` - -**Parameters**: -Triton backend parameters are intentionally open and backend-specific. All parameters are converted to `string_value` in the generated `config.pbtxt` file as defined in Triton's ModelConfig protobuf schema ([model_config.proto](https://github.com/triton-inference-server/common/blob/main/protobuf/model_config.proto)). - -Common parameters include: -- `FORCE_CPU_ONLY_INPUT_TENSORS`: Controls whether input tensors are kept on GPU or copied to CPU (Triton Python backend). Set to `"no"` to keep tensors on GPU for better performance. -- Backend-specific parameters (e.g., TensorRT engine paths, ONNX model paths, etc.) - -For complete parameter documentation, refer to the [Triton Model Configuration documentation](https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/user_guide/model_configuration.html). - -**Example**: -```yaml -models: - - name: visual_changenet - backend: "triton/tensorrt" - max_batch_size: 1 - parameters: - FORCE_CPU_ONLY_INPUT_TENSORS: "no" -``` - -### vLLM Backend - -**File**: `backends/vllm.schema.json` - -Used for vLLM-based large language model inference. - -**Backend Type**: `vllm` - -**Key Parameters**: -- `max_num_tokens`: Maximum number of tokens -- `async_mode`: Enable asynchronous mode -- `gpu_memory_utilization`: GPU memory utilization (0.0 to 1.0) -- `tensor_parallel_size`: Number of GPUs for tensor parallelism - -**Example**: -```yaml -models: - - name: "Cosmos" - backend: "vllm" - parameters: - max_num_tokens: 19200 - async_mode: true -``` - -### TensorRT-LLM Backend - -**File**: `backends/tensorrtllm.schema.json` - -Used for TensorRT-LLM inference with optional PyTorch fallback. - -**Backend Types**: -- `tensorrtllm` -- `tensorrtllm/pytorch` - -**Key Parameters**: -- `max_num_tokens`: Maximum number of tokens -- `kv_cache_config`: KV cache configuration - - `enable_block_reuse`: Enable KV cache block reuse -- `decoding_config`: Decoding configuration - -**Example**: -```yaml -models: - - name: "Qwen2.5-VL" - backend: "tensorrtllm/pytorch" - parameters: - max_num_tokens: 19200 - kv_cache_config: - enable_block_reuse: false -``` - -### Polygraphy Backend - -**File**: `backends/polygraphy.schema.json` - -Used for TensorRT inference via Polygraphy. - -**Backend Type**: `polygraphy` - -**Key Parameters**: -- `tensorrt_engine`: Path to TensorRT engine file (required) -- `precision`: Inference precision (fp32, fp16, int8) - -**Example**: -```yaml -models: - - name: nvclip_text - backend: "polygraphy" - max_batch_size: 64 - parameters: - tensorrt_engine: "model.plan" -``` - -## Data Types - -The following data types are supported: - -### Numeric Types -- `TYPE_BOOL`, `TYPE_UINT8`, `TYPE_UINT16`, `TYPE_UINT32`, `TYPE_UINT64` -- `TYPE_INT8`, `TYPE_INT16`, `TYPE_INT32`, `TYPE_INT64` -- `TYPE_FP16`, `TYPE_FP32`, `TYPE_FP64` - -### Basic Types -- `TYPE_STRING`: String data - -### Custom Types -- `TYPE_CUSTOM_IMAGE_BASE64`: Base64-encoded JPEG/PNG image data as a data URI string. Each element must follow the format `data:image/{format};base64,{payload}` where `{format}` is `jpeg`, `jpg`, or `png`, and `{payload}` is the base64-encoded image bytes. This type is mapped to `TYPE_STRING` in Triton and arrives as a list of strings. When used as a top-level input, it creates an `ImageInputDataFlow` that parses the data URI prefix to determine the image format, decodes the base64 payload into raw bytes, and decodes the image using a hardware-accelerated DeepStream pipeline (`nvjpegdec`/`pngdec`) to produce RGB `uint8` image tensors in HWC layout `[H, W, 3]` on GPU at the original image resolution. These decoded tensors are then passed to downstream models. When used for an output, image tensors are encoded into a base64 string. -- `TYPE_CUSTOM_IMAGE_ASSETS`: Image asset identifiers (file paths, URLs, or asset IDs) referring to JPEG/PNG images. When used as a top-level input, it creates an `ImageInputDataFlow` that loads and decodes the referenced images into image tensors before they are passed to downstream models. -- `TYPE_CUSTOM_LONG_VIDEO_ASSETS`: Video asset identifiers for **long videos and live streams requiring temporal chunking**. Particularly suitable for: (1) **live streams** such as RTSP feeds that need continuous processing in chunks, (2) long video files that should be split into temporal segments, (3) scenarios where frames need to be delivered in multiple batches over time. Supports file paths, URLs, RTSP streams, or asset IDs, with query parameters such as `?frames=N&interval=INTERVAL_NSEC&chunks=M&scale=WIDTHxHEIGHT`. When used as a top-level input, it creates a `VideoInputDataFlow` that asynchronously extracts frames in chunks, with each chunk containing N frames sampled at the specified interval. Results are delivered via a queue as they become available, enabling streaming processing. Processing always starts from the beginning of the video or live stream. Use `TYPE_CUSTOM_VIDEO_CHUNK_ASSETS` instead for short videos that fit in a single batch without temporal chunking, or when you need to specify a start position. Supported query parameters: - - `frames`: (Required) Number of frames to sample per chunk. - - `interval`: (Required) Time interval between frames in nanoseconds (e.g., `100*1e6` for 100ms between frames). - - `chunks`: (Optional) Maximum number of chunks to yield before stopping. Useful for RTSP streams that don't have a natural end-of-stream. - - `scale`: (Optional) Target resolution for frame scaling in format `WIDTHxHEIGHT` (e.g., `scale=640x360`). When specified, all extracted frames are resized to the target resolution. This is useful for reducing memory usage and inference time when processing high-resolution video streams. All assets in a batch must use the same scale value. -- `TYPE_CUSTOM_VIDEO_CHUNK_ASSETS`: Video asset identifiers for **short videos requiring simple frame sampling without temporal chunking**. Use this type when: - 1. Processing short video clips that fit in memory as a single batch - 2. Extracting a fixed number of frames from a specific video segment - 3. Simple uniform frame sampling from a video duration is needed - - Supports file paths, URLs, or asset IDs, with query parameters such as `?frames=N&start=START_NSEC&duration=DURATION_NSEC`. When used as a top-level input, it creates a `VideoFrameSamplingDataFlow` that asynchronously extracts exactly N frames evenly distributed over the specified duration (interval is automatically calculated as duration/frames), decodes them, and produces a single frame batch delivered via queue. The result is one batch containing all requested frames. For long videos or live streams requiring temporal chunking and streaming delivery of multiple batches over time, use `TYPE_CUSTOM_LONG_VIDEO_ASSETS` instead. Supported query parameters: - - `frames`: (Required) Number of frames to sample. - - `start`: (Optional) Start timestamp in nanoseconds (default 0). - - `duration`: (Optional) Duration to sample from in nanoseconds (defaults to entire video). -- `TYPE_CUSTOM_BINARY_BASE64`: Base64-encoded binary data. For inputs, the strings are automatically decoded into uint8 tensors before being passed downstream. For outputs, binary tensors are base64-encoded into strings. -- `TYPE_CUSTOM_LIST`: Converts the input values into a list, which implies explicit batching of the input data. Use this for non-DS inputs that need list conversion (e.g., video URLs for VLM models). -- `TYPE_CUSTOM_DS_MEDIA_URL`: DeepStream media URL input. A string URL (file path or remote URL) pointing to an image or video for DeepStream pipeline processing. Unlike `TYPE_CUSTOM_LIST`, this type follows the implicit batch path and is recognized by the DeepStream backend as a media source. Must be paired with a `TYPE_CUSTOM_DS_MIME` input. -- `TYPE_CUSTOM_VLM_INPUT`: Vision-Language Model input in dictionary form, passed through to downstream models as-is. -- `TYPE_CUSTOM_OBJECT`: Generic custom object type for complex structured data. - -### DeepStream-Specific Types - -#### TYPE_CUSTOM_DS_IMAGE -DeepStream custom type for image buffers, usable as both input and output. - -**As Input:** A 1-D uint8 tensor (or list of tensors) containing encoded JPEG/PNG image bytes that can be passed directly into DeepStream backends without additional decoding in the Python runtime. **This input must be defined in the model configuration to enable the image decoder in the DeepStream pipeline.** - -**As Output:** Extracts the decoded image frames from the DeepStream pipeline and returns them as RGB uint8 image tensors in HWC (Height, Width, Channels) layout. Each tensor has shape `[H, W, 3]` where Channels is 3 (R, G, B), representing the decoded frame at its processed resolution. - -**Example Output Usage:** -```yaml -output: - - name: "decoded_frames" - data_type: TYPE_CUSTOM_DS_IMAGE - dims: [-1, -1, 3] -``` - -#### TYPE_CUSTOM_DS_METADATA -DeepStream custom type for metadata output, containing per-frame detection, classification, and segmentation results. The output is returned as a **dictionary** with the following structure (defined in `definitions/deepstreamMetadata`): - -**Output Structure:** -```python -{ - 'shape': [height, width], # Image dimensions in pixels - 'bboxes': [[left, top, right, bottom], ...], # Bounding boxes for detected objects - 'probs': [0.95, 0.87, ...], # Confidence scores (0.0-1.0) - 'labels': [["car"], ["person"], ...], # Classification labels (multi-label support) - 'seg_maps': [array([[...]]), ...], # Segmentation maps (2D arrays) - 'objects': [1, 2, 3, ...], # Tracking IDs (when tracker enabled) - 'timestamp': 1234567890 # Buffer PTS in nanoseconds -} -``` - -**Field Details:** -- **`shape`**: Array of 2 integers `[height, width]` representing frame dimensions -- **`bboxes`**: Array of bounding boxes, each with 4 integers `[left, top, right, bottom]` in pixel coordinates -- **`probs`**: Array of confidence scores (floats between 0.0 and 1.0) -- **`labels`**: Array of arrays of label strings, enabling multi-label classification (e.g., object type and attributes) -- **`seg_maps`**: Array of 2D segmentation maps for semantic/instance segmentation (numpy arrays or lists) -- **`objects`**: Array of tracking IDs (integers) assigned by DeepStream tracker (populated only when tracker is enabled) -- **`timestamp`**: Buffer presentation timestamp in nanoseconds for temporal synchronization - -**Important**: This type requires a low-level C++ postprocessor library (e.g., `libnvds_infercustomparser_tao.so`) to be available and copied into the container image. The library can be obtained from: -1. DeepStream SDK built-in parsers -2. TAO model parsers from https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git -3. Custom user-implemented parsers - -Without such a library, use regular tensor output types (`TYPE_FP32`, etc.) with Python postprocessors instead. - -**Example Usage in Response Templates:** -```yaml -responses: - InferenceResponse: > - { - "data": [ - {% for item in response.output %} { - "shape": {{item['shape']}}, - "bboxes": {{item['bboxes']}}, - "probs": {{item['probs']}}, - "labels": {{item['labels']|tojson}}, - "masks": {{item['seg_maps']}}, - "timestamp": {{item['timestamp']}} - } {% if not loop.last %}, {% endif %} {% endfor %} - ] - } -``` - -#### TYPE_CUSTOM_DS_MIME -DeepStream custom type for MIME type string (for example, `image/jpeg` or `image/png`) describing the associated DeepStream image or media buffers. Required alongside `TYPE_CUSTOM_DS_IMAGE` or `TYPE_CUSTOM_DS_MEDIA_URL` inputs so the DeepStream pipeline can select the appropriate decoder. - -#### TYPE_CUSTOM_DS_SOURCE_CONFIG -DeepStream custom type for path to a YAML source configuration file. When used as a model input, consider using it when sources such as live streams are dynamically added and removed. - -## Preprocessors and Postprocessors - -Processors transform data at different stages of the inference pipeline. Preprocessors operate before model inference, while postprocessors operate after. - -**Base Schema**: `common/base-processor.schema.json` -**Preprocessor Schema**: `common/preprocessors.schema.json` -**Postprocessor Schema**: `common/postprocessors.schema.json` - -### Data Flow and Processor Interface - -Processors follow a standard interface pattern where data flows through dictionaries: - -**Input Flow**: -1. Upstream data (from model outputs, top-level inputs, or previous processors) is provided as a dictionary -2. The processor's `input` field specifies keys to extract from this dictionary, in order -3. Extracted values are passed as positional arguments to the processor's `__call__` method - -**Output Flow**: -1. The processor's `__call__` method returns a tuple -2. The tuple length must match the length of the `output` field -3. Returned values are mapped to output names to form a dictionary for downstream consumption - -**Example Flow**: -```python -# Upstream data dictionary -upstream = { - 'image': , - 'text': , - 'metadata': -} - -# Processor configuration -processor = { - 'input': ['text', 'image'], # Extract in this order - 'output': ['tokens', 'pixels'] # Map results to these names -} - -# Processor invocation -result = processor.__call__(upstream['text'], upstream['image']) -# result = (, ) - -# Downstream receives -downstream = { - 'tokens': , - 'pixels': -} -``` - -### Preprocessors - -**File**: `common/preprocessors.schema.json` - -Preprocessors transform input data before model inference. They typically handle tasks like: -- Image normalization and resizing -- Text tokenization -- Data format conversions -- Feature extraction - -**Required Fields**: -- `kind`: Processor type (`"custom"` or `"builtin"`) -- `name`: Unique identifier for the processor; should match the `name` attribute defined within the processor class -- `input`: Array of input tensor names (extracted from upstream data) -- `output`: Array of output tensor names (mapped to returned tuple) -- `config`: Optional processor-specific configuration - -**Example**: -```yaml -preprocessors: - - kind: "custom" - name: "image-normalizer" - input: ["raw_image"] # Extract 'raw_image' from upstream - output: ["normalized_image"] # Return maps to 'normalized_image' - config: - mean: [0.485, 0.456, 0.406] - std: [0.229, 0.224, 0.225] -``` - -**Corresponding Python Implementation**: -```python -class ImageNormalizer: - name = "image-normalizer" - - def __init__(self, config): - self.mean = config['mean'] - self.std = config['std'] - - def __call__(self, raw_image): - # Process the input - normalized = (raw_image - self.mean) / self.std - # Return tuple matching output length - return (normalized,) -``` - -### Postprocessors - -**File**: `common/postprocessors.schema.json` - -Postprocessors transform model outputs after inference. They typically handle tasks like: -- Output decoding -- Masking and filtering -- Embedding normalization -- Result formatting - -**Required Fields**: Same as preprocessors - -**Example**: -```yaml -postprocessors: - - kind: "custom" - name: "detection-decoder" - input: ["boxes", "scores", "classes"] # Extract from model outputs - output: ["detections"] # Return as single output - config: - confidence_threshold: 0.5 - max_detections: 100 -``` - -**Corresponding Python Implementation**: -```python -class DetectionDecoder: - name = "detection-decoder" - - def __init__(self, config): - self.threshold = config['confidence_threshold'] - self.max_detections = config['max_detections'] - - def __call__(self, boxes, scores, classes): - # Process three inputs - mask = scores > self.threshold - filtered_boxes = boxes[mask][:self.max_detections] - filtered_scores = scores[mask][:self.max_detections] - filtered_classes = classes[mask][:self.max_detections] - - detections = { - 'boxes': filtered_boxes, - 'scores': filtered_scores, - 'classes': filtered_classes - } - # Return tuple with one element - return (detections,) -``` - -### Multi-Input, Multi-Output Example - -Processors can handle multiple inputs and outputs: - -```yaml -preprocessors: - - kind: "custom" - name: "dual-stream-processor" - input: ["reference_image", "test_image", "threshold"] - output: ["ref_features", "test_features"] - config: - feature_dim: 256 -``` - -```python -class DualStreamProcessor: - name = "dual-stream-processor" - - def __init__(self, config): - self.feature_dim = config['feature_dim'] - - def __call__(self, reference_image, test_image, threshold): - # Process inputs (receives 3 arguments in order) - ref_features = self.extract_features(reference_image) - test_features = self.extract_features(test_image) - - # Apply threshold - ref_features = ref_features * (ref_features > threshold) - test_features = test_features * (test_features > threshold) - - # Return tuple matching output length (2 elements) - return (ref_features, test_features) -``` - -## Server Configuration - -The server section defines how the inference service handles requests and responses. - -### Responders - -Responders map API operations to request/response transformations using Jinja2 templates. - -**Available Responder Keys** (must match templates in `templates/responder/`): - -| Responder | Description | Input | Output | -|-----------|-------------|-------|--------| -| `infer` | Primary inference endpoint. Handles model inference requests. Supports streaming responses with `Accept: application/x-ndjson` header. | Top-level pipeline inputs (as defined in config `input` section) | Top-level pipeline outputs (as defined in config `output` section) | -| `add_file` | File upload responder. Adds files to the asset store for later processing. | Multipart file upload (file object with `filename` and `content_type`) | Asset dict: `id`, `file_name`, `content_type`, `created_at` | -| `del_file` | File deletion responder. Removes files from the asset store. | `asset_id` (string, from path parameter) | `status` (boolean, deletion success) | -| `list_files` | File listing responder. Returns a list of files in the asset store. | None | `assets` (array of asset objects with `id`, `file_name`, `content_type`, `created_at`) | -| `add_live_stream` | Live stream addition responder. Registers a new RTSP or video stream for processing. | `url` (string, required), `description` (string, optional), `username` (string, optional), `password` (string, optional) | Asset dict: `id`, `url`, `description`, `created_at` | -| `del_live_stream` | Live stream removal responder. Stops and removes a registered live stream. | `asset_id` (string, from path parameter) | `status` (boolean, deletion success) | -| `list_live_streams` | Live stream listing responder. Returns all registered live streams. | None | `assets` (array of stream asset objects with `id`, `url`, `description`, `created_at`) | -| `healthy_ready` | Health check responder. Reports service health and readiness status. No request/response template mapping needed. | None | HTTP 200 with "Ready" or HTTP 503 with "Service Unavailable" | - -**Request/Response Template Mapping**: - -- **`requests`**: Jinja2 templates to map HTTP request body to responder inputs. Keys are **OpenAPI request schema/class names** (e.g., `InferenceRequest`, `AddLiveStreamRequest`), values are Jinja2 templates that transform the incoming `request` object into a JSON structure matching the responder's expected inputs. - -- **`responses`**: Jinja2 templates to map responder outputs to HTTP response body. Keys are **OpenAPI response schema/class names** (e.g., `InferenceResponse`, `AddFileResponse`), values are Jinja2 templates that transform the `response` object from the responder into the desired HTTP response JSON structure. - -**Common Operations** (values for the `operation` field): -- `inference`: General inference operation -- `create_chat_completion_v1_chat_completions_post`: Chat completion for LLMs -- `create_embedding`: Embedding generation -- `add_media_file`, `delete_media_file`, `list_media_files`: Media file management -- `add_live_stream`, `delete_live_stream`, `list_live_streams`: Live stream management -- `health_ready_v1_health_ready_get`: Health check - -See [RESPONDERS.md](RESPONDERS.md) for complete documentation. - -**Example**: -```yaml -server: - responders: - infer: - operation: inference - requests: - InferenceRequest: > - { - "images": [{{ request.input[0]|tojson }}] - } - responses: - InferenceResponse: > - { - "data": {{ response.output|tojson }}, - "model": "my-model" - } -``` - -## Routes - -Routes define the flow of tensors between models in multi-model pipelines. - -**Format**: `: : :` - -- Source/destination can be model names or `:` for top-level -- Tensor list is optional: `["tensor1", "tensor2"]` - -**Example**: -```yaml -routes: - ':["reference_image", "test_image"]': 'visual_changenet' - 'visual_changenet:["output_final"]': ':["output"]' -``` - -## Using the Schemas - -### In VS Code - -Add to your workspace settings (`.vscode/settings.json`): - -```json -{ - "yaml.schemas": { - "./schemas/config.schema.json": "*.yaml" - } -} -``` - -Or use the GitHub URL for the latest schema: - -```json -{ - "yaml.schemas": { - "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/config.schema.json": "*.yaml" - } -} -``` - -### With YAML Language Server - -Add to your `.yaml-language-server.json`: - -```json -{ - "yaml.schemas": { - "file:///path/to/schemas/config.schema.json": "/*.yaml" - } -} -``` - -### Validation with Python - -```python -import json -import yaml -from jsonschema import validate - -# Load schema -with open('schemas/config.schema.json') as f: - schema = json.load(f) - -# Load and validate config -with open('config.yaml') as f: - config = yaml.safe_load(f) - -validate(instance=config, schema=schema) -``` - -## Examples - -See the `builder/samples/` directory for complete examples of configurations for different backends: - -- `builder/samples/dummy/dummy.yaml` - Dummy backend example -- `builder/samples/vllm/vllm_cosmos.yaml` - vLLM backend example -- `builder/samples/qwen/trtllm_qwen.yaml` - TensorRT-LLM backend example -- `builder/samples/tao/ds_tao.yaml` - DeepStream backend example -- `builder/samples/changenet/trt_changenet.yaml` - Triton/TensorRT backend example -- `builder/samples/nvclip/tensorrt_nvclip.yaml` - Polygraphy backend example - -## References - -- [Inference Builder Documentation](../README.md) -- [JSON Schema Specification](https://json-schema.org/) -- [YAML Language Server](https://github.com/redhat-developer/yaml-language-server) - -## Contributing - -When adding new backends or features: - -1. Update the appropriate schema files -2. Add examples to this README -3. Test with sample configurations -4. Update the `common/definitions.schema.json` if adding new types - -## License - -SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -SPDX-License-Identifier: Apache-2.0 - diff --git a/tools/inference_builder/schemas/RESPONDERS.md b/tools/inference_builder/schemas/RESPONDERS.md deleted file mode 100644 index a8a61b8b..00000000 --- a/tools/inference_builder/schemas/RESPONDERS.md +++ /dev/null @@ -1,230 +0,0 @@ -# Available Responders - -This document lists the available responder templates that can be used in the `server.responders` section of the configuration. - -## Overview - -Responders map API endpoints to their implementation. Each responder corresponds to a template file in `templates/responder/` and handles a specific operation. - -## Available Responder Keys - -The following keys are valid for use in `server.responders`: - -| Key | Template File | Operation | Description | -|-----|--------------|-----------|-------------| -| `infer` | `infer.jinja.py` | `inference` or chat completion | Main inference endpoint for model predictions | -| `add_file` | `add_file.jinja.py` | `add_media_file` | Upload and register a media file as an asset | -| `del_file` | `del_file.jinja.py` | `delete_media_file` | Delete a registered media file | -| `list_files` | `list_files.jinja.py` | `list_media_files` | List all registered media files | -| `add_live_stream` | `add_live_stream.jinja.py` | `add_live_stream` | Add a live stream source | -| `del_live_stream` | `del_live_stream.jinja.py` | `delete_live_stream` | Delete a live stream source | -| `list_live_streams` | `list_live_streams.jinja.py` | `list_live_streams` | List all registered live streams | -| `healthy_ready` | `healthy_ready.jinja.py` | `health_ready_v1_health_ready_get` | Health check endpoint | - -## Schema Validation - -The schema restricts responder keys to the above list using `propertyNames.enum`. Invalid responder keys will cause validation to fail: - -```yaml -server: - responders: - infer: # ✅ Valid - operation: inference - - custom_op: # ❌ Error: invalid responder key - operation: custom -``` - -**Error message**: `Property name must be one of: infer, add_file, del_file, list_files, add_live_stream, del_live_stream, list_live_streams, healthy_ready` - -## Usage Examples - -### Basic Inference - -```yaml -server: - responders: - infer: - operation: inference - requests: - InferenceRequest: > - { - "images": {{ request.input|tojson }} - } - responses: - InferenceResponse: > - { - "data": {{ response.output|tojson }}, - "model": "my-model" - } -``` - -### LLM Chat Completion - -```yaml -server: - responders: - infer: - operation: create_chat_completion_v1_chat_completions_post - requests: - NIMLLMChatCompletionRequest: > - { - "messages": {{ request.messages|tojson }}, - "max_tokens": {{ request.max_tokens }} - } - responses: - NIMLLMChatCompletionResponse: > - { - "id": "{{ request._id }}", - "choices": [...] - } -``` - -### File Management - -```yaml -server: - responders: - add_file: - operation: add_media_file - responses: - AddFileResponse: > - { - "data": { - "id": {{response.id|tojson}}, - "path": {{response.path|tojson}}, - "contentType": {{response.mime_type|tojson}} - } - } - - list_files: - operation: list_media_files - responses: - ListFilesResponse: > - { - "data": [ - {% for item in response.assets %} - { - "id": {{item.id|tojson}}, - "path": {{item.path|tojson}} - } - {% if not loop.last %}, {% endif %} - {% endfor %} - ] - } -``` - -### Health Check - -```yaml -server: - responders: - healthy_ready: - operation: health_ready_v1_health_ready_get -``` - -## Responder Configuration - -Each responder has the following structure: - -| Field | Required | Type | Description | -|-------|----------|------|-------------| -| `operation` | ✅ Yes | string | Name of the operation (must match OpenAPI spec) | -| `requests` | ❌ No | object | Request transformation templates (Jinja2) | -| `responses` | ❌ No | object | Response transformation templates (Jinja2) | - -### Request Templates - -Transform incoming API requests to the internal inference format: - -```yaml -requests: - RequestTypeName: > - { - "field1": {{ request.some_field|tojson }}, - "field2": "{{ request.another_field }}" - } -``` - -- Keys can be any string (typically match OpenAPI schema names) -- Values are Jinja2 templates -- Access request data via `request.*` variables - -### Response Templates - -Transform internal inference results to API responses: - -```yaml -responses: - ResponseTypeName: > - { - "result": {{ response.output|tojson }}, - "metadata": { - "model": "my-model" - } - } -``` - -- Keys can be any string (typically match OpenAPI schema names) -- Values are Jinja2 templates -- Access response data via `response.*` variables - -## Common Operations - -### Inference Operations - -- `inference` - General inference endpoint -- `create_chat_completion_v1_chat_completions_post` - LLM chat completion - -### Media File Operations - -- `add_media_file` - Upload media file -- `delete_media_file` - Delete media file -- `list_media_files` - List media files - -### Live Stream Operations - -- `add_live_stream` - Add live stream -- `delete_live_stream` - Delete live stream -- `list_live_streams` - List live streams - -### System Operations - -- `health_ready_v1_health_ready_get` - Health check - -## Template Implementation - -Responder templates are located in `templates/responder/`. Each template: - -1. **Receives** the processed request data -2. **Calls** the inference pipeline -3. **Returns** the formatted response - -Templates use Jinja2 syntax and have access to: -- `request` - Incoming request data -- `response` - Inference pipeline output -- Various helper filters (e.g., `tojson`, `tojinja`) - -## Adding Custom Responders - -To add a new responder: - -1. Create template file: `templates/responder/my_responder.jinja.py` -2. Implement the responder logic -3. Add `"my_responder"` to the enum in: - - `schemas/config.schema.json` (propertyNames.enum) - - `schemas/common/definitions.schema.json` (responderNames) -4. Update this documentation - -## Related Documentation - -- [Usage Guide](../../doc/usage.md) - Server configuration details -- [Architecture](../ARCHITECTURE.md) - How responders fit into the system -- [OpenAPI Specification](../../builder/samples/*/openapi.yaml) - API definitions - -## References - -- Templates: `templates/responder/*.jinja.py` -- Schema: `schemas/config.schema.json#/definitions/serverConfig` -- Common Definitions: `schemas/common/definitions.schema.json#/definitions/responderNames` - diff --git a/tools/inference_builder/schemas/backends/deepstream.schema.json b/tools/inference_builder/schemas/backends/deepstream.schema.json deleted file mode 100644 index 920b5464..00000000 --- a/tools/inference_builder/schemas/backends/deepstream.schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/deepstream.schema.json", - "title": "DeepStream Backend Configuration", - "description": "Schema for DeepStream backend model configuration", - "allOf": [ - { - "$ref": "../common/base-model.schema.json" - }, - { - "properties": { - "backend": { - "type": "string", - "enum": ["deepstream/nvinfer", "deepstream/nvinferserver"], - "description": "DeepStream backend type" - }, - "parameters": { - "$ref": "parameters/deepstream-parameters.schema.json" - } - } - } - ], - "examples": [ - { - "name": "tao", - "backend": "deepstream/nvinfer", - "max_batch_size": 1, - "parameters": { - "infer_config_path": ["nvdsinfer_config.yaml"] - }, - "input": [ - { - "name": "image", - "data_type": "TYPE_CUSTOM_DS_IMAGE", - "dims": [-1, -1, 3] - } - ], - "output": [ - { - "name": "output", - "data_type": "TYPE_CUSTOM_DS_METADATA", - "dims": [-1] - } - ] - } - ] -} diff --git a/tools/inference_builder/schemas/backends/dummy.schema.json b/tools/inference_builder/schemas/backends/dummy.schema.json deleted file mode 100644 index 8b35c6df..00000000 --- a/tools/inference_builder/schemas/backends/dummy.schema.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/dummy.schema.json", - "title": "Dummy Backend Configuration", - "description": "Schema for dummy backend model configuration (testing)", - "allOf": [ - { - "$ref": "../common/base-model.schema.json" - }, - { - "properties": { - "backend": { - "type": "string", - "const": "dummy", - "description": "Dummy backend for testing purposes" - }, - "parameters": { - "$ref": "parameters/dummy-parameters.schema.json" - } - } - } - ], - "examples": [ - { - "name": "dummy", - "backend": "dummy", - "max_batch_size": 1, - "parameters": {}, - "input": [ - { - "name": "images", - "data_type": "TYPE_FP32", - "dims": [3, 768, 768] - } - ], - "output": [ - { - "name": "output", - "data_type": "TYPE_FP32", - "dims": [10, 10] - } - ] - } - ] -} diff --git a/tools/inference_builder/schemas/backends/parameters/deepstream-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/deepstream-parameters.schema.json deleted file mode 100644 index 07f6a276..00000000 --- a/tools/inference_builder/schemas/backends/parameters/deepstream-parameters.schema.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/deepstream-parameters.schema.json", - "title": "DeepStream Backend Parameters", - "description": "Parameter schema for DeepStream backend", - "type": "object", - "required": ["infer_config_path"], - "properties": { - "infer_config_path": { - "type": "array", - "description": "Paths (inside the model repository) to DeepStream nvinfer runtime configuration files (for example, nvdsinfer_config.yaml). These files are used by the DeepStream nvinfer plugin at runtime. **Creating or locating config files:** (1) The configuration file typically accompanies the ONNX model from the remote model repository (NGC) as a YAML or TXT file containing all required inference parameters - always prefer using this provided configuration when available. (2) If no configuration file is provided with the model, one must be created based on the model architecture, inference implementation details, and post-processing approaches specific to the model. (3) The config file must be copied into the model repository before deployment. Refer to https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvinfer.html#gst-nvinfer-file-configuration-specifications for the complete configuration specification.", - "items": { - "type": "string" - } - }, - "preprocess_config_path": { - "type": "array", - "description": "Paths (inside the model repository) to DeepStream nvdspreprocess runtime configuration files (for example, nvdspreprocess_config*.yaml). These files define preprocessing operations that run before inference and are required when non-image tensors must be injected into the pipeline. They must already be copied into the model repository before deployment. Refer to https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdspreprocess.html for more details.", - "items": { - "type": "string" - } - }, - "batch_timeout": { - "type": "integer", - "minimum": -1, - "description": "Timeout in microseconds for batching multiple inputs. Set to -1 to wait infinitely for batch formation. Default is 1000 * max_batch_size microseconds." - }, - "inference_timeout": { - "type": "integer", - "minimum": 0, - "description": "Inference timeout in seconds, absence of this field means no timeout is enforced" - }, - "tracker_config": { - "type": "object", - "description": "Configuration for object tracking, absence of this field means no tracking is required", - "required": ["ll_lib_file", "ll_config_file"], - "properties": { - "ll_lib_file": { - "type": "string", - "description": "Path to the low-level tracker library file" - }, - "ll_config_file": { - "type": "string", - "description": "Path to the low-level tracker configuration file" - }, - "width": { - "type": "integer", - "minimum": 1, - "description": "Width of the tracker processing frame", - "default": 1920 - }, - "height": { - "type": "integer", - "minimum": 1, - "description": "Height of the tracker processing frame", - "default": 1088 - }, - "display_tracking_id": { - "type": "boolean", - "description": "Whether to display tracking IDs in the output", - "default": false - } - }, - "additionalProperties": false - }, - "msgbroker_config": { - "type": "object", - "description": "Configuration for message broker integration, absence of this field means no message broker is required", - "required": ["msgbroker_proto_lib_path", "msgbroker_conn_str", "msgbroker_topic", "msgconv_config_path"], - "properties": { - "msgbroker_proto_lib_path": { - "type": "string", - "description": "Path to the message broker protocol library" - }, - "msgbroker_conn_str": { - "type": "string", - "description": "Connection string for the message broker (e.g., 'localhost;9092' for Kafka)" - }, - "msgbroker_topic": { - "type": "string", - "description": "Topic name for publishing messages" - }, - "msgconv_config_path": { - "type": "string", - "description": "Path to the message conversion configuration file, refer to https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmsgconv.html for more details" - }, - "msgconv_payload_type": { - "type": "integer", - "enum": [0, 1, 2], - "description": "Payload type for message conversion (0=DeepStream JSON, 1=DeepStream Minimal JSON, 2=DeepStream Protobuf)" - }, - "msgconv_msg2p_new_api": { - "type": "boolean", - "description": "Use new API which supports publishing multiple payloads using NvDsFrameMeta", - "default": false - }, - "msgconv_frame_interval": { - "type": "integer", - "minimum": 1, - "description": "Frame interval at which payload is generated (every Nth frame)", - "default": 1 - }, - "msgconv_msg2p_lib": { - "type": "string", - "description": "Path to the message converter library" - } - }, - "additionalProperties": false - }, - "render_config": { - "type": "object", - "description": "Configuration for rendering and display", - "properties": { - "enable_display": { - "type": "boolean", - "description": "Enable on-screen display", - "default": false - }, - "enable_osd": { - "type": "boolean", - "description": "Enable on-screen display overlays (bounding boxes, labels, etc.)", - "default": false - }, - "enable_stream": { - "type": "boolean", - "description": "Enable RTSP streaming output", - "default": false - }, - "rtsp_mount_point": { - "type": "string", - "description": "RTSP mount point path (e.g., '/ds_app'), not required if enable_stream is false", - "default": "/ds-test" - }, - "rtsp_port": { - "type": "integer", - "minimum": 1, - "maximum": 65535, - "description": "RTSP server port number, not required if enable_stream is false", - "default": 8554 - } - }, - "additionalProperties": false - }, - "perf_config": { - "type": "object", - "description": "Performance monitoring configuration", - "properties": { - "enable_fps_logs": { - "type": "boolean", - "description": "Enable FPS (frames per second) logging", - "default": false - }, - "enable_latency_logs": { - "type": "boolean", - "description": "Enable latency logging", - "default": false - } - }, - "additionalProperties": false - }, - "kitti_output_path": { - "type": "object", - "description": "Paths for KITTI format output dumps", - "properties": { - "infer": { - "type": "string", - "description": "Path for inference KITTI output" - }, - "tracker": { - "type": "string", - "description": "Path for tracker KITTI output" - } - }, - "additionalProperties": false - }, - "analytics_config": { - "type": "object", - "description": "Configuration for nvdsanalytics (ROI, line-crossing, overcrowding, direction). Absence means no analytics. Typically used after tracker. Refer to https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvdsanalytics.html", - "required": ["config_file_path"], - "properties": { - "config_file_path": { - "type": "string", - "description": "Path to the analytics configuration file (YAML or TXT). Path is relative to model repository unless absolute." - }, - "gpu_id": { - "type": "integer", - "minimum": 0, - "description": "GPU device id for nvdsanalytics", - "default": 0 - } - }, - "additionalProperties": false - }, - "resize_video": { - "type": "array", - "description": "Target resolution for input stream resizing in format [height, width]. When specified, the input stream will be resized to these dimensions before processing. When tracker is being enabled, it requires a specific resolution consistent with the tracker config. In such cases, the resize_video configuration is required.", - "items": { - "type": "integer", - "minimum": 1 - }, - "minItems": 2, - "maxItems": 2 - } - }, - "additionalProperties": false -} - diff --git a/tools/inference_builder/schemas/backends/parameters/dummy-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/dummy-parameters.schema.json deleted file mode 100644 index ebd75184..00000000 --- a/tools/inference_builder/schemas/backends/parameters/dummy-parameters.schema.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/dummy-parameters.schema.json", - "title": "Dummy Backend Parameters", - "description": "Parameter schema for dummy backend (testing)", - "type": "object", - "properties": {}, - "additionalProperties": true -} - diff --git a/tools/inference_builder/schemas/backends/parameters/polygraphy-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/polygraphy-parameters.schema.json deleted file mode 100644 index e8e432f7..00000000 --- a/tools/inference_builder/schemas/backends/parameters/polygraphy-parameters.schema.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/polygraphy-parameters.schema.json", - "title": "Polygraphy Backend Parameters", - "description": "Parameter schema for Polygraphy (TensorRT) backend", - "type": "object", - "required": ["tensorrt_engine"], - "properties": { - "tensorrt_engine": { - "type": "string", - "description": "Path to TensorRT engine file (typically model.plan) relative to the model home directory (typically folder named after model name under model repository)" - } - }, - "additionalProperties": false -} - diff --git a/tools/inference_builder/schemas/backends/parameters/pytorch-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/pytorch-parameters.schema.json deleted file mode 100644 index 1bd61ce1..00000000 --- a/tools/inference_builder/schemas/backends/parameters/pytorch-parameters.schema.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/pytorch-parameters.schema.json", - "title": "PyTorch Backend Parameters", - "description": "Parameter schema for PyTorch backend (Huggingface Transformers)", - "type": "object", - "properties": {}, - "additionalProperties": true -} - diff --git a/tools/inference_builder/schemas/backends/parameters/tensorrtllm-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/tensorrtllm-parameters.schema.json deleted file mode 100644 index 7718a901..00000000 --- a/tools/inference_builder/schemas/backends/parameters/tensorrtllm-parameters.schema.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/tensorrtllm-parameters.schema.json", - "title": "TensorRT-LLM Backend Parameters", - "description": "Parameter schema for TensorRT-LLM backend", - "type": "object", - "properties": {}, - "additionalProperties": true -} - diff --git a/tools/inference_builder/schemas/backends/parameters/triton-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/triton-parameters.schema.json deleted file mode 100644 index e774bd62..00000000 --- a/tools/inference_builder/schemas/backends/parameters/triton-parameters.schema.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/triton-parameters.schema.json", - "title": "Triton Backend Parameters", - "description": "Parameter schema for Triton Inference Server backend. Parameters are backend-specific and defined as map in model_config.proto (https://github.com/triton-inference-server/common/blob/main/protobuf/model_config.proto). All parameter values are converted to string_value in the generated config.pbtxt. Refer to Triton documentation for backend-specific parameters: https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/user_guide/model_configuration.html", - "type": "object", - "properties": {}, - "additionalProperties": true -} - diff --git a/tools/inference_builder/schemas/backends/parameters/vllm-parameters.schema.json b/tools/inference_builder/schemas/backends/parameters/vllm-parameters.schema.json deleted file mode 100644 index 6e5c21b4..00000000 --- a/tools/inference_builder/schemas/backends/parameters/vllm-parameters.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/parameters/vllm-parameters.schema.json", - "title": "vLLM Backend Parameters", - "description": "Parameter schema for vLLM backend", - "type": "object", - "properties": { - "max_num_tokens": { - "type": "integer", - "minimum": 1, - "description": "Maximum number of tokens" - }, - "async_mode": { - "type": "boolean", - "description": "Enable asynchronous mode" - }, - "dtype": { - "type": "string", - "enum": ["auto", "half", "float16", "bfloat16", "float", "float32"], - "description": "Data type for model weights and activations" - }, - "gpu_memory_utilization": { - "type": "number", - "minimum": 0.0, - "maximum": 1.0, - "description": "GPU memory utilization (0.0 to 1.0)" - }, - "max_model_len": { - "type": "integer", - "minimum": 1, - "description": "Maximum model context length" - }, - "tensor_parallel_size": { - "type": "integer", - "minimum": 1, - "description": "Number of GPUs to use for tensor parallelism" - }, - "pipeline_parallel_size": { - "type": "integer", - "minimum": 1, - "description": "Number of pipeline stages" - }, - "trust_remote_code": { - "type": "boolean", - "description": "Trust remote code from model hub" - }, - "max_num_seqs": { - "type": "integer", - "minimum": 1, - "description": "Maximum number of sequences per iteration" - } - }, - "additionalProperties": false -} - diff --git a/tools/inference_builder/schemas/backends/polygraphy.schema.json b/tools/inference_builder/schemas/backends/polygraphy.schema.json deleted file mode 100644 index 6f2d3346..00000000 --- a/tools/inference_builder/schemas/backends/polygraphy.schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/polygraphy.schema.json", - "title": "Polygraphy Backend Configuration", - "description": "Schema for Polygraphy (TensorRT) backend model configuration", - "allOf": [ - { - "$ref": "../common/base-model.schema.json" - }, - { - "properties": { - "backend": { - "type": "string", - "const": "polygraphy", - "description": "Polygraphy backend for TensorRT inference" - }, - "parameters": { - "$ref": "parameters/polygraphy-parameters.schema.json" - } - } - } - ], - "examples": [ - { - "name": "nvclip_text", - "backend": "polygraphy", - "max_batch_size": 64, - "parameters": { - "tensorrt_engine": "model.plan" - }, - "input": [ - { - "name": "TEXT", - "data_type": "TYPE_INT64", - "dims": [-1, -1] - } - ], - "output": [ - { - "name": "LOGITS_PER_TEXT", - "data_type": "TYPE_FP32", - "dims": [-1, -1] - } - ] - } - ] -} diff --git a/tools/inference_builder/schemas/backends/pytorch.schema.json b/tools/inference_builder/schemas/backends/pytorch.schema.json deleted file mode 100644 index e19995b9..00000000 --- a/tools/inference_builder/schemas/backends/pytorch.schema.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/pytorch.schema.json", - "title": "PyTorch Backend Configuration", - "description": "Schema for PyTorch backend model configuration (Huggingface Transformers)", - "allOf": [ - { - "$ref": "../common/base-model.schema.json" - }, - { - "properties": { - "backend": { - "type": "string", - "const": "pytorch", - "description": "PyTorch backend for Huggingface Transformers models" - }, - "parameters": { - "$ref": "parameters/pytorch-parameters.schema.json" - } - } - } - ], - "examples": [ - { - "name": "llama_model", - "backend": "pytorch", - "parameters": { - "model_name_or_path": "meta-llama/Llama-2-7b-hf", - "device": "cuda", - "torch_dtype": "float16", - "trust_remote_code": true - }, - "input": [ - { - "name": "input_ids", - "data_type": "TYPE_INT64", - "dims": [-1, -1] - } - ], - "output": [ - { - "name": "logits", - "data_type": "TYPE_FP32", - "dims": [-1, -1, -1] - } - ] - } - ] -} - diff --git a/tools/inference_builder/schemas/backends/tensorrtllm.schema.json b/tools/inference_builder/schemas/backends/tensorrtllm.schema.json deleted file mode 100644 index 5441c014..00000000 --- a/tools/inference_builder/schemas/backends/tensorrtllm.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/tensorrtllm.schema.json", - "title": "TensorRT-LLM Backend Configuration", - "description": "Schema for TensorRT-LLM backend model configuration", - "allOf": [ - { - "$ref": "../common/base-model.schema.json" - }, - { - "properties": { - "backend": { - "type": "string", - "enum": ["tensorrtllm", "tensorrtllm/pytorch"], - "description": "TensorRT-LLM backend type with optional PyTorch fallback" - }, - "parameters": { - "$ref": "parameters/tensorrtllm-parameters.schema.json" - } - } - } - ], - "examples": [ - { - "name": "Qwen2.5-VL", - "backend": "tensorrtllm/pytorch", - "parameters": { - "max_num_tokens": 19200, - "kv_cache_config": { - "enable_block_reuse": false - } - }, - "input": [ - { - "name": "inputs", - "data_type": "TYPE_CUSTOM_VLM_INPUT", - "dims": [-1] - } - ], - "output": [ - { - "name": "outputs", - "data_type": "TYPE_STRING", - "dims": [-1] - } - ] - } - ] -} diff --git a/tools/inference_builder/schemas/backends/triton.schema.json b/tools/inference_builder/schemas/backends/triton.schema.json deleted file mode 100644 index 6825348e..00000000 --- a/tools/inference_builder/schemas/backends/triton.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/triton.schema.json", - "title": "Triton Backend Configuration", - "description": "Schema for Triton Inference Server backend model configuration", - "allOf": [ - { - "$ref": "../common/base-model.schema.json" - }, - { - "properties": { - "backend": { - "type": "string", - "enum": [ - "triton/python", - "triton/tensorrt", - "triton/onnx", - "triton/pytorch", - "triton/tensorflow", - "triton/python/tensorrtllm" - ], - "description": "Triton backend type with specific framework" - }, - "parameters": { - "$ref": "parameters/triton-parameters.schema.json" - } - } - } - ], - "examples": [ - { - "name": "visual_changenet", - "backend": "triton/tensorrt", - "max_batch_size": 1, - "parameters": { - "FORCE_CPU_ONLY_INPUT_TENSORS": "no" - }, - "input": [ - { - "name": "input0", - "data_type": "TYPE_FP32", - "dims": [3, 768, 768] - } - ], - "output": [ - { - "name": "output_final", - "data_type": "TYPE_FP32", - "dims": [10, 768, 768] - } - ] - } - ] -} diff --git a/tools/inference_builder/schemas/backends/vllm.schema.json b/tools/inference_builder/schemas/backends/vllm.schema.json deleted file mode 100644 index 10219ac8..00000000 --- a/tools/inference_builder/schemas/backends/vllm.schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/backends/vllm.schema.json", - "title": "vLLM Backend Configuration", - "description": "Schema for vLLM backend model configuration", - "allOf": [ - { - "$ref": "../common/base-model.schema.json" - }, - { - "properties": { - "backend": { - "type": "string", - "const": "vllm", - "description": "vLLM backend for large language models" - }, - "parameters": { - "$ref": "parameters/vllm-parameters.schema.json" - } - } - } - ], - "examples": [ - { - "name": "Cosmos", - "backend": "vllm", - "parameters": { - "max_num_tokens": 19200, - "async_mode": true - }, - "input": [ - { - "name": "inputs", - "data_type": "TYPE_CUSTOM_VLM_INPUT", - "dims": [-1] - } - ], - "output": [ - { - "name": "outputs", - "data_type": "TYPE_STRING", - "dims": [-1] - } - ] - } - ] -} diff --git a/tools/inference_builder/schemas/common/base-model.schema.json b/tools/inference_builder/schemas/common/base-model.schema.json deleted file mode 100644 index da387ae7..00000000 --- a/tools/inference_builder/schemas/common/base-model.schema.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/base-model.schema.json", - "title": "Base Model Configuration", - "description": "Common base schema for all model configurations", - "type": "object", - "required": ["name", "backend"], - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "Model name identifier" - }, - "backend": { - "$ref": "definitions.schema.json#/definitions/backendTypes" - }, - "max_batch_size": { - "oneOf": [ - { - "type": "integer", - "minimum": 1 - }, - { - "type": "string", - "pattern": "^\\$[A-Z_]+\\|[0-9]+$", - "description": "Environment variable with default value (e.g., $MAX_BATCH_SIZE|1)" - } - ], - "description": "Maximum batch size for the model", - "default": 1 - }, - "input": { - "type": "array", - "description": "Model input specification", - "items": { - "$ref": "#/definitions/tensorSpec" - } - }, - "output": { - "type": "array", - "description": "Model output specification", - "items": { - "$ref": "#/definitions/tensorSpec" - } - }, - "parameters": { - "type": "object", - "description": "Backend-specific parameters (see backend schemas for details)", - "additionalProperties": true - }, - "preprocessors": { - "type": "array", - "description": "Ordered list of preprocessors applied to this model's inputs before inference. Each preprocessor transforms or derives tensors from existing ones (for example, tokenization or image normalization) and is executed in sequence. Typically used to adapt data from top-level inputs or previous models into the format and shape expected by this model's inputs.", - "items": { - "$ref": "preprocessors.schema.json" - } - }, - "postprocessors": { - "type": "array", - "description": "Ordered list of postprocessors applied to this model's outputs after inference. Each postprocessor can transform, filter, or aggregate output tensors (for example, masking, decoding, or embedding processing) and is executed in sequence. Commonly used to convert raw model outputs into the tensors or objects expected by downstream models or top-level outputs.", - "items": { - "$ref": "postprocessors.schema.json" - } - } - }, - "definitions": { - "tensorSpec": { - "type": "object", - "required": ["name", "data_type", "dims"], - "additionalProperties": true, - "properties": { - "name": { - "type": "string", - "description": "Name of the tensor" - }, - "data_type": { - "$ref": "definitions.schema.json#/definitions/dataTypes" - }, - "dims": { - "type": "array", - "description": "Dimensions of the tensor (-1 for dynamic dimensions)", - "items": { - "type": "integer" - }, - "minItems": 1 - }, - "optional": { - "type": "boolean", - "description": "Whether this tensor is optional", - "default": false - } - } - } - } -} - diff --git a/tools/inference_builder/schemas/common/base-processor.schema.json b/tools/inference_builder/schemas/common/base-processor.schema.json deleted file mode 100644 index d1b5901c..00000000 --- a/tools/inference_builder/schemas/common/base-processor.schema.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/base-processor.schema.json", - "title": "Base Processor Configuration", - "description": "Common base schema for preprocessors and postprocessors", - "type": "object", - "required": ["kind", "name", "input", "output"], - "properties": { - "kind": { - "type": "string", - "enum": ["custom", "builtin"], - "description": "Type of processor: 'custom' for user-defined processors, 'builtin' for system-provided processors" - }, - "name": { - "type": "string", - "description": "Processor identifier used to locate the processor implementation" - }, - "input": { - "type": "array", - "description": "Ordered list of input tensor names that the processor's __call__ method receives as positional arguments. These names are used to extract values from the upstream data dictionary. For example, if the upstream provides {'image': img_data, 'text': txt_data, 'metadata': meta} and input is ['text', 'image'], the processor's __call__ method will be invoked as __call__(txt_data, img_data) - extracting values in the order specified by the input list.", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "output": { - "type": "array", - "description": "Ordered list of output tensor names corresponding to the tuple returned by the processor's __call__ method. The processor must return a tuple with length equal to the output array length. The returned values are mapped to output names to form a dictionary for downstream consumption. For example, if output is ['embeddings', 'attention_mask'] and __call__ returns (emb_tensor, mask_tensor), the downstream receives {'embeddings': emb_tensor, 'attention_mask': mask_tensor}.", - "items": { - "type": "string" - }, - "minItems": 1 - } - } -} - diff --git a/tools/inference_builder/schemas/common/definitions.schema.json b/tools/inference_builder/schemas/common/definitions.schema.json deleted file mode 100644 index 5f84b8be..00000000 --- a/tools/inference_builder/schemas/common/definitions.schema.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/definitions.schema.json", - "title": "Common Definitions", - "description": "Common definitions and reusable schemas for Inference Builder", - "definitions": { - "dataTypes": { - "type": "string", - "enum": [ - "TYPE_BOOL", - "TYPE_UINT8", - "TYPE_UINT16", - "TYPE_UINT32", - "TYPE_UINT64", - "TYPE_INT8", - "TYPE_INT16", - "TYPE_INT32", - "TYPE_INT64", - "TYPE_FP16", - "TYPE_FP32", - "TYPE_FP64", - "TYPE_STRING", - "TYPE_CUSTOM_IMAGE_BASE64", - "TYPE_CUSTOM_IMAGE_ASSETS", - "TYPE_CUSTOM_LONG_VIDEO_ASSETS", - "TYPE_CUSTOM_VIDEO_CHUNK_ASSETS", - "TYPE_CUSTOM_BINARY_BASE64", - "TYPE_CUSTOM_LIST", - "TYPE_CUSTOM_DS_MEDIA_URL", - "TYPE_CUSTOM_VLM_INPUT", - "TYPE_CUSTOM_OBJECT", - "TYPE_CUSTOM_DS_IMAGE", - "TYPE_CUSTOM_DS_METADATA", - "TYPE_CUSTOM_DS_MIME", - "TYPE_CUSTOM_DS_SOURCE_CONFIG" - ], - "description": "Supported data types for tensors" - }, - "backendTypes": { - "type": "string", - "enum": [ - "dummy", - "vllm", - "triton/python", - "triton/tensorrt", - "triton/onnx", - "triton/pytorch", - "triton/tensorflow", - "tensorrtllm", - "tensorrtllm/pytorch", - "deepstream/nvinfer", - "deepstream/nvinferserver", - "polygraphy", - "pytorch" - ], - "description": "Supported backend types" - }, - "operationTypes": { - "type": "string", - "enum": [ - "inference", - "create_chat_completion_v1_chat_completions_post", - "create_embedding", - "add_media_file", - "delete_media_file", - "list_media_files", - "add_live_stream", - "delete_live_stream", - "list_live_streams", - "health_ready_v1_health_ready_get" - ], - "description": "Supported operation types for responders" - }, - "processorKinds": { - "type": "string", - "enum": ["custom", "builtin"], - "description": "Types of processors" - }, - "commonProcessorNames": { - "type": "string", - "enum": [ - "dummy-preprocessor", - "dummy-tokenizer", - "qwen-vl-loader", - "qwen-vl-image-loader", - "qwen-vl-video-loader", - "openclip-tokenizer", - "nvclip-vision-preprocessor", - "nvclip-postprocessor", - "changenet-normalizer", - "changenet-masking" - ], - "description": "Common processor names" - }, - "responderNames": { - "type": "string", - "enum": [ - "infer", - "add_file", - "del_file", - "list_files", - "add_live_stream", - "del_live_stream", - "list_live_streams", - "healthy_ready" - ], - "description": "Available responder template names (must match templates/responder/*.jinja.py)" - } - } -} - diff --git a/tools/inference_builder/schemas/common/postprocessors.schema.json b/tools/inference_builder/schemas/common/postprocessors.schema.json deleted file mode 100644 index ed101e8f..00000000 --- a/tools/inference_builder/schemas/common/postprocessors.schema.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/postprocessors.schema.json", - "title": "Postprocessor Configurations", - "description": "Schema for custom postprocessor configurations", - "type": "object", - "$ref": "#/definitions/customPostprocessor", - "definitions": { - "customPostprocessor": { - "allOf": [ - { - "$ref": "base-processor.schema.json" - }, - { - "properties": { - "config": { - "type": "object", - "description": "Custom configuration for the postprocessor", - "additionalProperties": true - } - } - } - ] - } - } -} - diff --git a/tools/inference_builder/schemas/common/preprocessors.schema.json b/tools/inference_builder/schemas/common/preprocessors.schema.json deleted file mode 100644 index 0736d352..00000000 --- a/tools/inference_builder/schemas/common/preprocessors.schema.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/common/preprocessors.schema.json", - "title": "Preprocessor Configurations", - "description": "Schema for custom preprocessor configurations", - "type": "object", - "$ref": "#/definitions/customPreprocessor", - "definitions": { - "customPreprocessor": { - "allOf": [ - { - "$ref": "base-processor.schema.json" - }, - { - "properties": { - "config": { - "type": "object", - "description": "Custom configuration for the preprocessor", - "additionalProperties": true - } - } - } - ] - } - } -} - diff --git a/tools/inference_builder/schemas/config.schema.json b/tools/inference_builder/schemas/config.schema.json deleted file mode 100644 index 2653b5dd..00000000 --- a/tools/inference_builder/schemas/config.schema.json +++ /dev/null @@ -1,371 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/config.schema.json", - "title": "Inference Builder Configuration", - "description": "Schema for NVIDIA Inference Builder configuration files", - "type": "object", - "required": ["name", "model_repo", "models"], - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "Unique project name. Used as the directory name for generated code and as the package name when bundling artifacts.", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$" - }, - "model_repo": { - "type": "string", - "description": "Root path to the directory containing the model files" - }, - "input": { - "type": "array", - "description": "Top level inference input specification. Required when pipeline includes multiple models or when inputs use custom types requiring preprocessing.", - "minItems": 1, - "items": { - "$ref": "#/definitions/tensorSpec" - } - }, - "output": { - "type": "array", - "description": "Top level inference output specification. Required when pipeline includes multiple models or when outputs use custom types requiring postprocessing.", - "minItems": 1, - "items": { - "$ref": "#/definitions/tensorSpec" - } - }, - "server": { - "$ref": "#/definitions/serverConfig", - "description": "Server configuration mapping endpoints to their implementation templates." - }, - "models": { - "type": "array", - "description": "List of model specifications for inference", - "minItems": 1, - "items": { - "$ref": "#/definitions/modelSpec" - } - }, - "routes": { - "type": "object", - "description": "Data-flow map between top-level inputs, models, and top-level outputs.", - "additionalProperties": { - "type": "string" - } - }, - "postprocessors": { - "type": "array", - "description": "Top-level postprocessors. Required when pipeline includes multiple models and outputs need to be consolidated.", - "items": { - "$ref": "#/definitions/processor" - } - } - }, - "definitions": { - "tensorSpec": { - "type": "object", - "required": ["name", "data_type", "dims"], - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "Name of the tensor" - }, - "data_type": { - "description": "Data type of the tensor", - "oneOf": [ - { "const": "TYPE_BOOL", "description": "Tensor with bit type" }, - { "const": "TYPE_UINT8", "description": "Tensor with unsigned 8-bit integer type" }, - { "const": "TYPE_UINT16", "description": "Tensor with unsigned 16-bit integer type" }, - { "const": "TYPE_UINT32", "description": "Tensor with unsigned 32-bit integer type" }, - { "const": "TYPE_UINT64", "description": "Tensor with unsigned 64-bit integer type" }, - { "const": "TYPE_INT8", "description": "Tensor with signed 8-bit integer type" }, - { "const": "TYPE_INT16", "description": "Tensor with signed 16-bit integer type" }, - { "const": "TYPE_INT32", "description": "Tensor with signed 32-bit integer type" }, - { "const": "TYPE_INT64", "description": "Tensor with signed 64-bit integer type" }, - { "const": "TYPE_FP16", "description": "Tensor with 16-bit floating point (half precision) type" }, - { "const": "TYPE_FP32", "description": "Tensor with 32-bit floating point (single precision) type" }, - { "const": "TYPE_FP64", "description": "Tensor with 64-bit floating point (double precision) type" }, - { "const": "TYPE_STRING", "description": "Tensor with string type" }, - { "const": "TYPE_CUSTOM_IMAGE_BASE64", "description": "Base64-encoded JPEG/PNG image data as a data URI string. Each element must follow the format 'data:image/{format};base64,{payload}' where {format} is 'jpeg', 'jpg', or 'png', and {payload} is the base64-encoded image bytes. This type is mapped to TYPE_STRING in Triton and arrives as a list of strings. When used as a top-level input, an ImageInputDataFlow is created that (1) parses the data URI prefix to determine the image format, (2) decodes the base64 payload into raw bytes, and (3) decodes the image using a hardware-accelerated DeepStream pipeline (nvjpegdec/pngdec) to produce RGB uint8 image tensors in HWC layout [H, W, 3] on GPU at the original image resolution. These decoded tensors are then passed to downstream models." }, - { "const": "TYPE_CUSTOM_IMAGE_ASSETS", "description": "Image asset identifiers (file paths, URLs, or asset IDs) referring to JPEG/PNG images. When used as a top-level input, an ImageInputDataFlow will be created that loads and decodes the referenced images into image tensors before they are passed to the downstream models." }, - { "const": "TYPE_CUSTOM_LONG_VIDEO_ASSETS", "description": "Video asset identifiers for long videos and live streams requiring temporal chunking. Particularly suitable for: (1) live streams such as RTSP feeds that need continuous processing in chunks, (2) long video files that should be split into temporal segments, (3) scenarios where frames need to be delivered in multiple batches over time. Supports file paths, URLs, RTSP streams, or asset IDs, with required query parameters: ?frames=N (number of frames per chunk), &interval=INTERVAL_NSEC (time interval between frames in nanoseconds), and optional &chunks=M (maximum number of chunks to yield before stopping - useful for RTSP streams without natural end-of-stream), &scale=WIDTHxHEIGHT (target resolution for frame scaling, e.g., scale=640x360 - all assets in a batch must use the same scale value). When used as a top-level input, a VideoInputDataFlow will be created that asynchronously extracts frames in chunks, with each chunk containing N frames sampled at the specified interval. Results are delivered via a queue as they become available, enabling streaming processing. Processing always starts from the beginning of the video or live stream. For short videos that fit in a single batch without temporal chunking, or when you need to specify a start position, use TYPE_CUSTOM_VIDEO_CHUNK_ASSETS instead." }, - { "const": "TYPE_CUSTOM_VIDEO_CHUNK_ASSETS", "description": "Video asset identifiers for short videos requiring simple frame sampling without temporal chunking. Use this type when: (1) processing short video clips that fit in memory as a single batch, (2) extracting a fixed number of frames from a specific video segment, (3) simple uniform frame sampling from a video duration is needed. Supports file paths, URLs, or asset IDs, with required query parameter ?frames=N (number of frames to sample), and optional &start=START_NSEC (start time in nanoseconds, default 0), &duration=DURATION_NSEC (duration to sample from in nanoseconds, defaults to entire video). When used as a top-level input, a VideoFrameSamplingDataFlow will be created that asynchronously extracts exactly N frames evenly distributed over the specified duration (interval is automatically calculated as duration/frames), decodes them, and produces a single frame batch delivered via queue. The result is one batch containing all requested frames. For long videos or live streams requiring temporal chunking and streaming delivery of multiple batches over time, use TYPE_CUSTOM_LONG_VIDEO_ASSETS instead." }, - { "const": "TYPE_CUSTOM_BINARY_BASE64", "description": "Base64-encoded binary data. The input strings will be decoded into uint8 tensors before being passed to the downstream models." }, - { "const": "TYPE_CUSTOM_LIST", "description": "Converts the input values into a list, which implies explicit batching of the input data. Use for non-DS inputs that need list conversion (e.g., video URLs for VLM models)." }, - { "const": "TYPE_CUSTOM_DS_MEDIA_URL", "description": "DeepStream media URL input. A string URL (file path or remote URL) pointing to an image or video for DeepStream pipeline processing. Unlike TYPE_CUSTOM_LIST, this type follows the implicit batch path and is recognized by the DeepStream backend as a media source. Must be paired with a TYPE_CUSTOM_DS_MIME input." }, - { "const": "TYPE_CUSTOM_VLM_INPUT", "description": "Vision-Language Model input in dict format and will be passed to the downstream models as is." }, - { "const": "TYPE_CUSTOM_OBJECT", "description": "Custom object type for complex structured data" }, - { "const": "TYPE_CUSTOM_DS_IMAGE", "description": "DeepStream custom type for image buffers, usable as both input and output. As INPUT: a 1-D uint8 tensor (or list of tensors) containing encoded JPEG/PNG image bytes that can be passed directly into DeepStream backends without additional decoding in the Python runtime. This input must be defined in the model configuration to enable the image decoder in the DeepStream pipeline. As OUTPUT: extracts the decoded image frames from the DeepStream pipeline and returns them as RGB uint8 image tensors in HWC (Height, Width, Channels) layout, where Channels is 3 (R, G, B). Each tensor has shape [H, W, 3] representing the decoded frame at its processed resolution. Enable the image output only if raw image data is required for downstream models or postprocessors since it adds additional overhead to the pipeline." }, - { "const": "TYPE_CUSTOM_DS_METADATA", "description": "Deepstream custom type for metadata output. The output structure follows the deepstreamMetadata schema (see definitions/deepstreamMetadata), returned as a dictionary with flexible fields that vary based on the model type and parser implementation. This type requires a low-level C++ postprocessor library (e.g., libnvds_infercustomparser_tao.so) to be available and copied into the container image. The library can be obtained from: (1) TAO model parsers from https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps.git, or (2) custom user-implemented parsers. Without such a library, use regular tensor output types (TYPE_FP32, etc.) with Python postprocessors instead." }, - { "const": "TYPE_CUSTOM_DS_MIME", "description": "Deepstream custom type for MIME type string (for example, 'image/jpeg' or 'image/png') describing the associated DeepStream image or media buffers. Required alongside TYPE_CUSTOM_DS_IMAGE or TYPE_CUSTOM_DS_MEDIA_URL inputs so the DeepStream pipeline can select the appropriate decoder." }, - { "const": "TYPE_CUSTOM_DS_SOURCE_CONFIG", "description": "DeepStream custom type for path to a YAML source configuration file. Use this type when handling live cameras or video streams with DeepStream inference pipelines. The source config supports two deployment strategies: (1) STATIC CAMERA SETUP: For fixed scenarios with a known number of cameras (e.g., a retail store with 4 fixed cameras), set source-bin to 'nvurisrcbin' in the YAML config. All camera URIs are defined upfront in the config file and remain unchanged during runtime. This is simpler and recommended when camera topology is stable. (2) DYNAMIC CAMERA MANAGEMENT: For scenarios requiring runtime addition/removal of cameras (e.g., smart city deployments, fleet management), set source-bin to 'nvmultiurisrcbin' in the YAML config. This enables a built-in REST API server for dynamic stream management. Add streams via POST to /api/v1/stream/add with JSON payload containing camera_id, camera_url, and change='camera_add'. Remove streams via POST to /api/v1/stream/remove with change='camera_remove'. The REST API server endpoint (ip-address, port) is configured in the source config. Full API specification: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_plugin_gst-nvmultiurisrcbin.html. Choose nvurisrcbin for static setups to reduce complexity; choose nvmultiurisrcbin when dynamic stream management is a requirement." } - ] - }, - "dims": { - "type": "array", - "description": "Dimensions of the tensor (-1 for dynamic dimensions)", - "items": { - "type": "integer" - }, - "minItems": 1 - }, - "optional": { - "type": "boolean", - "description": "Whether this tensor is optional", - "default": false - } - } - }, - "serverConfig": { - "type": "object", - "additionalProperties": true, - "properties": { - "responders": { - "type": "object", - "description": "Map of responder configurations. Keys must match available responder templates.", - "additionalProperties": false, - "properties": { - "infer": { - "description": "Primary inference endpoint responder. Handles model inference requests. Input: mapped from HTTP request body to top-level pipeline inputs (as defined in config 'input' section). Output: top-level pipeline outputs (as defined in config 'output' section). Supports streaming responses with 'Accept: application/x-ndjson' header.", - "$ref": "#/definitions/responder" - }, - "add_file": { - "description": "File upload responder. Adds files to the asset store for later processing. Input: multipart file upload (file object with filename and content_type). Output: asset dict with fields 'id', 'file_name', 'content_type', 'created_at'.", - "$ref": "#/definitions/responder" - }, - "del_file": { - "description": "File deletion responder. Removes files from the asset store. Input: 'asset_id' (string, from path parameter). Output: 'status' (boolean, deletion success).", - "$ref": "#/definitions/responder" - }, - "list_files": { - "description": "File listing responder. Returns a list of files in the asset store. Input: none. Output: 'assets' (array of asset objects with 'id', 'file_name', 'content_type', 'created_at').", - "$ref": "#/definitions/responder" - }, - "add_live_stream": { - "description": "Live stream addition responder. Registers a new RTSP or video stream for processing. Input: 'url' (string, required), 'description' (string, optional), 'username' (string, optional), 'password' (string, optional). Output: asset dict with fields 'id', 'url', 'description', 'created_at'.", - "$ref": "#/definitions/responder" - }, - "del_live_stream": { - "description": "Live stream removal responder. Stops and removes a registered live stream. Input: 'asset_id' (string, from path parameter). Output: 'status' (boolean, deletion success).", - "$ref": "#/definitions/responder" - }, - "list_live_streams": { - "description": "Live stream listing responder. Returns all registered live streams. Input: none. Output: 'assets' (array of stream asset objects with 'id', 'url', 'description', 'created_at').", - "$ref": "#/definitions/responder" - }, - "healthy_ready": { - "description": "Health check responder. Reports service health and readiness status. Input: none. Output: HTTP 200 with 'Ready' or HTTP 503 with 'Service Unavailable'. No request/response template mapping needed.", - "$ref": "#/definitions/responder" - } - } - } - } - }, - "responder": { - "type": "object", - "required": ["operation"], - "additionalProperties": false, - "properties": { - "operation": { - "type": "string", - "description": "Name of the operation this responder handles, which is defined in the openapi specification." - }, - "requests": { - "type": "object", - "description": "Request templates (Jinja2 templates) to map HTTP request body to responder inputs. Keys are OpenAPI request schema/class names (e.g., 'InferenceRequest', 'AddLiveStreamRequest'), values are Jinja2 templates that transform the incoming 'request' object into a JSON structure matching the responder's expected inputs.", - "additionalProperties": { - "type": "string" - } - }, - "responses": { - "type": "object", - "description": "Response templates (Jinja2 templates) to map responder outputs to HTTP response body. Keys are OpenAPI response schema/class names (e.g., 'InferenceResponse', 'AddFileResponse'), values are Jinja2 templates that transform the 'response' object from the responder into the desired HTTP response JSON structure.", - "additionalProperties": { - "type": "string" - } - } - } - }, - "modelSpec": { - "type": "object", - "required": ["name", "backend", "input", "output"], - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "Model name identifier for locating the model in the model repository. Must be unique within the project." - }, - "backend": { - "type": "string", - "description": "Backend type for the model", - "enum": [ - "dummy", - "vllm", - "triton/python", - "triton/tensorrt", - "triton/onnx", - "triton/pytorch", - "triton/tensorflow", - "tensorrtllm", - "tensorrtllm/pytorch", - "deepstream/nvinfer", - "deepstream/nvinferserver", - "polygraphy", - "pytorch" - ] - }, - "max_batch_size": { - "oneOf": [ - { - "type": "integer", - "minimum": 1 - }, - { - "type": "string", - "pattern": "^\\$[A-Z_]+\\|[0-9]+$", - "description": "Environment variable with default value (e.g., $MAX_BATCH_SIZE|1)" - } - ], - "description": "Maximum batch size for the model", - "default": 1 - }, - "input": { - "type": "array", - "description": "Model input specification. Note on passthrough tensors: any keys present in the request after preprocessing that are NOT listed in this model's input spec are treated as passthrough (they are not sent to the backend). They are merged back into each backend result dict before this model's postprocessors run, so a model postprocessor can consume them by listing those names in its `input`. If you need passthrough values to propagate further downstream/top-level, ensure your postprocessor emits/mappings include them via configured outputs/routes.", - "items": { - "$ref": "#/definitions/tensorSpec" - } - }, - "output": { - "type": "array", - "description": "Model output specification", - "items": { - "$ref": "#/definitions/tensorSpec" - } - }, - "parameters": { - "type": "object", - "description": "Backend-specific parameters. The structure depends on the 'backend' field value. Read 'schema://index.json' to find the mapping from backend type to its parameter schema (e.g., backend 'vllm' -> 'schema://backends/parameters/vllm-parameters.schema.json').", - "additionalProperties": true - }, - "preprocessors": { - "type": "array", - "description": "Ordered list of preprocessors applied to this model's inputs before inference. Each processor transforms or derives tensors from existing ones (for example, tokenization or image normalization) and is executed in sequence. Typically used to adapt data from top-level inputs or previous models into the format and shape expected by this model's inputs.", - "items": { - "$ref": "#/definitions/processor" - } - }, - "postprocessors": { - "type": "array", - "description": "Ordered list of postprocessors applied to this model's outputs after inference, before passing results downstream. Each processor can transform, filter, or aggregate output tensors (for example, masking, decoding, or embedding processing) and is executed in sequence. This is also a primary extension point for adding custom logic, giving you room to expand pipeline functionality without changing the core runtime (e.g., adding new derived tensors, validation, formatting, or routing-friendly outputs).", - "items": { - "$ref": "#/definitions/processor" - } - } - } - }, - "processor": { - "type": "object", - "required": ["kind", "name", "input", "output"], - "additionalProperties": false, - "properties": { - "kind": { - "type": "string", - "description": "Type of processor", - "enum": ["custom", "auto"] - }, - "name": { - "type": "string", - "description": "Name/identifier of the processor" - }, - "input": { - "type": "array", - "description": "Input tensor names", - "items": { - "type": "string" - } - }, - "output": { - "type": "array", - "description": "Output tensor names", - "items": { - "type": "string" - } - }, - "config": { - "type": "object", - "description": "Processor-specific configuration", - "additionalProperties": true - } - } - }, - "deepstreamMetadata": { - "type": "object", - "description": "DeepStream metadata structure returned by TYPE_CUSTOM_DS_METADATA outputs. Contains per-frame detection, classification, and segmentation results extracted from DeepStream's internal metadata by C++ parser libraries. The structure is flexible and fields may be empty depending on the model type and parser implementation.", - "additionalProperties": true, - "properties": { - "shape": { - "type": "array", - "description": "Image or frame dimensions as [height, width] in pixels. Represents the spatial dimensions of the processed frame.", - "items": { - "type": "integer", - "minimum": 0 - }, - "minItems": 2, - "maxItems": 2 - }, - "bboxes": { - "type": "array", - "description": "Bounding boxes for detected objects in the format [left, top, right, bottom] coordinates. Each bounding box is an array of 4 integers representing pixel coordinates. Used by detection and instance segmentation models.", - "items": { - "type": "array", - "items": { - "type": "integer" - }, - "minItems": 4, - "maxItems": 4 - } - }, - "probs": { - "type": "array", - "description": "Confidence scores (probabilities) for each detected object or classification result. Values typically range from 0.0 to 1.0, with higher values indicating greater confidence.", - "items": { - "type": "number", - "minimum": 0.0, - "maximum": 1.0 - } - }, - "labels": { - "type": "array", - "description": "Classification labels as an array of arrays (list[list[str]]). The outer array has one entry per detected object (aligned by index with 'bboxes', 'probs', etc.). The inner array contains one or more label strings for that object, since a single object may have multiple labels (e.g., ['car', 'red', 'moving']). For single-label models, each inner array contains exactly one string (e.g., [['car'], ['person']]).", - "items": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "seg_maps": { - "type": "array", - "description": "Segmentation maps containing pixel-wise class predictions or instance masks. Each element is a 2D array (represented as nested arrays or numpy arrays) where values correspond to class IDs or instance IDs. Used by semantic segmentation and instance segmentation models.", - "items": { - "type": "array" - } - }, - "objects": { - "type": "array", - "description": "Object tracking IDs assigned by the DeepStream tracker. Each integer uniquely identifies a tracked object across frames. Only populated when tracker is enabled in the pipeline configuration.", - "items": { - "type": "integer", - "minimum": 0 - } - }, - "timestamp": { - "type": "integer", - "description": "Buffer presentation timestamp (PTS) in nanoseconds. Represents the temporal position of the frame in the video stream. Useful for synchronization and temporal analysis.", - "minimum": 0 - } - } - } - } -} - diff --git a/tools/inference_builder/schemas/index.json b/tools/inference_builder/schemas/index.json deleted file mode 100644 index e6975c3a..00000000 --- a/tools/inference_builder/schemas/index.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/NVIDIA-AI-IOT/inference_builder/main/schemas/index.json", - "title": "Inference Builder Schema Index", - "description": "Central index for all Inference Builder schemas", - "version": "1.0.0", - "schemas": { - "main": { - "id": "config.schema.json", - "description": "Main configuration schema for inference builder", - "path": "./config.schema.json" - }, - "backends": { - "deepstream": { - "id": "backends/deepstream.schema.json", - "description": "DeepStream backend configuration", - "path": "./backends/deepstream.schema.json", - "parameters": "./backends/parameters/deepstream-parameters.schema.json", - "backend_type": "deepstream/nvinfer" - }, - "triton": { - "id": "backends/triton.schema.json", - "description": "Triton Inference Server backend configuration", - "path": "./backends/triton.schema.json", - "parameters": "./backends/parameters/triton-parameters.schema.json", - "backend_types": [ - "triton/python", - "triton/tensorrt", - "triton/onnx", - "triton/pytorch" - ] - }, - "vllm": { - "id": "backends/vllm.schema.json", - "description": "vLLM backend configuration for large language models", - "path": "./backends/vllm.schema.json", - "parameters": "./backends/parameters/vllm-parameters.schema.json", - "backend_type": "vllm" - }, - "tensorrtllm": { - "id": "backends/tensorrtllm.schema.json", - "description": "TensorRT-LLM backend configuration", - "path": "./backends/tensorrtllm.schema.json", - "parameters": "./backends/parameters/tensorrtllm-parameters.schema.json", - "backend_types": [ - "tensorrtllm", - "tensorrtllm/pytorch" - ] - }, - "polygraphy": { - "id": "backends/polygraphy.schema.json", - "description": "Polygraphy (TensorRT) backend configuration", - "path": "./backends/polygraphy.schema.json", - "parameters": "./backends/parameters/polygraphy-parameters.schema.json", - "backend_type": "polygraphy" - }, - "dummy": { - "id": "backends/dummy.schema.json", - "description": "Dummy backend for testing", - "path": "./backends/dummy.schema.json", - "parameters": "./backends/parameters/dummy-parameters.schema.json", - "backend_type": "dummy" - }, - "pytorch": { - "id": "backends/pytorch.schema.json", - "description": "PyTorch backend configuration (Huggingface Transformers)", - "path": "./backends/pytorch.schema.json", - "parameters": "./backends/parameters/pytorch-parameters.schema.json", - "backend_type": "pytorch" - } - }, - "common": { - "base_model": { - "id": "common/base-model.schema.json", - "description": "Base model configuration (shared structure)", - "path": "./common/base-model.schema.json" - }, - "base_processor": { - "id": "common/base-processor.schema.json", - "description": "Base processor configuration (shared by preprocessors and postprocessors)", - "path": "./common/base-processor.schema.json" - }, - "definitions": { - "id": "common/definitions.schema.json", - "description": "Common definitions and reusable schemas", - "path": "./common/definitions.schema.json" - }, - "preprocessors": { - "id": "common/preprocessors.schema.json", - "description": "Preprocessor configurations", - "path": "./common/preprocessors.schema.json" - }, - "postprocessors": { - "id": "common/postprocessors.schema.json", - "description": "Postprocessor configurations", - "path": "./common/postprocessors.schema.json" - } - } - }, - "documentation": { - "readme": "./README.md", - "samples": "../builder/samples/" - } -} - diff --git a/tools/inference_builder/schemas/validate_config.py b/tools/inference_builder/schemas/validate_config.py deleted file mode 100644 index d813037e..00000000 --- a/tools/inference_builder/schemas/validate_config.py +++ /dev/null @@ -1,220 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Validate Inference Builder configuration files against JSON schemas. - -Usage: - python validate_config.py config.yaml - python validate_config.py --schema custom_schema.json config.yaml -""" - -import argparse -import json -import sys -from pathlib import Path -from typing import Dict, Any - -try: - import yaml -except ImportError: - print("Error: PyYAML is required. Install with: pip install pyyaml") - sys.exit(1) - -try: - from jsonschema import validate, ValidationError, Draft7Validator -except ImportError: - print("Error: jsonschema is required. Install with: pip install jsonschema") - sys.exit(1) - - -def load_yaml(file_path: Path) -> Dict[Any, Any]: - """Load YAML configuration file. - - Args: - file_path: Path to YAML file - - Returns: - Parsed YAML as dictionary - """ - try: - with open(file_path, 'r') as f: - return yaml.safe_load(f) - except yaml.YAMLError as e: - print(f"Error parsing YAML file: {e}") - sys.exit(1) - except FileNotFoundError: - print(f"Error: File not found: {file_path}") - sys.exit(1) - - -def load_schema(schema_path: Path) -> Dict[Any, Any]: - """Load JSON schema file. - - Args: - schema_path: Path to schema file - - Returns: - Parsed schema as dictionary - """ - try: - with open(schema_path, 'r') as f: - return json.load(f) - except json.JSONDecodeError as e: - print(f"Error parsing schema file: {e}") - sys.exit(1) - except FileNotFoundError: - print(f"Error: Schema file not found: {schema_path}") - sys.exit(1) - - -def validate_config(config: Dict[Any, Any], schema: Dict[Any, Any], verbose: bool = False) -> bool: - """Validate configuration against schema. - - Args: - config: Configuration dictionary - schema: JSON schema dictionary - verbose: Enable verbose output - - Returns: - True if valid, False otherwise - """ - try: - # Create validator - validator = Draft7Validator(schema) - - # Check for errors - errors = list(validator.iter_errors(config)) - - if not errors: - print("✓ Configuration is valid!") - return True - - print(f"✗ Configuration validation failed with {len(errors)} error(s):\n") - - for i, error in enumerate(errors, 1): - print(f"Error {i}:") - print(f" Path: {'.'.join(str(p) for p in error.path)}") - print(f" Message: {error.message}") - - if verbose and error.context: - print(f" Context:") - for ctx_error in error.context: - print(f" - {ctx_error.message}") - - print() - - return False - - except Exception as e: - print(f"Error during validation: {e}") - return False - - -def get_backend_schema(config: Dict[Any, Any], schema_dir: Path) -> Path: - """Determine the appropriate backend schema based on config. - - Args: - config: Configuration dictionary - schema_dir: Directory containing schemas - - Returns: - Path to backend-specific schema or main schema - """ - if 'models' not in config or not config['models']: - return schema_dir / 'config.schema.json' - - # Get the backend from the first model - backend = config['models'][0].get('backend', '') - - backend_map = { - 'deepstream/nvinfer': 'deepstream.schema.json', - 'triton': 'triton.schema.json', - 'vllm': 'vllm.schema.json', - 'tensorrtllm': 'tensorrtllm.schema.json', - 'polygraphy': 'polygraphy.schema.json', - 'dummy': 'dummy.schema.json', - 'pytorch': 'pytorch.schema.json' - } - - for prefix, schema_file in backend_map.items(): - if backend.startswith(prefix): - backend_schema = schema_dir / 'backends' / schema_file - if backend_schema.exists(): - return backend_schema - - return schema_dir / 'config.schema.json' - - -def main(): - """Main entry point.""" - parser = argparse.ArgumentParser( - description='Validate Inference Builder configuration files' - ) - parser.add_argument( - 'config', - type=Path, - help='Path to configuration YAML file' - ) - parser.add_argument( - '-s', '--schema', - type=Path, - help='Path to JSON schema file (default: auto-detect from config)' - ) - parser.add_argument( - '-v', '--verbose', - action='store_true', - help='Enable verbose output' - ) - parser.add_argument( - '--schema-dir', - type=Path, - default=Path(__file__).parent, - help='Directory containing schema files' - ) - - args = parser.parse_args() - - # Load configuration - if args.verbose: - print(f"Loading configuration from: {args.config}") - config = load_yaml(args.config) - - # Determine schema to use - if args.schema: - schema_path = args.schema - else: - schema_path = get_backend_schema(config, args.schema_dir) - if args.verbose: - print(f"Auto-detected schema: {schema_path}") - - # Load schema - if args.verbose: - print(f"Loading schema from: {schema_path}") - schema = load_schema(schema_path) - - # Validate - if args.verbose: - print("\nValidating configuration...\n") - - is_valid = validate_config(config, schema, args.verbose) - - sys.exit(0 if is_valid else 1) - - -if __name__ == '__main__': - main() - diff --git a/tools/inference_builder/templates/api_server/fastapi/responder.jinja.py b/tools/inference_builder/templates/api_server/fastapi/responder.jinja.py deleted file mode 100644 index 9cda8a30..00000000 --- a/tools/inference_builder/templates/api_server/fastapi/responder.jinja.py +++ /dev/null @@ -1,88 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} -{{ license }} - -import json -from dataclasses import asdict -from config import global_config -from .model import GenericInference -from lib.utils import create_jinja2_env, convert_list -from lib.responder import ResponderBase -from lib.inference import Stop -from lib.errors import EnhancedError -import re -import numpy as np -import torch -from typing import Dict, Any -from fastapi.responses import StreamingResponse -import asyncio - -class Responder(ResponderBase): - def __init__(self): - super().__init__() - self._inference = GenericInference() - self._inference.initialize() - - # initialize the action map - {% for responder in responders %} - self._action_map["{{ responder.operation }}"] = self.{{ responder.name }} - {% endfor %} - - def process_request( - self, - responder : str, - request, - ): - # the helper function transforms the HTTP request to a dictionary that satisfies the inference input schema - return super().process_request(responder, request) - - def process_response(self, responder: str, request, response: Dict[str, Any]): - accept = request.headers.get("accept", "") - streaming = "application/x-ndjson" in accept - # transform numpy ndarray or tensor to universal value types for inference - if responder == "infer": - type_map = { i.name: i.data_type for i in global_config.output} - for name in response: - if not name in type_map: - self.logger.error(f"Unexpected output: {name}") - continue - expected_type = type_map[name] - value = response[name] - if isinstance(value, np.ndarray) or isinstance(value, torch.Tensor): - l = value.tolist() - if expected_type == "TYPE_STRING" and value.dtype != np.string_: - response[name] = convert_list(l, lambda i: i.decode("utf-8", "ignore")) - elif len(response[name].shape) == 1 and len(l) == 1: - response[name] = l[0] - else: - response[name] = l - - # the helper function transforms the inference output to a json string - json_string = super().process_response(responder, request, response) - self.logger.debug(f"Sending json payload: {json_string}") - - return (json.dumps(json.loads(json_string), separators=(',', ':')) + "\n") if streaming else json.loads(json_string) - - async def take_action(self, action_name:str, **kwargs): - action = self._action_map.get(action_name, None) - if not action: - raise ValueError(f"Unknown action: {action_name}") - return await action(**kwargs) - -{% for responder in responders %} -{{ responder.implementation }} -{% endfor %} diff --git a/tools/inference_builder/templates/api_server/fastapi/route/inference.jinja2 b/tools/inference_builder/templates/api_server/fastapi/route/inference.jinja2 deleted file mode 100644 index 65fca099..00000000 --- a/tools/inference_builder/templates/api_server/fastapi/route/inference.jinja2 +++ /dev/null @@ -1,76 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -from typing import Any -{{imports}} -from contextlib import asynccontextmanager -from fastapi import Request, HTTPException, FastAPI, APIRouter -import uvicorn -from .responder import Responder -from lib.utils import get_logger -import os - -class FastAPIInterface: - - def __init__(self, *args, **kwargs): - self.app = FastAPI() - self.router = APIRouter() - self.responder = Responder() - self.logger = get_logger(__name__) - self.register_routes() - self.app.include_router(self.router) - - def register_routes(self): - {% for operation in operations %} - self.router.{{operation.type}}("{{operation.path}}")(self.{{operation.function_name}}) - {% endfor %} - - - def serve(self, **kwargs): - http_port = int(os.getenv("HTTP_PORT", "8000")) - uvicorn.run(self.app, host="0.0.0.0", port=http_port) - - {% for operation in operations %} - async def {{operation.function_name}}(self, request: Request, {{operation.snake_case_arguments}}) -> {{operation.response}}: - self.logger.info("{{operation.function_name}} called") - kwargs = dict(locals()) - kwargs.pop("self") - status, response = await self.responder.take_action("{{operation.function_name}}", **kwargs) - if status != 200: - raise HTTPException(status_code=status, detail=response) - self.logger.debug(f"response generated as {response}") - return response - {% endfor %} - -def get_openapi_schema(file_dump=True, pprint=True): - """ - Utility function to get API schema in YAML format. - This is used after inference.py has been completed with custom user APIs. - """ - import yaml - interface_instance = Interface() - schema: dict = interface_instance.get_openapi_schema() - if pprint: - print(yaml.dump(schema, sort_keys=False)) - if file_dump: - with open("api_spec.yaml", "w+") as file: - yaml.dump(schema, file, sort_keys=False) - - -def main(): - interface = FastAPIInterface() - interface.serve() diff --git a/tools/inference_builder/templates/backend/deepstream.jinja.py b/tools/inference_builder/templates/backend/deepstream.jinja.py deleted file mode 100644 index 1358b319..00000000 --- a/tools/inference_builder/templates/backend/deepstream.jinja.py +++ /dev/null @@ -1,1178 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -from pyservicemaker import Pipeline, Flow, BufferProvider, Buffer, RenderMode, BufferRetriever, as_tensor, StateTransitionMessage, DynamicSourceMessage, SourceConfig, BatchMetadataOperator, Probe -from typing import Dict, List -from queue import Queue, Empty, Full -from dataclasses import dataclass -import base64 -import numpy as np -from abc import ABC, abstractmethod -import yaml -import tempfile -import os - -png_data = base64.b64decode("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAEElEQVR4nGK6HcwNCAAA//8DTgE8HuxwEQAAAABJRU5ErkJggg==") -jpg_data = base64.b64decode("/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigAooooAKKKKACiiigD/2Q==") - - -@dataclass -class PerfConfig: - enable_fps_logs: bool = False - enable_latency_logs: bool = False - -@dataclass -class RenderConfig: - enable_display: bool = False - enable_osd: bool = False - enable_stream: bool = False - rtsp_mount_point: str | None = "/ds-test" - rtsp_port: int | None = 8554 - seg_mask_config: dict | None = None - - def __bool__(self) -> bool: - """Check if render configuration is valid.""" - if self.enable_osd and not self.enable_display and not self.enable_stream: - logger.warning("RenderConfig: enable_osd is True but both enable_display and enable_stream are False. OSD requires an output method.") - return False - if self.enable_stream and (self.rtsp_mount_point is None or self.rtsp_port is None): - logger.warning("RenderConfig: enable_stream is True but rtsp_mount_point or rtsp_port is None.") - return False - return True - -@dataclass -class TrackerConfig: - config_path: str | None = None - lib_path: str | None = None - width: int = 1920 - height: int = 1088 - display_tracking_id: bool = False - - def __bool__(self) -> bool: - """Check if all required tracker configuration fields are set.""" - # Check if width/height is set than we need to have both, set default values if not set - if (self.width is not None and self.height is None) or (self.width is None and self.height is not None): - logger.warning("TrackerConfig: width and height must be set together, setting default values") - return self.config_path is not None and self.lib_path is not None - -@dataclass -class MessageBrokerConfig: - proto_lib_path: str | None = None - conn_str: str | None = None - topic: str | None = None - msgconv_config_path: str | None = None - msgconv_payload_type: int = 0 - msgconv_msg2p_new_api: bool = False - msgconv_frame_interval: int = 30 - msgconv_msg2p_lib: str | None = None - - def __bool__(self) -> bool: - """Check if all required message broker configuration fields are set.""" - if self.msgconv_msg2p_lib is not None and not os.path.exists(self.msgconv_msg2p_lib): - logger.warning(f"MessageBrokerConfig: msgconv_msg2p_lib does not exist: {self.msgconv_msg2p_lib}") - return False - if self.msgconv_config_path is not None and not os.path.exists(self.msgconv_config_path): - logger.warning(f"MessageBrokerConfig: msgconv_config_path does not exist: {self.msgconv_config_path}") - return False - if self.proto_lib_path is not None and not os.path.exists(self.proto_lib_path): - logger.warning(f"MessageBrokerConfig: proto_lib_path does not exist: {self.proto_lib_path}") - return False - return ( - self.proto_lib_path is not None and - self.msgconv_config_path is not None and - self.conn_str is not None and - self.topic is not None - ) - -@dataclass -class AnalyticsConfig: - """Configuration for nvdsanalytics (ROI, line-crossing, overcrowding, direction).""" - config_path: str | None = None - gpu_id: int = 0 - - def __bool__(self) -> bool: - """Check if analytics is configured (config_path set).""" - if self.config_path is None: - return False - if not os.path.exists(self.config_path): - logger.warning(f"AnalyticsConfig: config_path does not exist: {self.config_path}") - return False - return True - -@dataclass -class KittiConfig: - infer_kitti_output_dir: str | None = None - tracker_kitti_output_dir: str | None = None - - def __bool__(self) -> bool: - """Check if any required kitti configuration fields are set.""" - if self.infer_kitti_output_dir is None and self.tracker_kitti_output_dir is None: - logger.warning("KittiConfig: No kitti output directory specified") - return False - if self.infer_kitti_output_dir is not None and not os.path.exists(self.infer_kitti_output_dir): - logger.warning(f"KittiConfig: infer_kitti_output_dir does not exist: {self.infer_kitti_output_dir}") - return False - if self.tracker_kitti_output_dir is not None and not os.path.exists(self.tracker_kitti_output_dir): - logger.warning(f"KittiConfig: tracker_kitti_output_dir does not exist: {self.tracker_kitti_output_dir}") - return False - return True - -class ImageTensorInput(BufferProvider): - - def __init__(self, height, width, format): - super().__init__() - self.width = width - self.height = height - self.format = format - self.framerate = 1 - self.device = 'cpu' - self.queue = Queue(maxsize=10) - - def generate(self, size): - tensor = self.queue.get() - if isinstance(tensor, np.ndarray): - return Buffer(tensor.tolist()) - elif isinstance(tensor, Stop): - # EOS - return Buffer() - else: - logger.exception("Unexpected input tensor data") - return Buffer() - - def send(self, data): - self.queue.put(data) - -class GenericTensorInput(): - def __init__(self, device_id): - self.queue = Queue(maxsize=10) - self._device_id = device_id - - def generate(self, n): - try: - tensors = self.queue.get(timeout=1) - except Empty: - logger.warning("No tensor data to generate") - return dict() - result = {k: as_tensor(v, "").to_gpu(self._device_id) for k, v in tensors.items()} - return result - - def send(self, data): - self.queue.put(data) - -class StaticTensorInput(): - def __init__(self, device_id): - self._tensors = {} - self._device_id = device_id - - def generate(self, n): - result = {k: as_tensor(v, "").to_gpu(self._device_id) for k, v in self._tensors.items()} - return result - - def set(self, data): - self._tensors.update(data) - -class TensorInputPool(ABC): - @abstractmethod - def submit(self, data: List): - pass - @abstractmethod - def stop(self, reason: str): - pass - -class ImageTensorInputPool(TensorInputPool): - - def __init__(self, height, width, formats, batch_size, image_tensor_name, media_url_tensor_name, mime_tensor_name, device_id, require_extra_input): - self._image_inputs = [ImageTensorInput(width, height, format) for format in formats for _ in range(batch_size)] - self._media_url_tensor_name = media_url_tensor_name - self._mime_tensor_name = mime_tensor_name - self._image_tensor_name = image_tensor_name - self._generic_input = GenericTensorInput(device_id) if require_extra_input else None - self._batch_size = batch_size - - @property - def image_inputs(self): - return self._image_inputs - - @property - def generic_input(self): - return self._generic_input - - def submit(self, data: List): - indices = [] - for item in data: - mime_type = item.pop(self._mime_tensor_name, None) - if mime_type is None: - logger.error("MIME type is not specified") - continue - mime_type = mime_type.split('/'); - if mime_type[0] == 'image': - format = mime_type[1].upper() - # try find the free slot for the specific format - i, image_tensor_input = next(((i, x) for i,x in enumerate(self._image_inputs) if x.format == format and x.queue.empty()), (-1, None)) - if image_tensor_input is None: - i, image_tensor_input = next(((i, x) for i,x in enumerate(self._image_inputs) if x.format == format), (-1, None)) - if image_tensor_input is not None: - if self._image_tensor_name in item: - image_tensor = item.pop(self._image_tensor_name) - image_tensor_input.send(image_tensor) - indices.append(i) - elif self._media_url_tensor_name in item: - image_url = item.pop(self._media_url_tensor_name) - with open(image_url, 'rb') as f: - image_tensor = np.frombuffer(f.read(), dtype=np.uint8) - image_tensor_input.send(image_tensor) - indices.append(i) - else: - logger.error(f"image tensor or media url is missing: {item}") - else: - logger.error(f"Unable to find free slot for format {format}") - else: - logger.error(f"Unsupported MIME type {mime_type}") - continue - if self._generic_input: - data = [data[i:i + self._batch_size] for i in range(0, len(data), self._batch_size)] - for d in data: - self._generic_input.send(stack_tensors_in_dict(d)) - # batched indices for each input - return indices - - def stop(self, reason: str): - for input in self._image_inputs: - input.send(Stop(reason)) - if self._generic_input: - self._generic_input.send(Stop(reason)) - -class BulkVideoInputPool(TensorInputPool): - def __init__(self, - max_batch_size, - batch_timeout, - media_url_tensor_name, - source_tensor_name, - mime_tensor_name, - infer_config_paths, - preprocess_config_paths, - tracker_config: TrackerConfig, - analytics_config: AnalyticsConfig, - msgbroker_config: MessageBrokerConfig, - render_config: RenderConfig, - perf_config: PerfConfig, - kitti_config: KittiConfig, - output, - device_id, - require_extra_input, - engine_file_names, - dims, - label_file_path, - model_home - ): - self._batch_size = max_batch_size - self._batch_timeout = batch_timeout - self._media_url_tensor_name = media_url_tensor_name - self._source_tensor_name = source_tensor_name - self._mime_tensor_name = mime_tensor_name - self._infer_config_paths = infer_config_paths - self._engine_file_names = engine_file_names - self._preprocess_config_paths = preprocess_config_paths - self._pipeline = None - self._output = output - self._generic_input = StaticTensorInput(device_id) if require_extra_input else None - self._device_id = device_id - self._dims = dims - self._tracker_config = tracker_config - self._analytics_config = analytics_config - self._msgbroker_config = msgbroker_config - self._render_config = render_config - self._perf_config = perf_config - self._kitti_config = kitti_config - self._label_file_path = label_file_path - self._model_home = model_home - - def submit(self, data: List): - def on_message(message, total_streams, output): - # handle the dynamic source messages only in case the source config is set - if not isinstance(message, DynamicSourceMessage): - return - logger.info(f"Received source added/removed message: {message.source_added}") - if message.source_added: - total_streams += 1 - else: - total_streams -= 1 - if total_streams <= 0: - output.reset() - - url_list = [] - source_config_file = None - total_streams = 0 - for item in data: - if self._mime_tensor_name and self._mime_tensor_name in item: - item.pop(self._mime_tensor_name) - if self._media_url_tensor_name and self._media_url_tensor_name in item: - url_list.append(str(item.pop(self._media_url_tensor_name))) - elif self._source_tensor_name and self._source_tensor_name in item: - source_config_file = item.pop(self._source_tensor_name) - if not isinstance(source_config_file, str): - logger.error( - f"Source config value must be a string, got {type(source_config_file).__name__}: {source_config_file}" - ) - return [] - if not source_config_file.lower().endswith(('.yml', '.yaml')): - logger.error( - f"Source config file must be a YAML file: {source_config_file}" - ) - return [] - # Correct relative path to absolute path relative to model_home - if not os.path.isabs(source_config_file): - source_config_file = os.path.join(self._model_home, source_config_file) - break - else: - logger.error(f"Invalid input data: {data}") - continue - - if len(url_list) > self._batch_size: - logger.warning( - f"Number of media urls ({len(url_list)}) > " - f"batch size ({self._batch_size}), " - f"only the first {self._batch_size} will be used" - ) - url_list = url_list[:self._batch_size] - - pipeline = Pipeline(f"deepstream-video-batch") - if self._generic_input and data: - self._generic_input.set(stack_tensors_in_dict(data)) - - # Use appropriate batch_capture method based on input type - if source_config_file: - sc = SourceConfig() - sc.load(source_config_file) - total_streams = len(sc.sensor_list) - flow = Flow(pipeline).batch_capture( - input=source_config_file, - width=self._dims[1], height=self._dims[0], - batch_size=self._batch_size, - batched_push_timeout=self._batch_timeout - ) - else: - total_streams = len(url_list) - flow = Flow(pipeline).batch_capture( - url_list, - width=self._dims[1], - height=self._dims[0], - batched_push_timeout=self._batch_timeout) - - for config in self._preprocess_config_paths: - flow = flow.preprocess(config, None if not self._generic_input else self._generic_input.generate) - for config_path, engine_file in zip(self._infer_config_paths, self._engine_file_names): - if engine_file: - flow = flow.infer(config_path, batch_size=self._batch_size, model_engine_file=engine_file) - else: - flow = flow.infer(config_path, batch_size=self._batch_size) - if self._kitti_config.infer_kitti_output_dir: - flow = flow.attach(what="kitti_dump_probe", name="inference_kitti_dump", properties={"kitti-dir": self._kitti_config.infer_kitti_output_dir}) - if self._tracker_config: - flow = flow.track( - ll_config_file=self._tracker_config.config_path, - ll_lib_file=self._tracker_config.lib_path, - gpu_id=self._device_id, - tracker_width=self._tracker_config.width, - tracker_height=self._tracker_config.height, - display_tracking_id=self._tracker_config.display_tracking_id - ) - if self._kitti_config.tracker_kitti_output_dir: - flow = flow.attach(what="kitti_dump_probe", name="tracker_kitti_dump", properties={"tracker-kitti-output": True,"kitti-dir": self._kitti_config.tracker_kitti_output_dir}) - if self._analytics_config: - flow = flow.analyze( - self._analytics_config.config_path, - enable=1, - gpu_id=self._analytics_config.gpu_id - ) - - if self._perf_config.enable_fps_logs: - flow = flow.attach(what="measure_fps_probe", name="fps_probe") - if self._perf_config.enable_latency_logs: - flow = flow.attach(what="measure_latency_probe", name="latency_probe") - n_sink = 0 - if self._msgbroker_config: - flow = flow.attach( - what="add_message_meta_probe", - name="message_generator", - properties={ - "label-file": self._label_file_path if self._label_file_path else "", - "source-config": source_config_file if source_config_file else "" - } - ) - flow = flow.fork() - n_sink += 1 - publish_params = { - 'msg_broker_proto_lib': self._msgbroker_config.proto_lib_path, - 'msg_broker_conn_str': self._msgbroker_config.conn_str, - 'topic': self._msgbroker_config.topic, - 'msg_conv_config': self._msgbroker_config.msgconv_config_path, - 'msg_conv_payload_type': self._msgbroker_config.msgconv_payload_type, - 'msg_conv_msg2p_new_api': self._msgbroker_config.msgconv_msg2p_new_api, - 'msg_conv_frame_interval': self._msgbroker_config.msgconv_frame_interval, - 'sync': False - } - if self._msgbroker_config.msgconv_msg2p_lib: - publish_params['msg_conv_msg2p_lib'] = self._msgbroker_config.msgconv_msg2p_lib - - flow.publish(**publish_params) - if self._render_config.enable_stream: - if n_sink == 0: - flow = flow.fork() - n_sink += 1 - flow.render(RenderMode.STREAM, - enable_osd=self._render_config.enable_osd, - rtsp_mount_point=self._render_config.rtsp_mount_point, - rtsp_port=self._render_config.rtsp_port, - sync=False) - if self._render_config.enable_display: - if n_sink == 0: - flow = flow.fork() - n_sink += 1 - seg_mask_config = dict(self._render_config.seg_mask_config) if self._render_config.seg_mask_config else None - flow.render(RenderMode.DISPLAY, enable_osd=self._render_config.enable_osd, seg_mask_config=seg_mask_config, sync=False) - - flow = flow.attach(what=Probe("metadata_probe", self._output)).retrieve(self._output, **{'async': False}) - - if self._pipeline is not None: - self._pipeline.wait() - - if source_config_file: - # monitor the total streams and reset the output when the total streams is 0 - pipeline.start(on_message=lambda message: on_message(message, total_streams, self._output)) - else: - pipeline.start() - self._pipeline = pipeline - return list(range(len(url_list))) if url_list else list(range(self._batch_size)) - - def stop(self, reason: str): - if self._pipeline: - self._pipeline.stop() - self._pipeline.wait() - - -class BaseTensorOutput(BufferRetriever, BatchMetadataOperator): - """Base class for tensor outputs that can work as both BufferRetriever (appsink) and - BatchMetadataOperator (probe). - - Subclasses override _extract_metadata() to yield results. - Both consume() (appsink) and handle_metadata() (probe) iterate and deposit. - """ - def __init__(self, n_outputs, metadata_output_name: str = None, image_output_name: str = None): - """Initialize the base tensor output handler. - - Args: - n_outputs: Maximum number of output slots (typically max_batch_size - or max_batch_size * num_formats). Each slot corresponds to a - pad index in the DeepStream pipeline. - metadata_output_name: When set, collected results are wrapped in a - dict keyed by this name (e.g. {"output": }). Used by - MetadataOutput / PreprocessMetadataOutput for DS metadata - outputs (TYPE_CUSTOM_DS_METADATA). None for raw tensor outputs. - image_output_name: When set, indicates that decoded image frames - should be extracted from the DeepStream pipeline and returned - as RGB uint8 tensors in HWC layout (TYPE_CUSTOM_DS_IMAGE - output). The value is the output tensor name to use. - """ - BufferRetriever.__init__(self) - BatchMetadataOperator.__init__(self) - self._n_outputs = n_outputs - self._queue = Queue() - self._stashed = [] - self._metadata_output_name = metadata_output_name - self._image_output_name = image_output_name - self._image_queue = Queue() # separate queue for decoded image frames - self._image_stashed = [] # stashed image batches for cross-collect reuse - - def consume(self, buffer): - """Called when used as appsink retriever (BufferRetriever interface). - - When image output is enabled, extracts decoded RGB HWC frames from - the buffer and converts them to CPU numpy arrays via dlpack before - queuing. The dlpack conversion must happen here while the buffer's - GPU memory is still valid — once consume() returns, the buffer is - released and the GPU tensor data becomes stale. - - Obtains batch_meta from the buffer to get the batch_id → pad_index - mapping, then calls buffer.extract(batch_id) for each frame. - Note: batch_id is assigned by arrival order, not pad index — e.g. if - only pads 0, 2, 3 deliver frames, they get batch_ids 0, 1, 2. - """ - if self._image_output_name: - received = [None] * self._n_outputs - batch_meta = buffer.batch_meta - for frame_meta in batch_meta.frame_items: - frame = buffer.extract(frame_meta.batch_id) - if frame is not None: - # Clone via dlpack while buffer GPU memory is still valid; - # clone() copies to a new GPU allocation so the tensor - # survives after the buffer is released. - frame = torch.utils.dlpack.from_dlpack(frame).clone() - received[frame_meta.pad_index] = (frame, frame_meta.buffer_pts) - self._image_queue.put(received) - return 1 - - def handle_metadata(self, batch_meta): - """Called when used as probe (BatchMetadataOperator interface).""" - for metadata in self._extract_metadata(batch_meta): - self._deposit(metadata) - - def _extract_metadata(self, batch_meta): - """Override in subclasses to extract metadata. - - Yields a list (indexed by pad_index) where each non-None element is - a dict containing the extracted data. The dict should include a - "timestamp" key (buffer_pts) for synchronization with image frames - in collect(). DS metadata dicts already carry this; tensor outputs - insert it explicitly. - """ - return - yield # Make this a generator - - def collect(self, indices: List, timeout=None) -> List | None: - def move_data(data: list, collected: list): - for i, d in enumerate(data): - if d is not None: - if collected[i] is None: - collected[i] = d - data[i] = None - - def _drain(queue, stashed, collected, indices): - """Drain a queue into collected slots using stash for leftovers.""" - while stashed: - data = stashed.pop(0) - move_data(data, collected) - while not all(collected[i] is not None for i in indices): - try: - data = queue.get(timeout=timeout) - if data is None: - break - move_data(data, collected) - if any(d is not None for d in data): - stashed.append(data) - except Empty: - break - - def _drain_images(queue, stashed, collected, indices, target_pts): - """Drain image queue, discarding images older than metadata timestamps.""" - def process(data): - for i, d in enumerate(data): - if d is None: - continue - # Always discard stale images even if this pad is already collected - if i in target_pts: - _, img_pts = d - if img_pts < target_pts[i]: - data[i] = None - continue - if collected[i] is None: - collected[i] = d - data[i] = None - - remaining = [] - for data in stashed: - process(data) - if any(d is not None for d in data): - remaining.append(data) - stashed.clear() - stashed.extend(remaining) - - while not all(collected[i] is not None for i in indices): - try: - data = queue.get(timeout=timeout) - if data is None: - break - process(data) - if any(d is not None for d in data): - stashed.append(data) - except Empty: - break - - n_slots = max(indices) + 1 - - # Drain metadata queue first — metadata drives collection. - meta_collected = [None] * n_slots - _drain(self._queue, self._stashed, meta_collected, indices) - - if self._image_output_name: - # Build target timestamps from metadata for image synchronization. - # Images with pts older than the metadata are stale and discarded. - target_pts = {} - for i in indices: - meta = meta_collected[i] - if meta is not None and isinstance(meta, dict): - pts = meta.get("timestamp") - if pts is not None: - target_pts[i] = pts - - image_collected = [None] * n_slots - _drain_images(self._image_queue, self._image_stashed, image_collected, indices, target_pts) - - if all(i is None for i in meta_collected) and all(i is None for i in image_collected): - return None - - results = [] - for idx in indices: - result = {} - metadata = meta_collected[idx] - image_entry = image_collected[idx] - - if metadata is not None: - if self._metadata_output_name is not None: - result[self._metadata_output_name] = metadata - elif isinstance(metadata, dict): - result.update(metadata) - else: - result = metadata - - if image_entry is not None: - frame, _ = image_entry - if not isinstance(result, dict): - result = {} - result[self._image_output_name] = frame - - results.append(result if result else None) - return results - else: - # --- Metadata-only path --- - if all(i is None for i in meta_collected): - return None - collected = [meta_collected[i] for i in indices] - return collected if self._metadata_output_name is None else [ - {self._metadata_output_name: r} for r in collected - ] - - def reset(self): - # wake up the old queue first - self._queue.put(None) - self._queue = Queue(maxsize=self._queue.maxsize) - self._stashed = [] - self._image_queue = Queue() - self._image_stashed = [] - - def _deposit(self, received: list): - logger.debug("DeepstreamBackend: Depositing data: %s", received) - try: - self._queue.put(received) - except Full: - logger.warning(f"DeepstreamBackend: Queue is full, dropping data: {received}") - - -class TensorOutput(BaseTensorOutput): - def __init__(self, n_outputs, preprocess_config_path, image_output_name=None): - super().__init__(n_outputs, metadata_output_name=None, image_output_name=image_output_name) - self._preprocess_config_path = preprocess_config_path - - def _extract_metadata(self, batch_meta): - received = [None] * self._n_outputs - if self._preprocess_config_path: - for meta in batch_meta.preprocess_batch_items: - preprocess_batch = meta.as_preprocess_batch() - if not preprocess_batch: - continue - for roi in preprocess_batch.rois: - result = dict() - for user_meta in roi.tensor_items: - tensor_output = user_meta.as_tensor_output() - if tensor_output : - for n, tensor in tensor_output.get_layers().items(): - torch_tensor = torch.utils.dlpack.from_dlpack(tensor).to('cpu') - result[n] = torch_tensor - result["timestamp"] = roi.frame_meta.buffer_pts - received[roi.frame_meta.pad_index] = result - else: - for frame_meta in batch_meta.frame_items: - result = dict() - for user_meta in frame_meta.tensor_items: - tensor_output = user_meta.as_tensor_output() - if tensor_output : - for n, tensor in tensor_output.get_layers().items(): - torch_tensor = torch.utils.dlpack.from_dlpack(tensor).to('cpu') - result[n] = torch_tensor - result["timestamp"] = frame_meta.buffer_pts - received[frame_meta.pad_index] = result - yield received - -class PreprocessMetadataOutput(BaseTensorOutput): - """Output handler for preprocess metadata.""" - def __init__(self, n_outputs, output_name, dims, image_output_name=None): - super().__init__(n_outputs, metadata_output_name=output_name, image_output_name=image_output_name) - self._n_outputs = n_outputs - self._shape = dims - - def _extract_metadata(self, batch_meta): - for meta in batch_meta.preprocess_batch_items: - preprocess_batch = meta.as_preprocess_batch() - if not preprocess_batch: - continue - received = preprocess_batch.extract(self._n_outputs) - for roi in preprocess_batch.rois: - idx = roi.frame_meta.pad_index - if received[idx] is not None: - received[idx]["timestamp"] = roi.frame_meta.buffer_pts - yield received - -class MetadataOutput(BaseTensorOutput): - def __init__(self, n_outputs, output_name, dims, image_output_name=None): - super().__init__(n_outputs, metadata_output_name=output_name, image_output_name=image_output_name) - self._n_outputs = n_outputs - self._shape = dims - - def _extract_metadata(self, batch_meta): - # DS metadata from batch_meta.extract() already carries pts internally - yield batch_meta.extract(self._n_outputs) - -class DeepstreamBackend(ModelBackend): - """Deepstream backend using pyservicemaker""" - def __init__(self, model_config:Dict, model_home: str, device_id: int=0): - super().__init__(model_config, model_home, device_id) - self._max_batch_size = model_config["max_batch_size"] - self._model_name = model_config["name"] - self._output_names = [o['name'] for o in model_config['output']] - self._output_types = [o['data_type'] for o in model_config['output']] - self._image_tensor_name = None - self._media_url_tensor_name = None - self._mime_tensor_name = None - self._source_tensor_name = None - self._image_output_name = None - self._inference_timeout = model_config["parameters"].get("inference_timeout", None) - self._in_pools = {} - self._outputs = {} - self._pipelines = {} - - tensor_output = False if self._output_types[0] == "TYPE_CUSTOM_DS_METADATA" else True - for o in model_config['output']: - if o['data_type'] == 'TYPE_CUSTOM_DS_IMAGE': - self._image_output_name = o['name'] - break - dims = (0, 0) - - if "parameters" not in model_config or "infer_config_path" not in model_config["parameters"]: - raise Exception("Deepstream pipeline requires infer_config_path") - - infer_config_paths = self._correct_config_paths(model_config["parameters"]['infer_config_path']) - if not infer_config_paths: - raise Exception("Deepstream pipeline requires infer_config_path") - - preprocess_config_paths = [] - if "preprocess_config_path" in model_config["parameters"]: - preprocess_config_paths = self._correct_config_paths(model_config["parameters"]['preprocess_config_path']) - - if "tracker_config" in model_config["parameters"]: - tracker_config = TrackerConfig( - config_path=self._correct_config_paths( - [model_config["parameters"]["tracker_config"].get("ll_config_file")] - )[0] if model_config["parameters"]["tracker_config"].get("ll_config_file") else None, - lib_path=self._correct_config_paths( - [model_config["parameters"]["tracker_config"]["ll_lib_file"]] - )[0], - width=model_config["parameters"]["tracker_config"].get("width", 1920), - height=model_config["parameters"]["tracker_config"].get("height", 1088), - display_tracking_id=model_config["parameters"]["tracker_config"].get("display_tracking_id", False) - ) - if not tracker_config: - logger.warning("DeepstreamBackend: tracker_config is not properlyconfigured") - else: - tracker_config = TrackerConfig() - - if "msgbroker_config" in model_config["parameters"]: - msgbroker_config = MessageBrokerConfig( - proto_lib_path=self._correct_config_paths( - [model_config["parameters"]["msgbroker_config"]["msgbroker_proto_lib_path"]] - )[0], - conn_str=model_config["parameters"]["msgbroker_config"]["msgbroker_conn_str"], - topic=model_config["parameters"]["msgbroker_config"]["msgbroker_topic"], - msgconv_config_path=self._correct_config_paths( - [model_config["parameters"]["msgbroker_config"]["msgconv_config_path"]] - )[0] - ) - if "msgconv_payload_type" in model_config["parameters"]["msgbroker_config"]: - msgbroker_config.msgconv_payload_type = model_config["parameters"]["msgbroker_config"]["msgconv_payload_type"] - if "msgconv_msg2p_new_api" in model_config["parameters"]["msgbroker_config"]: - msgbroker_config.msgconv_msg2p_new_api = model_config["parameters"]["msgbroker_config"]["msgconv_msg2p_new_api"] - if "msgconv_frame_interval" in model_config["parameters"]["msgbroker_config"]: - msgbroker_config.msgconv_frame_interval = model_config["parameters"]["msgbroker_config"]["msgconv_frame_interval"] - if "msgconv_msg2p_lib" in model_config["parameters"]["msgbroker_config"]: - msgbroker_config.msgconv_msg2p_lib = self._correct_config_paths( - [model_config["parameters"]["msgbroker_config"]["msgconv_msg2p_lib"]] - )[0] - if not msgbroker_config: - logger.warning("DeepstreamBackend: msgbroker_config is not properly configured") - else: - msgbroker_config = MessageBrokerConfig() - - if "render_config" in model_config["parameters"]: - render_config = RenderConfig( - enable_display=model_config["parameters"]["render_config"].get("enable_display", False), - enable_osd=model_config["parameters"]["render_config"].get("enable_osd", False), - enable_stream=model_config["parameters"]["render_config"].get("enable_stream", False), - rtsp_mount_point=model_config["parameters"]["render_config"].get("rtsp_mount_point", "/ds-test"), - rtsp_port=model_config["parameters"]["render_config"].get("rtsp_port", 8554), - seg_mask_config=model_config["parameters"]["render_config"].get("seg_mask_visualization", None) - ) - else: - render_config = RenderConfig() - - if "perf_config" in model_config["parameters"]: - perf_config = PerfConfig( - enable_fps_logs=model_config["parameters"]["perf_config"].get("enable_fps_logs", False), - enable_latency_logs=model_config["parameters"]["perf_config"].get("enable_latency_logs", False) - ) - else: - perf_config = PerfConfig() - - if "kitti_output_path" in model_config["parameters"]: - kitti_config = KittiConfig( - infer_kitti_output_dir=model_config["parameters"]["kitti_output_path"].get("infer", None), - tracker_kitti_output_dir=model_config["parameters"]["kitti_output_path"].get("tracker", None) - ) - if not kitti_config: - logger.warning("DeepstreamBackend: kitti_config is not properly configured") - else: - kitti_config = KittiConfig() - - if "analytics_config" in model_config["parameters"]: - ac = model_config["parameters"]["analytics_config"] - config_path = self._correct_config_paths([ac["config_file_path"]])[0] if ac.get("config_file_path") else None - analytics_config = AnalyticsConfig( - config_path=config_path, - gpu_id=ac.get("gpu_id", device_id) - ) - if not analytics_config: - logger.warning("DeepstreamBackend: analytics_config is not properly configured") - else: - analytics_config = AnalyticsConfig() - - infer_element = model_config['backend'].split('/')[-1] - with_triton = infer_element == 'nvinferserver' - require_extra_input = False - warmup_data_0 = dict() - warmup_data_1 = dict() - for input in model_config['input']: - if input['data_type'] == 'TYPE_CUSTOM_DS_IMAGE': - self._image_tensor_name = input['name'] - elif input['data_type'] == 'TYPE_CUSTOM_DS_MEDIA_URL': - self._media_url_tensor_name = input['name'] - elif input['data_type'] == 'TYPE_CUSTOM_DS_MIME': - self._mime_tensor_name = input['name'] - elif input['data_type'] == 'TYPE_CUSTOM_DS_SOURCE_CONFIG': - self._source_tensor_name = input['name'] - elif not ('optional' in input and input['optional']): - tensor_name = input['name'] - require_extra_input = True - np_type = np_datatype_mapping[input['data_type']] - warmup_data_0[tensor_name] = np.random.rand(*input['dims']).astype(np_type) - warmup_data_1[tensor_name] = np.random.rand(*input['dims']).astype(np_type) - if (self._image_tensor_name is None and - self._media_url_tensor_name is None and - self._source_tensor_name is None): - raise ValueError( - "Deepstream pipeline requires at least one " - "TYPE_CUSTOM_DS_IMAGE or TYPE_CUSTOM_DS_MEDIA_URL input " - "or TYPE_CUSTOM_DS_SOURCE_CONFIG input" - ) - if ((self._image_tensor_name or self._media_url_tensor_name) and - self._mime_tensor_name is None): - raise ValueError("Deepstream pipeline requires TYPE_CUSTOM_DS_MIME input") - - primary_infer_config_property = {} - try: - primary_infer_config_path = infer_config_paths[0] - with open(primary_infer_config_path, 'r') as f: - primary_infer_config = yaml.safe_load(f) - if "property" in primary_infer_config: - primary_infer_config_property = primary_infer_config["property"] - except Exception as e: - raise RuntimeError(f"Failed to load primary inference config: {e}") from e - - if "resize_video" in model_config["parameters"] and len(model_config["parameters"]["resize_video"]) == 2: - resize_to = model_config["parameters"]["resize_video"] - dims = (resize_to[0], resize_to[1]) - logger.info(f"DeepstreamBackend: setting video size to {dims}") - else: - # video resized to network dimensions from the primary inference config by default - if "infer-dims" in primary_infer_config_property: - infer_dims = [int(dim) for dim in primary_infer_config_property["infer-dims"].split(";")] - if len(infer_dims) == 3: - if "network-input-order" in primary_infer_config_property and primary_infer_config_property["network-input-order"] == 1: - dims = (infer_dims[0], infer_dims[1]) - else: - dims = (infer_dims[1], infer_dims[2]) - logger.info(f"DeepstreamBackend: setting video size to network dimensions: {dims}") - - if dims[0] == 0 or dims[1] == 0: - raise ValueError( - "DeepstreamBackend: unable to find network dimensions: " - "infer-dims missing in the config?" - ) - - # get the label file path from the primary inference config - label_file_path = None - if "labelfile-path" in primary_infer_config_property: - label_path = primary_infer_config_property["labelfile-path"] - # Convert to absolute path if it's relative - if not os.path.isabs(label_path): - label_file_path = os.path.join(self._model_home, label_path) - else: - label_file_path = label_path - - # construct the input pools, outputs and pipelines - if self._image_tensor_name is not None: - # image input support - media = "image" - formats = ["JPEG", "PNG"] - in_pool = ImageTensorInputPool(dims[0], dims[1], formats, self._max_batch_size, self._image_tensor_name, self._media_url_tensor_name, self._mime_tensor_name, device_id, require_extra_input) - n_output = self._max_batch_size * len(formats) - if tensor_output: - output = TensorOutput(n_output, preprocess_config_paths, image_output_name=self._image_output_name) - elif preprocess_config_paths: - output = PreprocessMetadataOutput(n_output, self._output_names[0], dims, image_output_name=self._image_output_name) - else: - output = MetadataOutput(n_output, self._output_names[0], dims, image_output_name=self._image_output_name) - # create the pipeline - pipeline = Pipeline(f"deepstream-{self._model_name}-{media}") - - self._pipelines[media] = pipeline - self._in_pools[media] = in_pool - self._outputs[media] = output - - # build the inference flow - flow = Flow(pipeline) - batch_timeout = model_config["parameters"].get("batch_timeout", 1000 * self._max_batch_size) - flow = flow.inject(in_pool.image_inputs).decode().batch(batch_size=self._max_batch_size, batched_push_timeout=batch_timeout, live_source=False, width=dims[1], height=dims[0]) - for config_file in preprocess_config_paths: - input = self._in_pools[media].generic_input if require_extra_input else None - flow = flow.preprocess(config_file, None if not input else input.generate) - for config_file in infer_config_paths: - engine_file = self._generate_engine_name(config_file, device_id, self._max_batch_size) - if engine_file: - flow = flow.infer(config_file, with_triton, batch_size=self._max_batch_size, model_engine_file=engine_file) - else: - flow = flow.infer(config_file, with_triton, batch_size=self._max_batch_size) - - flow = flow.attach(what=Probe("metadata_probe", output)).retrieve(output, **{'async': False}) - - # warm up - warmup_data_0[self._image_tensor_name] = np.frombuffer(png_data, dtype=np.uint8) - warmup_data_0[self._mime_tensor_name] = "image/png" - warmup_data_1[self._image_tensor_name] = np.frombuffer(jpg_data, dtype=np.uint8) - warmup_data_1[self._mime_tensor_name] = "image/jpeg" - - logger.info("Image decoder warming up - pre-filling all queues") - # Submit BOTH PNG and JPEG warmup data BEFORE starting pipeline - # This ensures all 4 sources have data when streaming threads start - indices_0 = in_pool.submit([warmup_data_0.copy() for _ in range(self._max_batch_size)]) - indices_1 = in_pool.submit([warmup_data_1.copy() for _ in range(self._max_batch_size)]) - - # Now start pipeline - all queues have data - pipeline.start() - - # Collect all results together (PNG + JPEG) - all_indices = indices_0 + indices_1 - results = output.collect(all_indices) - output.reset() - logger.info(f"Warm up done: {results}") - - if (self._media_url_tensor_name is not None or - self._source_tensor_name is not None): - # video input support - media = "video" - if tensor_output: - output = TensorOutput(self._max_batch_size, preprocess_config_paths, image_output_name=self._image_output_name) - elif preprocess_config_paths: - output = PreprocessMetadataOutput(self._max_batch_size, self._output_names[0], dims, image_output_name=self._image_output_name) - else: - output = MetadataOutput(self._max_batch_size, self._output_names[0], dims, image_output_name=self._image_output_name) - engine_files = [ - self._generate_engine_name( - config_file, - device_id, - self._max_batch_size - ) - for config_file in infer_config_paths - ] - in_pool = BulkVideoInputPool( - max_batch_size=self._max_batch_size, - batch_timeout=model_config["parameters"].get("batch_timeout", 1000 * self._max_batch_size), - media_url_tensor_name=self._media_url_tensor_name, - source_tensor_name=self._source_tensor_name, - mime_tensor_name=self._mime_tensor_name, - infer_config_paths=infer_config_paths, - preprocess_config_paths=preprocess_config_paths, - tracker_config=tracker_config, - analytics_config=analytics_config, - msgbroker_config=msgbroker_config, - render_config=render_config, - perf_config=perf_config, - kitti_config=kitti_config, - output=output, - device_id=device_id, - require_extra_input=require_extra_input, - engine_file_names=engine_files, - dims=dims, - label_file_path=label_file_path, - model_home=self._model_home - ) - - # build tensorrt engine if not exist - if not all (os.path.exists(e) for e in engine_files): - with tempfile.NamedTemporaryFile(suffix='.jpg', delete=False) as f: - f.write(jpg_data) - warmup_video_path = f.name - # Disable perf/render probes for warmup to avoid leaked FPS reporters - in_pool._perf_config = PerfConfig() - in_pool._render_config = RenderConfig() - try: - logger.info("Video decoder warming up - building TensorRT engine") - warmup_item = {self._media_url_tensor_name: warmup_video_path} - if self._mime_tensor_name: - warmup_item[self._mime_tensor_name] = "video/mp4" - indices = in_pool.submit([warmup_item]) - if indices: - results = output.collect(indices) - logger.info(f"Video warm up done: {results}") - output.reset() - in_pool.stop("warmup") - finally: - in_pool._perf_config = perf_config - in_pool._render_config = render_config - os.unlink(warmup_video_path) - - self._in_pools[media] = in_pool - self._outputs[media] = output - - logger.info( - f"DeepstreamBackend created for {self._model_name} to generate " - f"{self._output_names}, output tensor: {tensor_output}" - ) - - - def __call__(self, *args, **kwargs): - in_data_list = args if args else split_tensor_in_dict(kwargs) - media = None - explicit_batch = True if args else False - - # analyze the input batch - for data in in_data_list: - # convert numpy types to native Python types - for k, v in data.items(): - if isinstance(v, np.generic): - v = v.item() - if isinstance(v, bytes): - v = v.decode() - data[k] = v - # get the media type - if ((self._image_tensor_name in data or self._media_url_tensor_name in data) and - not self._mime_tensor_name in data): - logger.error(f"MIME type is not specified for input {data}") - return - if self._source_tensor_name and self._source_tensor_name in data: - media = "video" - explicit_batch = True - break # only video source is supported through source config - - current_media = data[self._mime_tensor_name].split('/')[0] - if media is None: - media = current_media - elif media != current_media: - logger.error( - f"Mixed media types are not supported in a single batch, " - f"got {media} and {current_media}" - ) - return - - # validate the media type - if media not in self._in_pools: - if media == "image": - logger.error("TYPE_CUSTOM_DS_IMAGE input must be added to the pipeline for image support") - elif media == "video": - logger.error("TYPE_CUSTOM_DS_MEDIA_URL input must be added to the pipeline for video support") - else: - logger.error("Unknown media type : ", media) - return - - # submit the data to the pipeline which supports the media type - indices = self._in_pools[media].submit(in_data_list) - # collect the results - while True: - # TODO: timeout should be runtime configurable - results = self._outputs[media].collect(indices, timeout=self._inference_timeout) - if not results: - logger.info("DeepstreamBackend: No more data from this batch") - break - out_data_list = [] - for result in results: - out_data = dict() - for o in self._output_names: - if o in result: - out_data[o] = result[o] - else: - out_data[o] = None - out_data_list.append(out_data) - yield out_data_list if explicit_batch else out_data_list[0] - # No consecutive inference results for image - if media == "image": - break - - def stop(self): - for input_pool in self._in_pools.values(): - input_pool.stop("Finalized") - for pipeline in self._pipelines.values(): - pipeline.stop() - pipeline.wait() - self._in_pools.clear() - self._pipelines.clear() - super().stop() - - def __del__(self): - self.stop() - - def _generate_engine_name(self, config_path: str, device_id: int, batch_size: int): - def network_mode_to_string(network_mode: int): - if network_mode == 0: - return "fp32" - elif network_mode == 1: - return "int8" - elif network_mode == 2: - return "fp16" - else: - return "" - network_mode = "fp16" - onnx_file = "model.onnx" - with open(config_path, 'r') as f: - config = yaml.safe_load(f) - if not "property" in config: - return None - property = config["property"] - if not "onnx-file" in property: - return None - onnx_file = property["onnx-file"] - if "network-mode" in property: - mode = network_mode_to_string(property["network-mode"]) - if mode: - network_mode = mode - engine_file = f"{onnx_file}_b{batch_size}_gpu{device_id}_{network_mode}.engine" - return os.path.join(self._model_home, engine_file) - - - def _correct_config_paths(self, config_paths: List[str]) -> List[str]: - if not config_paths: - return [] - for i, path in enumerate(config_paths): - if not os.path.isabs(path): - config_paths[i] = os.path.join(self._model_home, path) - return config_paths diff --git a/tools/inference_builder/templates/backend/dummy.jinja.py b/tools/inference_builder/templates/backend/dummy.jinja.py deleted file mode 100644 index b4ff1f1a..00000000 --- a/tools/inference_builder/templates/backend/dummy.jinja.py +++ /dev/null @@ -1,107 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -import numpy as np - -class DummyBackend(ModelBackend): - """Python TensorRT Backend from polygraph""" - def __init__(self, model_config:Dict, model_home: str, device_id: int=0): - super().__init__(model_config, model_home, device_id) - self._model_name = model_config["name"] - self._input_config = [i for i in model_config['input']] - self._output_config = [o for o in model_config['output']] - self._params = model_config["parameters"] if "parameters" in model_config else {} - n_workers = self._params.get("thread_concurrency", 0) - # enable thread pool for concurrent inference - self._thread_pool = ThreadPoolExecutor(max_workers=n_workers) if n_workers > 0 else None - logger.info(f"DummyBackend created for {self._model_name} to generate {[o['name'] for o in self._output_config]}") - - def __call__(self, *args, **kwargs): - def generate_sync(in_data): - for _ in in_data: - yield self._generate_dummy_data() - - def generate_async(in_data): - return [self._generate_dummy_data() for _ in in_data] - - in_data = list(args) if args else [kwargs] - if self._thread_pool is not None: - return self._thread_pool.submit(generate_async, in_data) - else: - return generate_sync(in_data) - - def _generate_dummy_data(self): - dummy_data = {} - for config in self._output_config: - name = config['name'] - dims = config['dims'] - data_type = config.get('data_type', 'TYPE_FP32') - - # Generate random data based on type with correct numpy dtype - if data_type == 'TYPE_BOOL': - data = np.random.choice([True, False], size=dims).astype(np.bool_) - elif data_type == 'TYPE_INT8': - data = np.random.randint(-128, 127, size=dims, dtype=np.int8) - elif data_type == 'TYPE_INT16': - data = np.random.randint(-32768, 32767, size=dims, dtype=np.int16) - elif data_type == 'TYPE_INT32': - data = np.random.randint(-100, 100, size=dims, dtype=np.int32) - elif data_type == 'TYPE_INT64': - data = np.random.randint(-100, 100, size=dims, dtype=np.int64) - elif data_type == 'TYPE_UINT8': - data = np.random.randint(0, 255, size=dims, dtype=np.uint8) - elif data_type == 'TYPE_UINT16': - data = np.random.randint(0, 65535, size=dims, dtype=np.uint16) - elif data_type == 'TYPE_UINT32': - data = np.random.randint(0, 100, size=dims, dtype=np.uint32) - elif data_type == 'TYPE_UINT64': - data = np.random.randint(0, 100, size=dims, dtype=np.uint64) - elif data_type == 'TYPE_FP16': - data = np.random.randn(*dims).astype(np.float16) - elif data_type == 'TYPE_FP32': - data = np.random.randn(*dims).astype(np.float32) - elif data_type == 'TYPE_FP64': - data = np.random.randn(*dims).astype(np.float64) - elif 'TYPE_STRING' in data_type or 'TYPE_BYTES' in data_type: - # Generate random strings - flat_size = np.prod(dims) if dims else 1 - data = np.array([''.join(np.random.choice(list('abcdefghijklmnopqrstuvwxyz0123456789'), size=10)) - for _ in range(flat_size)]).reshape(dims) if dims else np.array(['random_str']) - else: - # Default to FP32 for unknown types - data = np.random.randn(*dims).astype(np.float32) - - dummy_data[name] = data - return dummy_data - - def _valicate_inputs(self, data): - i_names = [i['name'] for i in self._input_config] - i_shapes = {i['name']: i['dims'] for i in self._input_config} - i_types = {i['name']: i['data_type'] for i in self._input_config} - for name, tensor in data.items(): - if name not in i_names: - raise ValueError(f"Input {name} not found in the input config") - if len(tensor.shape) != len(i_shapes[name]): - raise ValueError(f"Input {name} has invalid shape: {tensor.shape}") - for i, s in enumerate(tensor.shape): - - if i_shapes[name][i] != -1 and s != i_shapes[name][i]: - raise ValueError(f"Input {name} has invalid shape: {tensor.shape}") - if isinstance(tensor, np.ndarray) and tensor.dtype != np_datatype_mapping[i_types[name]]: - raise ValueError(f"Input {name} has invalid type: {tensor.dtype}") - if isinstance(tensor, torch.Tensor) and tensor.dtype != torch_datatype_mapping[i_types[name]]: - raise ValueError(f"Input {name} has invalid type: {tensor.dtype}") diff --git a/tools/inference_builder/templates/backend/polygraphy.jinja.py b/tools/inference_builder/templates/backend/polygraphy.jinja.py deleted file mode 100644 index 06bac46d..00000000 --- a/tools/inference_builder/templates/backend/polygraphy.jinja.py +++ /dev/null @@ -1,50 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} -from polygraphy.backend.common import BytesFromPath -from polygraphy.backend.trt import EngineFromBytes, TrtRunner - -class PolygraphBackend(ModelBackend): - """Python TensorRT Backend from polygraph""" - def __init__(self, model_config:Dict, model_home: str, device_id: int=0): - super().__init__(model_config, model_home, device_id) - self._model_name = model_config["name"] - self._output_names = [o['name'] for o in model_config['output']] - - logger.debug(f"PolygraphBackend created for {self._model_name} to generate {self._output_names}") - if "parameters" not in model_config or "tensorrt_engine" not in model_config["parameters"]: - raise("PolygraphBackend requires a path to tensorrt_engine") - engine_file = model_config["parameters"]["tensorrt_engine"] - if not os.path.isabs(engine_file): - engine_file = os.path.join(self._model_home, engine_file) - engine = EngineFromBytes(BytesFromPath(engine_file)) - self._trt_runner = TrtRunner(engine) - self._trt_runner.activate() - logger.info(f"TensorRT runtime created from {engine_file}") - - - def __call__(self, *args, **kwargs): - in_data = stack_tensors_in_dict(args) if args else dict(kwargs) - for k, v in in_data.items(): - if isinstance(v, np.ndarray): - in_data[k] = torch.from_numpy(v).to(self._device_id) - result = self._trt_runner.infer(in_data) - if not all([key in result for key in self._output_names]): - logger.error(f"Not all the expected output in {self._output_names} are not found in the result") - return - o_data = { o: result[o] for o in self._output_names} - yield o_data - diff --git a/tools/inference_builder/templates/backend/pytorch.jinja.py b/tools/inference_builder/templates/backend/pytorch.jinja.py deleted file mode 100644 index 62212919..00000000 --- a/tools/inference_builder/templates/backend/pytorch.jinja.py +++ /dev/null @@ -1,41 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -import importlib - -class PytorchBackend(ModelBackend): - """Pytorch Backend to run models from Huggingface""" - def __init__(self, model_config:Dict, model_home: str, device_id: int=0): - super().__init__(model_config, model_home, device_id) - self._model_name = model_config["name"] - self._device = f"cuda:{device_id}" - self._output_names = [o["name"] for o in model_config["output"]] - self._model_class = model_config["parameters"].get("model_class", "AutoModelForCausalLM") - self._module = importlib.import_module("transformers") - model_class = getattr(self._module, self._model_class) - logger.info(f"Loading pre-trained model {self._model_name} of type {self._model_class} from {self._model_home}") - self._model = model_class.from_pretrained(self._model_home, torch_dtype="auto", device_map="auto") - self._model.to(self._device) - logger.info(f"Model {self._model_name} loaded from {self._model_home}") - - def __call__(self, *args, **kwargs): - in_data_list = args if args else [kwargs] - for in_data in in_data_list: - result = self._model.generate(**in_data) - if len(self._output_names) != len(result): - raise ValueError(f"Number of output names ({len(self._output_names)}) does not match the number of output tensors ({len(result)})") - yield {self._output_names[i]: tensor for i, tensor in enumerate(result)} diff --git a/tools/inference_builder/templates/backend/tensorrtllm.jinja.py b/tools/inference_builder/templates/backend/tensorrtllm.jinja.py deleted file mode 100644 index 6cf8a661..00000000 --- a/tools/inference_builder/templates/backend/tensorrtllm.jinja.py +++ /dev/null @@ -1,199 +0,0 @@ -from typing import List, Dict -from lib.inference import ModelBackend -import tensorrt_llm -from tensorrt_llm.runtime import Session, TensorInfo -import tensorrt as trt -import numpy -import os -import json -def trt_dtype_to_torch(dtype): - ''' - Convert TRT data type to PyTorch data type - ''' - if dtype == trt.float16: - return torch.float16 - elif dtype == trt.float32: - return torch.float32 - elif dtype == trt.int32: - return torch.int32 - else: - raise TypeError("%s is not supported" % dtype) - -def get_trt_dtype(dtype): - if dtype == torch.float16: - return trt.float16 - elif dtype == torch.float32: - return trt.float32 - elif dtype == torch.int32: - return trt.int32 - else: - raise TypeError("%s is not supported" % dtype) - -class TensorRTSession: - def __init__(self, stream, device, engine_file, input_dtype): - self._stream = stream - self._device = device - self._input_dtype = input_dtype - torch.cuda.set_stream(self._stream) - logger.info(f"Loading TensorRT Engine from {engine_file}...") - with open(engine_file, 'rb') as f: - engine_buffer = f.read() - self._trt_session = Session.from_serialized_engine(engine_buffer) - logger.info("TensorRT Engine loaded") - - def infer(self, in_data: Dict): - tensor_infos = [] - for key in in_data: - tensor = in_data[key] - if isinstance(tensor, numpy.ndarray): - tensor = torch.from_numpy(tensor).to(self._device) - if not isinstance(tensor, torch.Tensor): - logger.error(f"Input tensor must be a numpy array or a torch tensor, but got {type(tensor)}") - return {} - dtype = self._input_dtype[key] - in_data[key] = tensor.to(dtype=dtype) - tensor_infos.append(TensorInfo(key, get_trt_dtype(dtype), tensor.shape)) - output_info = self._trt_session.infer_shapes(tensor_infos) - trt_out = { t.name: torch.empty(tuple(t.shape), dtype=trt_dtype_to_torch(t.dtype), device=tensor.device) for t in output_info } - ok = self._trt_session.run(in_data, trt_out, self._stream.cuda_stream) - assert ok, "Runtime execution failed for vision encoder session" - self._stream.synchronize() - # TODO associate trt output names with triton output names - return trt_out - - -class TensorRTLLMBackend(ModelBackend): - """Python TensorRT Backend""" - def __init__(self, model_config:Dict, model_home: str, device_id: int=0): - super().__init__(model_config, model_home, device_id) - self._model_name = model_config["name"] - self._output_names = [o['name'] for o in model_config['output']] - self._device = f"cuda:{device_id}" - self._stream = torch.cuda.Stream(self._device) - self._params = model_config["parameters"] if "parameters" in model_config else {} - self._inputs = model_config["input"] if "input" in model_config else [] - llm_backend = model_config["backend"].split("/")[-1] - - if not self._inputs: - raise ValueError("No input tensors found in model config") - - if llm_backend == "pytorch": - from tensorrt_llm import SamplingParams - from tensorrt_llm import LLM - from tensorrt_llm.llmapi import (DraftTargetDecodingConfig, EagleDecodingConfig, - KvCacheConfig, MTPDecodingConfig, - NGramDecodingConfig, TorchCompileConfig) - - in_names = [i['name'] for i in model_config['input']] - if "max_tokens" not in in_names or "temperature" not in in_names or "top_p" not in in_names or "top_k" not in in_names: - raise ValueError("max_tokens, temperature, top_p, and top_k must be provided for tensorrtllmpytorch backend") - self._trt_session = None - default_kv_cache_config = { - "enable_block_reuse": True - } - if "kv_cache_config" in self._params: - default_kv_cache_config.update(self._params.pop("kv_cache_config")) - kv_cache_config = KvCacheConfig(**default_kv_cache_config) - - spec_decode_algo = self._params.pop("spec_decode_algo", None) - if spec_decode_algo is not None: - spec_decode_algo = spec_decode_algo.upper() - - if spec_decode_algo == 'MTP': - spec_config = MTPDecodingConfig( - num_nextn_predict_layers=self._params.pop("spec_decode_nextn", 1), - use_relaxed_acceptance_for_thinking=self._params.pop("use_relaxed_acceptance_for_thinking", False), - relaxed_topk=self._params.pop("relaxed_topk", 1), - relaxed_delta=self._params.pop("relaxed_delta", 0.0)) - elif spec_decode_algo == "EAGLE3": - spec_config = EagleDecodingConfig( - max_draft_len=self._params.pop("spec_decode_nextn", 1), - pytorch_weights_path=self._params.pop("draft_model_dir", None), - eagle3_one_model=self._params.pop("use_one_model", None)) - elif spec_decode_algo == "DRAFT_TARGET": - spec_config = DraftTargetDecodingConfig( - max_draft_len=self._params.pop("spec_decode_nextn", 1), - pytorch_weights_path=self._params.pop("draft_model_dir", None)) - elif spec_decode_algo == "NGRAM": - spec_config = NGramDecodingConfig( - prompt_lookup_num_tokens=self._params.pop("spec_decode_nextn", 1), - max_matching_ngram_size=self._params.pop("max_matching_ngram_size", 1), - is_keep_all=True, - is_use_oldest=True, - is_public_pool=True, - ) - else: - spec_config = None - - use_torch_compile = self._params.pop("use_torch_compile", False) - torch_compile_config = TorchCompileConfig( - enable_fullgraph=True, - enable_inductor=True, - enable_piecewise_cuda_graph=self._params.pop("use_piecewise_cuda_graph", False) - ) if use_torch_compile else None - - self._llm = LLM( - model=self._model_home, - backend="pytorch", - kv_cache_config=kv_cache_config, - speculative_config=spec_config, - torch_compile_config=torch_compile_config, - **self._params - ) - self._sample_params_cls = SamplingParams - self._trtllm_input_name = next((i["name"] for i in self._inputs if i["data_type"] == "TYPE_CUSTOM_VLM_INPUT"), None) - if self._trtllm_input_name is None: - raise ValueError("TYPE_CUSTOM_VLM_INPUT must be provided for tensorrtllm/pytorch backend") - - logger.debug(f"TensorRTLLMBackend with pytorch created for {self._model_name} to generate {self._output_names}") - else: - self._llm = None - if "tensorrt_engine" not in model_config: - raise("TensorRTLLM backend requires a path to tensorrt_engine") - engine_file = model_config["parameters"]["tensorrt_engine"] - if not os.path.isabs(engine_file): - engine_file = os.path.join(self._model_home, engine_file) - input_dtype = { i['name']: torch_datatype_mapping[i['data_type']] for i in model_config['input']} - self._trt_session = TensorRTSession(self._stream, self._device, engine_file, input_dtype) - logger.debug(f"TensorRTBackend created for {self._model_name} to generate {self._output_names}") - - def __call__(self, *args, **kwargs): - if self._llm is not None: - params = args[0] if args else kwargs - sample_params = self._sample_params_cls( - max_tokens=params.get("max_tokens", 1024), - temperature=params.get("temperature", 0.7), - top_p=params.get("top_p", 0.95), - top_k=params.get("top_k", 0) - ) - inputs = [] - if args: - for i in args: - if self._trtllm_input_name in i: - input = i[self._trtllm_input_name] - inputs.extend(input) if isinstance(input, list) else inputs.append(input) - else: - logger.warning(f"TensorRTLLMBackend: Input {self._trtllm_input_name} not found in {i}") - elif kwargs: - if self._trtllm_input_name in kwargs: - inputs = kwargs[self._trtllm_input_name] - else: - logger.warning(f"TensorRTLLMBackend: Input {self._trtllm_input_name} not found in {kwargs}") - else: - logger.warning("TensorRTLLMBackend: No inputs provided") - if not inputs: - return - - results = self._llm.generate(inputs, sample_params) - yield [{"outputs": r} for r in results] - elif self._trt_session is not None: - # TensorRT LLM uses implicit batching, so we need to stack the input tensors - in_data = stack_tensors_in_dict(args) if args else dict(kwargs) - yield self._trt_session.infer(in_data) - else: - raise Exception("TensorRTLLM backend is not correctly initialized") - - - - - diff --git a/tools/inference_builder/templates/backend/triton.jinja.py b/tools/inference_builder/templates/backend/triton.jinja.py deleted file mode 100644 index 64c8a081..00000000 --- a/tools/inference_builder/templates/backend/triton.jinja.py +++ /dev/null @@ -1,180 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -{% if server_type == "triton" %} - -class TritonBackend(ModelBackend): - """Triton Python Backend""" - def __init__(self, model_config: Dict, model_home: str): - logger.debug(f"model_config: {model_config}, model_home: {model_home}") - super().__init__(model_config, model_home) - self._model_name = model_config["name"] - self._input_names = [i['name'] for i in model_config['input']] - self._output_names = [o['name'] for o in model_config['output']] - logger.debug(f"TritonBackend created for {self._model_name} with inputs {self._input_names} and outputs {self._output_names}") - - def __call__(self, *args, **kwargs): - in_data_list = args if args else [kwargs] - input_config = self._model_config["input"] - # to determine if we need to stack the input, TODO: below logic needs be more generic - need_stack = False - for in_data in in_data_list: - for key, value in in_data.items(): - input_config = next((i for i in self._model_config["input"] if i['name'] == key), None) - if input_config is None: - logger.error(f"Unexpected input: {key}") - continue - expected_dims = len(input_config["dims"]) - if expected_dims == len(value.shape) + 1: - need_stack = True - break - if need_stack: - in_data_list = [stack_tensors_in_dict(in_data_list)] - for in_data in in_data_list: - tensors = [] - for k in in_data: - tensor = in_data[k] - batched = "max_batch_size" in self._model_config and self._model_config["max_batch_size"] > 0 - if isinstance(tensor, np.ndarray): - tensor = pb_utils.Tensor(k, np.expand_dims(tensor, 0)) if batched else pb_utils.Tensor(k, tensor) - elif isinstance(tensor, torch.Tensor): - if batched: - tensor = tensor.unsqueeze(0) - tensor = pb_utils.Tensor.from_dlpack(k, torch.utils.dlpack.to_dlpack(tensor)) - elif hasattr(tensor, "__dlpack__") and hasattr(tensor, "__dlpack_device__"): - tensor = pb_utils.Tensor.from_dlpack(k, tensor) - else: - yield Error(message="Unsupported input tensor format") - return - tensors.append(tensor) - - llm_request = pb_utils.InferenceRequest( - model_name = self._model_name, - requested_output_names = self._output_names, - inputs = tensors - ) - finish_reason = "done" - for idx, response in enumerate(llm_request.exec(decoupled=True)): - expected = {n: None for n in self._output_names} - if response.has_error(): - yield Error(message=f"{response.error().message()}, stream_id={idx}") - if not response.output_tensors(): - continue - for name in expected: - config = next((c for c in self._model_config['output'] if c['name'] == name), None) - dims = config['dims'] - output = pb_utils.get_output_tensor_by_name(response, name) - if not output: - continue - if pb_utils.Tensor.is_cpu(output): - tensor = output.as_numpy() - if tensor.size != 0: - expected[name] = np.squeeze(tensor, 0) if len(tensor.shape) == (len(dims)+1) else tensor - else: - tensor = torch.utils.dlpack.from_dlpack(output.to_dlpack()) - if tensor.numel() != 0: - expected[name] = torch.squeeze(tensor, 0) if len(tensor.shape) == (len(dims)+1) else tensor - logger.debug(f"TritonBackend saved inference results to: {expected}") - if all([expected[k] is not None for k in expected]): - yield expected - logger.info(f"Infernece with TritonBackend {self._model_name} accomplished") - -{% else %} - -import tritonclient.http as httpclient -from tritonclient.utils import * - -class TritonBackend(ModelBackend): - """Triton Python Backend""" - def __init__(self, model_config: Dict, model_home: str): - logger.debug(f"model_config: {model_config}") - super().__init__(model_config, model_home) - self._model_name = model_config["name"] - self._input_names = [i['name'] for i in model_config['input']] - self._output_names = [o['name'] for o in model_config['output']] - - # Wait for Triton server to be ready - max_retries = 60 - retry_interval = 1 - for attempt in range(max_retries): - try: - with httpclient.InferenceServerClient("localhost:8000") as client: - if client.is_server_ready(): - logger.info(f"Triton server is ready after {attempt + 1} attempt(s)") - break - except Exception as e: - logger.debug(f"Attempt {attempt + 1}/{max_retries}: Triton server not ready yet - {e}") - if attempt < max_retries - 1: - import time - time.sleep(retry_interval) - else: - logger.error(f"Triton server did not become ready after {max_retries} attempts") - raise RuntimeError("Triton server is not ready") - - logger.debug(f"TritonBackend created for {self._model_name} with inputs {self._input_names} and outputs {self._output_names}") - - def __call__(self, *args, **kwargs): - in_data_list = args if args else [kwargs] - input_config = self._model_config["input"] - # to determine if we need to stack the input, TODO: below logic needs be more generic - need_stack = False - for in_data in in_data_list: - for key, value in in_data.items(): - input_config = next((i for i in self._model_config["input"] if i['name'] == key), None) - if input_config is None: - logger.error(f"Unexpected input: {key}") - continue - expected_dims = len(input_config["dims"]) - if expected_dims == len(value.shape) + 1: - need_stack = True - break - if need_stack: - in_data_list = [stack_tensors_in_dict(in_data_list)] - for in_data in in_data_list: - inputs = [] - for k in in_data: - tensor = in_data[k] - batched = "max_batch_size" in self._model_config and self._model_config["max_batch_size"] > 0 - if isinstance(tensor, torch.Tensor): - tensor = tensor.cpu().numpy() - if batched: - tensor = np.expand_dims(tensor, 0) - elif not isinstance(tensor, np.ndarray): - yield Error(message="Unsupported input tensor format") - return - input = httpclient.InferInput(k, tensor.shape, np_to_triton_dtype(tensor.dtype)) - input.set_data_from_numpy(tensor) - inputs.append(input) - outputs = [httpclient.InferRequestedOutput(n) for n in self._output_names] - with httpclient.InferenceServerClient("localhost:8000") as client: - response = client.infer(self._model_name, inputs, request_id=str(1), outputs=outputs) - - result = response.get_response() - expected = {n: None for n in self._output_names} -# if response.has_error(): -# yield Error(message=f"{response.error().message()}, stream_id={idx}") - for name in expected: - config = next((c for c in self._model_config['output'] if c['name'] == name), None) - dims = config['dims'] - output = response.as_numpy(name) - expected[name] = np.squeeze(output, 0) if len(output.shape) == (len(dims)+1) else output - logger.debug(f"TritonBackend saved inference results to: {expected}") - if all([expected[k] is not None for k in expected]): - yield expected - logger.info(f"Inference with TritonBackend {self._model_name} accomplished") - -{% endif %} \ No newline at end of file diff --git a/tools/inference_builder/templates/backend/vllm.jinja.py b/tools/inference_builder/templates/backend/vllm.jinja.py deleted file mode 100644 index 4652e0d5..00000000 --- a/tools/inference_builder/templates/backend/vllm.jinja.py +++ /dev/null @@ -1,202 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -import asyncio, threading, uuid, queue -from asyncio import run_coroutine_threadsafe -from typing import Callable, Any, Optional, List, Dict -from concurrent.futures import Future -from vllm import LLM, SamplingParams - -class VLLMSyncFacade: - """ - Wrapper around AsyncLLMEngine that provides a synchronous interface - for submitting inference requests that can be processed concurrently. - """ - def __init__(self, **engine_kwargs): - self.loop = asyncio.new_event_loop() - self.out_q = queue.Queue(maxsize=1000) - self._ready = threading.Event() - - def runner(): - from vllm.engine.async_llm_engine import AsyncLLMEngine - try: - from vllm.engine.async_llm_engine import AsyncEngineArgs - except ImportError: - from vllm.engine.arg_utils import AsyncEngineArgs - asyncio.set_event_loop(self.loop) - self.engine = AsyncLLMEngine.from_engine_args(AsyncEngineArgs(**engine_kwargs)) - self._ready.set() - self.loop.run_forever() - - threading.Thread(target=runner, daemon=True).start() - self._ready.wait() - logger.info("VLLMSyncFacade: AsyncLLMEngine initialized and ready") - - def submit(self, - prompts: List[Any], - sampling_params: SamplingParams, - result_filter: Callable[[Any], Dict[str, Any]], - job_id_prefix: Optional[str] = None) -> Future: - """ - Submit requests for inference. AsyncEngine processes one prompt at a time, - but can handle multiple concurrent requests with different request_ids. - - Args: - prompts: List of prompts (always a list from __call__) - sampling_params: SamplingParams object for this request - result_filter: Function that takes a result and returns a dict - job_id_prefix: Optional prefix for request IDs - Returns: - Future that resolves to list of filtered outputs (list of dicts) - """ - if not callable(result_filter): - raise ValueError("result_filter must be a callable") - - job_id_prefix = job_id_prefix or f"batch_{uuid.uuid4().hex[:8]}" - - async def _run_single(prompt, request_id): - """Process a single prompt with unique request_id""" - final_output = None - async for out in self.engine.generate(prompt, sampling_params, request_id): - final_output = out - # Apply result_filter to each output - return final_output - - async def _run_all(): - """Submit all prompts concurrently and collect results""" - # Create tasks for all prompts with unique request_ids - tasks = [] - for idx, prompt in enumerate(prompts): - request_id = f"{job_id_prefix}_req{idx}" - logger.debug(f"VLLMSyncFacade: Creating task for request {request_id}") - task = _run_single(prompt, request_id) - tasks.append(task) - - # Run all tasks concurrently and wait for all to complete - results = await asyncio.gather(*tasks, return_exceptions=True) - - # Extract outputs from RequestOutput objects and apply filter - all_outputs = [] - for idx, result in enumerate(results): - if isinstance(result, Exception): - logger.error(f"VLLMSyncFacade: Request {idx} failed: {result}") - # Add empty result for failed request - all_outputs.append({}) - elif result is not None: - all_outputs.append(result_filter(result)) - else: - logger.warning(f"VLLMSyncFacade: Request {idx} returned unexpected result: {result}") - - return all_outputs - - return run_coroutine_threadsafe(_run_all(), self.loop) - -class VLLMBackend(ModelBackend): - """VLLM Backend""" - def __init__(self, model_config:Dict, model_home: str, device_id: int=0): - super().__init__(model_config, model_home, device_id) - self._model_name = model_config["name"] - self._output_names = [o['name'] for o in model_config['output']] - self._params = model_config["parameters"] if "parameters" in model_config else {} - self._inputs = model_config["input"] if "input" in model_config else [] - self._vlm_input_name = next((i["name"] for i in self._inputs if i["data_type"] == "TYPE_CUSTOM_VLM_INPUT"), None) - self._async_mode = self._params.get("async_mode", False) - - llm_kwargs = {} - for key in [ - "tensor_parallel_size", - "gpu_memory_utilization", - "dtype", - "max_model_len", - "max_num_batched_tokens", - "max_num_seqs", - "kv_cache_dtype", - "pipeline_parallel_size", - "max_parallel_loading_workers", - "enforce_eager", - ]: - if key in self._params: - llm_kwargs[key] = self._params.pop(key) - - if self._async_mode: - self._llm = VLLMSyncFacade( - model=model_home, - **llm_kwargs - ) - else: - self._llm = LLM( - model=model_home, - **llm_kwargs - ) - logger.info(f"Model {self._model_name} loaded from {model_home}") - - def extract_outputs(self, result: Any) -> Dict[str, Any]: - """ - Extracts the outputs from the result based on the configured output names - Args: - result: The result object from vLLM generation - Returns: - Dictionary mapping output names to their values - """ - outputs = {n: None for n in self._output_names} - for name in self._output_names: - if hasattr(result, name): - outputs[name] = getattr(result, name) - else: - logger.warning(f"VLLMBackend: Output {name} not found in {result}") - return outputs - - def __call__(self, *args, **kwargs): - def assemble_input(vlm_input_name: str, vlm_input: List[Any], all_input: Dict[str, Any]) -> Any: - if vlm_input_name in all_input: - i = all_input.pop(vlm_input_name) - if isinstance(i, list): - vlm_input.extend(i) - else: - vlm_input.append(i) - else: - logger.warning(f"VLLMBackend: Input {vlm_input_name} not found in {all_input}") - - def generate_sync(inputs, sampling_params): - results = self._llm.generate(inputs, sampling_params) - for result in results: - yield self.extract_outputs(result) - - # Extract inputs and parameters - inputs = [] - params = {} - if args: - for i in args: - assemble_input(self._vlm_input_name, inputs, i) - params = args[0] - elif kwargs: - assemble_input(self._vlm_input_name, inputs, kwargs) - params = kwargs - - # Convert numpy scalars to Python scalars - for key, value in params.items(): - if isinstance(value, np.ndarray) and not value.shape: - params[key] = value.item() - - sampling_params = SamplingParams(**params) - - # Use async facade or sync LLM based on mode - if self._async_mode: - return self._llm.submit(inputs, sampling_params, self.extract_outputs) - else: - return generate_sync(inputs, sampling_params) - diff --git a/tools/inference_builder/templates/client/test_runner.jinja.py b/tools/inference_builder/templates/client/test_runner.jinja.py deleted file mode 100644 index e27c74d0..00000000 --- a/tools/inference_builder/templates/client/test_runner.jinja.py +++ /dev/null @@ -1,165 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -import unittest -import json -import yaml -import os -import sys -import logging -from pathlib import Path - -# Configure logging -logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(levelname)s - %(message)s', - datefmt='%Y-%m-%d %H:%M:%S' -) -logger = logging.getLogger(__name__) - -# # Add builder/validator.py path to Python path -# VALIDATOR_DIR = Path("{{ validator_dir }}") -# if str(VALIDATOR_DIR) not in sys.path: -# sys.path.append(str(VALIDATOR_DIR)) - -# Will load validate.py in the same directory -import validate - -# Common paths relative to test runner location -GENERATED_CLIENT_DIR = Path(__file__).parent / validate.GENERATED_CLIENT_DIR -TEST_CASES_FILE = Path(__file__).parent / validate.TEST_CASES_FILE - -# Setup environment before imports -if not validate.check_client_exists(): - if not validate.setup_environment(GENERATED_CLIENT_DIR): - logger.error("Failed to setup client environment") - sys.exit(1) - -from openapi_client.api.nvidiametropolisinferenceapi_api import NVIDIAMETROPOLISINFERENCEAPIApi -from openapi_client.api_client import ApiClient -from openapi_client.configuration import Configuration -from openapi_client.models.inference_request import InferenceRequest - -class TestInference(unittest.TestCase): - @classmethod - def setUpClass(cls): - """Set up test environment once for all test methods. - - This is a class method because it sets up shared resources (host, api client) - that will be used by all test methods. It runs once before any tests. - """ - cls.host = os.getenv("TEST_HOST", "http://127.0.0.1:8800") - cls.tolerance = float(os.getenv("TEST_TOLERANCE", "1e-5")) - - logger.info("Setting up test environment") - logger.info(f"Server host: {cls.host}") - logger.info(f"Tolerance: {cls.tolerance}") - - with open(TEST_CASES_FILE) as f: - cls.test_cases = yaml.safe_load(f) - logger.info(f"Loaded {len(cls.test_cases)} test cases from {TEST_CASES_FILE}") - - config = Configuration(host=cls.host) - api_client = ApiClient(config) - cls.api = NVIDIAMETROPOLISINFERENCEAPIApi(api_client) - - def setUp(self): - """Set up test fixtures before each test method. - - Instance method because it's specific to each test run. - Creates a logger for the specific test instance. - """ - self.logger = logging.getLogger(f"{__name__}.{self.id()}") - self.logger.info(f"Starting test: {self._testMethodName}") - - def tearDown(self): - """Clean up after each test method. - - Instance method because it's specific to each test run. - """ - self.logger.info(f"Completed test: {self._testMethodName}") - - def test_health_check(self): - """Test health check endpoint""" - # self.logger.info("Running health check...") - # response = self.api.health_ready_v1_health_ready_get_with_http_info() - # self.assertEqual(response.status_code, 200) - # self.assertEqual(response.data["status"], "ready") - # self.logger.info("Health check successful") - self.logger.info(f"Skip health check for {self.host}") - - def test_inference(self): - """Test inference with pre-built requests""" - - for test in self.test_cases: - with self.subTest(test=test["name"]): - test_logger = logging.getLogger(f"{__name__}.{self.id()}.{test['name']}") - test_logger.info(f"Starting test case: {test['name']}") - try: - # Load pre-built request - request_path = Path(test["request"]) - test_logger.debug(f"Loading request from: {request_path}") - with open(request_path) as f: - request_data = json.load(f) - request = InferenceRequest.from_dict(request_data) - - # Load expected output - expected_path = Path(test["expected"]) - test_logger.debug(f"Loading expected output from: {expected_path}") - with open(expected_path) as f: - expected = json.load(f) - - # Run inference - test_logger.info("Executing inference request...") - response = self.api.inference(request) - actual = response.to_dict() - - # Compare results - if expected: - test_logger.info("Validating response...") - self.assertTrue( - # TODO: We can template below line for different validators - # validator = {{ my_validator }} - # validator.compare_responses(actual, expected, self.tolerance) - # or make abstract validator class and ask users to implement their own validator - validate.CvValidator.compare_responses(actual, expected, self.tolerance), - f"Test {test['name']}: Response doesn't match expected output under tolerance {self.tolerance}. " - f"Actual: {actual}, Expected: {expected}" - ) - else: - test_logger.info("No expected output, skipping validation") - test_logger.info(f"Test case '{test['name']}' passed successfully") - - except Exception as e: - test_logger.error(f"Test case '{test['name']}' failed: {str(e)}") - raise - -if __name__ == '__main__': - # Create a test runner that outputs both to console and file - runner = unittest.TextTestRunner( - verbosity=2, # Increased verbosity - stream=sys.stdout, # Output to console - ) - - # Create test suite - suite = unittest.TestLoader().loadTestsFromTestCase(TestInference) - - # Run tests - result = runner.run(suite) - - # Exit with appropriate code so the test framework detects failures - sys.exit(0 if result.wasSuccessful() else 1) \ No newline at end of file diff --git a/tools/inference_builder/templates/common/config.jinja.py b/tools/inference_builder/templates/common/config.jinja.py deleted file mode 100644 index 317bf6ff..00000000 --- a/tools/inference_builder/templates/common/config.jinja.py +++ /dev/null @@ -1,89 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} -{{ license }} - -import os -import re -from omegaconf import OmegaConf - - -def _resolve_env_vars(config_dict): - """ - Recursively resolve environment variable references in the config. - - Supports the format: $ENV_VAR|default_value - If ENV_VAR exists, uses its value. Otherwise, uses default_value. - - Type conversion is performed based on the default value: - - "true"/"false" (case-insensitive) -> bool - - numeric strings -> int or float - - everything else -> string - """ - env_pattern = re.compile(r'^\$([A-Za-z_][A-Za-z0-9_]*)\|(.*)$') - - def convert_value(value_str): - """Convert string value to appropriate type.""" - # Handle boolean strings - if value_str.lower() in ('true', 'false'): - return value_str.lower() == 'true' - - # Try to convert to int - try: - if '.' not in value_str: - return int(value_str) - except ValueError: - pass - - # Try to convert to float - try: - return float(value_str) - except ValueError: - pass - - # Return as string - return value_str - - def process_value(value): - """Process a single value for environment variable substitution.""" - if isinstance(value, str): - match = env_pattern.match(value) - if match: - env_var = match.group(1) - default_value = match.group(2) - - # Check if environment variable exists - if env_var in os.environ: - return convert_value(os.environ[env_var]) - else: - return convert_value(default_value) - elif isinstance(value, dict): - return {k: process_value(v) for k, v in value.items()} - elif isinstance(value, list): - return [process_value(item) for item in value] - - return value - - return process_value(config_dict) - - -# Load the base configuration -_base_config = OmegaConf.create("""{{ config }}""") - -# Convert to dict, resolve environment variables, and convert back to OmegaConf -_config_dict = OmegaConf.to_container(_base_config) -_resolved_config = _resolve_env_vars(_config_dict) -global_config = OmegaConf.create(_resolved_config) \ No newline at end of file diff --git a/tools/inference_builder/templates/common/custom.__init__.jinja.py b/tools/inference_builder/templates/common/custom.__init__.jinja.py deleted file mode 100644 index 2ff619e8..00000000 --- a/tools/inference_builder/templates/common/custom.__init__.jinja.py +++ /dev/null @@ -1,50 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -import importlib -from pathlib import Path -from lib.utils import get_logger - -logger = get_logger(__name__) - -custom_module_table = { - {% for item in classes %} - "{{ item.name }}" : { - "module": "{{ item.module }}", - "class": "{{ item.class_name }}" - }{% if not loop.last %},{% endif %} - {% endfor %} -} - -def create_instance(name:str, config): - if not name in custom_module_table: - logger.error(f"{name} not found") - return None - module_name = custom_module_table[name]["module"] - class_name = custom_module_table[name]["class"] - try: - # Dynamically import the module - module = importlib.import_module(f".{module_name}", __package__) - - # Get the class from the module - cls = getattr(module, class_name) - - # Instantiate and return the class object - return cls(config) - except Exception as e: - logger.error(f"Error creating class '{class_name}' from module '{module_name}': {e}") - return None \ No newline at end of file diff --git a/tools/inference_builder/templates/generic/model.jinja.py b/tools/inference_builder/templates/generic/model.jinja.py deleted file mode 100644 index 4098fc94..00000000 --- a/tools/inference_builder/templates/generic/model.jinja.py +++ /dev/null @@ -1,227 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} -{{ license }} - -from config import global_config -from lib.inference import * -from lib.utils import * -from lib.errors import ErrorFactory -from omegaconf import OmegaConf -import json -import os -from typing import List, Dict -import asyncio -import numpy as np -import torch -from pathlib import Path -import dataclasses - -logger = get_logger(__name__) - -{% for backend in backends %} -{{ backend }} -{% endfor %} - -class GenericInference(InferenceBase): - """The class that drives a generic inference flow""" - - def _create_backend(self, backend_spec: List[str], model_config: Dict, model_home: str): - if backend_spec[0] == 'triton': - backend_class = TritonBackend - elif backend_spec[0] == 'deepstream': - backend_class = DeepstreamBackend - elif backend_spec[0] == 'polygraphy': - backend_class = PolygraphBackend - elif backend_spec[0] == 'tensorrtllm': - backend_class = TensorRTLLMBackend - elif backend_spec[0] == 'dummy': - backend_class = DummyBackend - elif backend_spec[0] == 'pytorch': - backend_class = PytorchBackend - elif backend_spec[0] == 'vllm': - backend_class = VLLMBackend - else: - return None - return backend_class(model_config, model_home) - - async def execute(self, request): - """ execute a list of requests""" - if self._async_dispatcher is None: - self._async_dispatcher = AsyncDispatcher(self._collector, loop=asyncio.get_running_loop()) - - logger.debug(f"Received request {request}") - if not self._inject_tensors(request): - error = ErrorFactory.create( - "ERR_DF_006", - caller=self, - input_data={"request_keys": list(request.keys())}, - tensor_names=[n for i in self._inputs for n in i.in_names] - ) - error.log(logger) - InferenceBase._export_errors() - yield error - return - - async_queue = asyncio.Queue() - self._async_dispatcher.append_async_queue(async_queue) - # Wait for all the results from one inference request - while not self._stop_event.is_set(): - try: - logger.debug("Waiting for tensors from async queue") - result = await async_queue.get() - if isinstance(result, Stop): - logger.info(f"Got Stop: {result.reason}") - return - if isinstance(result, Error): - InferenceBase._export_errors() - else: - logger.debug(f"Got result: {result}") - # post-process the data - result = self._post_process(result) - # Yield control to allow other requests to be processed - await asyncio.sleep(0) - yield result - except Exception as e: - error = ErrorFactory.from_exception(e, caller=self) - error.log(logger) - yield error - - def exec_sync(self, request): - """ execute a list of requests synchronously""" - from queue import Empty - - logger.debug(f"Received request {request}") - if not self._inject_tensors(request): - error = ErrorFactory.create( - "ERR_DF_006", - caller=self, - input_data={"request_keys": list(request.keys())}, - tensor_names=[n for i in self._inputs for n in i.in_names] - ) - error.log(logger) - yield error - return - - # Wait for all the results from one inference request - while not self._stop_event.is_set(): - try: - logger.debug("Waiting for tensors from collector") - result = self._collector.collect() - if isinstance(result, Stop): - logger.info(f"Got Stop: {result.reason}") - return - if isinstance(result, Error): - InferenceBase._export_errors() - else: - logger.debug(f"Got result: {result}") - # post-process the data - result = self._post_process(result) - yield result - except Empty: - continue - except Exception as e: - error = ErrorFactory.from_exception(e, caller=self) - error.log(logger) - yield error - - def finalize(self): - self._stop_event.set() - super().finalize() - - def _inject_tensors(self, request: Dict) -> bool: - """Inject tensors into the input flows""" - injected = False - matched = [[n for n in i.in_names if n in request and request[n]] for i in self._inputs] - reshuffled = sorted(range(len(matched)), key=lambda x: len(matched[x]), reverse=True) - for i in reshuffled: - input_flow = self._inputs[i] - tensors = {} - # select and transform the tensors for the input - for n in matched[i]: - if n in request: - tensors[n] = np.array(request.pop(n)) - if tensors: - logger.debug(f"Injecting tensors {tensors}") - input_flow.put(tensors) - input_flow.put(Stop(reason="end")) - injected = True - return injected - - def _post_process(self, data: Dict): - processed = {k: v for k, v in data.items()} - data_type_names = { i['name']: i['data_type'] for i in self._output_config} - for processor in self._processors: - if not all([i in data for i in processor.input]): - logger.warning(f"Input settings invalid for the processor: {processor.name}") - continue - input = [processed.pop(i) for i in processor.input] - logger.debug(f"Post-processor invoked with given input {input}") - output = processor(*input) - logger.debug(f"Post-processor generated output {output}") - if len(output) != len(processor.output): - logger.warning(f"Number of postprocessing output doesn't match the configuration, expecting {len(processor.output)}, while getting {len(output)}") - continue - # update as processed - for key, value in zip(processor.output, output): - processed[key] = value - # correct data type - if key not in data_type_names: - logger.warning(f"Invalid output parsed: {key}") - continue - data_type = data_type_names[key] - if isinstance(value, np.ndarray): - data_type = np_datatype_mapping[data_type] - if value.dtype != data_type: - processed[key] = value.astype(data_type) - elif isinstance(value, torch.Tensor): - data_type = torch_datatype_mapping[data_type] - if value.dtype != data_type: - processed[key] = value.to(data_type) - else: - processed[key] = value - # convert numpy and torch tensors to list for server to process - def convert_to_list(v, is_string_type): - """Convert numpy/torch tensor to list with proper string decoding""" - if isinstance(v, np.ndarray): - if is_string_type and (np.issubdtype(v.dtype, np.bytes_) or np.issubdtype(v.dtype, np.str_) or v.dtype == np.object_): - # Decode string arrays - flat_list = v.flatten().tolist() - decoded = [i.decode("utf-8", "ignore") if isinstance(i, bytes) else str(i) for i in flat_list] - return np.array(decoded).reshape(v.shape).tolist() - else: - return v.tolist() - elif isinstance(v, torch.Tensor): - if v.dtype == torch.uint8 and is_string_type: - # Decode byte tensors as strings - flat_list = v.flatten().tolist() - decoded = [bytes([i]).decode("utf-8", "ignore") if isinstance(i, int) else str(i) for i in flat_list] - return decoded if v.dim() == 1 else np.array(decoded).reshape(v.shape).tolist() - else: - return v.tolist() - elif dataclasses.is_dataclass(v): - return dataclasses.asdict(v) - else: - return v - - for key, value in processed.items(): - is_string_type = key in data_type_names and 'TYPE_STRING' in data_type_names[key] - if isinstance(value, list): - # this is a batch of data - processed[key] = [convert_to_list(v, is_string_type) for v in value] - else: - processed[key] = convert_to_list(value, is_string_type) - return processed diff --git a/tools/inference_builder/templates/responder/add_file.jinja.py b/tools/inference_builder/templates/responder/add_file.jinja.py deleted file mode 100644 index 282cdf2d..00000000 --- a/tools/inference_builder/templates/responder/add_file.jinja.py +++ /dev/null @@ -1,27 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - - async def {{ name }}(self, request, file): - if not file: - return 400, "No file provided" - try: - asset = self._asset_manager.save_file(file.file, file.filename, file.content_type) - except Exception as e: - return 500, str(e) - response = self.process_response("{{ name }}", request, asset.to_dict()) - return 200, response - diff --git a/tools/inference_builder/templates/responder/add_live_stream.jinja.py b/tools/inference_builder/templates/responder/add_live_stream.jinja.py deleted file mode 100644 index 2bfe8403..00000000 --- a/tools/inference_builder/templates/responder/add_live_stream.jinja.py +++ /dev/null @@ -1,32 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - - async def {{ name }}(self, request, body, **kwargs): - stream_info = self.process_request("{{ name }}", body) - if "url" not in stream_info or not stream_info["url"]: - return 400, "No url provided" - try: - asset = self._asset_manager.add_live_stream( - stream_info["url"], - stream_info["description"], - stream_info["username"], - stream_info["password"]) - except Exception as e: - return 500, str(e) - response = self.process_response("{{ name }}", request, asset.to_dict()) - return 200, response - diff --git a/tools/inference_builder/templates/responder/del_file.jinja.py b/tools/inference_builder/templates/responder/del_file.jinja.py deleted file mode 100644 index 0ed61407..00000000 --- a/tools/inference_builder/templates/responder/del_file.jinja.py +++ /dev/null @@ -1,25 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - - async def {{ name }}(self, request, **kwargs): - asset_id = list(kwargs.values())[0] - try: - status = self._asset_manager.delete_asset(asset_id) - except Exception as e: - return 500, str(e) - response = self.process_response("{{ name }}", request, {"status": status}) - return 200, response diff --git a/tools/inference_builder/templates/responder/del_live_stream.jinja.py b/tools/inference_builder/templates/responder/del_live_stream.jinja.py deleted file mode 100644 index 0ed61407..00000000 --- a/tools/inference_builder/templates/responder/del_live_stream.jinja.py +++ /dev/null @@ -1,25 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - - async def {{ name }}(self, request, **kwargs): - asset_id = list(kwargs.values())[0] - try: - status = self._asset_manager.delete_asset(asset_id) - except Exception as e: - return 500, str(e) - response = self.process_response("{{ name }}", request, {"status": status}) - return 200, response diff --git a/tools/inference_builder/templates/responder/healthy_ready.jinja.py b/tools/inference_builder/templates/responder/healthy_ready.jinja.py deleted file mode 100644 index ef32a650..00000000 --- a/tools/inference_builder/templates/responder/healthy_ready.jinja.py +++ /dev/null @@ -1,22 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - - async def {{ name }}(self, request, **kwargs): - if super().healthy_ready(): - return 200, "Ready" - else: - return 503, "Service Unavailable" diff --git a/tools/inference_builder/templates/responder/infer.jinja.py b/tools/inference_builder/templates/responder/infer.jinja.py deleted file mode 100644 index 2d1b5f4b..00000000 --- a/tools/inference_builder/templates/responder/infer.jinja.py +++ /dev/null @@ -1,64 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - - async def {{ name }}(self, request, body, **kwargs): - accept = request.headers.get("accept", "") - streaming = "application/x-ndjson" in accept - try: - in_data = self.process_request("{{ name }}", body) - self.logger.debug(f"request processed as {in_data}") - except Exception as e: - self.logger.error(f"Request processing failed: {type(e).__name__}: {e}") - return 400, str(e) - - def get_error_response(err): - """Get structured error response for EnhancedError, or simple dict for Error.""" - if isinstance(err, EnhancedError): - return err.to_dict(include_stack_trace=False) - return {"error": str(err)} - - try: - if streaming: - async def generate_stream(): - async for result in self._inference.execute(in_data): - # Yield control to allow other requests to be processed - await asyncio.sleep(0) - if not result: - if isinstance(result, Stop): - return # Normal termination - self.logger.error(f"Inference error: {result}") - yield get_error_response(result) - return - yield self.process_response("infer", request, result) - - return 200, StreamingResponse(generate_stream(), media_type="application/x-ndjson") - else: - # If not streaming, process and return the last result - response = None - async for result in self._inference.execute(in_data): - # Yield control to allow other requests to be processed - await asyncio.sleep(0) - if not result: - if isinstance(result, Stop): - break # Normal termination - self.logger.error(f"Inference error: {result}") - return 500, get_error_response(result) - response = self.process_response("infer", request, result) - return (200, response) if response else (500, "No results generated from inference") - except Exception as e: - self.logger.error(f"Inference failed: {type(e).__name__}: {e}") - return 500, str(e) diff --git a/tools/inference_builder/templates/responder/list_files.jinja.py b/tools/inference_builder/templates/responder/list_files.jinja.py deleted file mode 100644 index 85da82ea..00000000 --- a/tools/inference_builder/templates/responder/list_files.jinja.py +++ /dev/null @@ -1,24 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - - async def {{ name }}(self, request): - try: - assets = [asset for asset in self._asset_manager.list_assets() if asset.file_name] - except Exception as e: - return 500, str(e) - response = self.process_response("{{ name }}", request, {"assets": assets}) - return 200, response diff --git a/tools/inference_builder/templates/responder/list_live_streams.jinja.py b/tools/inference_builder/templates/responder/list_live_streams.jinja.py deleted file mode 100644 index d7416ddb..00000000 --- a/tools/inference_builder/templates/responder/list_live_streams.jinja.py +++ /dev/null @@ -1,24 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - - async def {{ name }}(self, request): - try: - assets = [asset for asset in self._asset_manager.list_assets() if not asset.file_name] - except Exception as e: - return 500, str(e) - response = self.process_response("{{ name }}", request, {"assets": assets}) - return 200, response diff --git a/tools/inference_builder/templates/serverless/inference.jinja.py b/tools/inference_builder/templates/serverless/inference.jinja.py deleted file mode 100644 index 79c8cb25..00000000 --- a/tools/inference_builder/templates/serverless/inference.jinja.py +++ /dev/null @@ -1,137 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} -{{ license }} - -import argparse -from config import global_config -from typing import List, Optional -from lib.inference import py_datatype_mapping -from .model import GenericInference -import json -import sys -from lib.utils import NumpyFlatEncoder - - -def create_parser(inputs: List) -> argparse.ArgumentParser: - """Create and configure the argument parser for the application.""" - parser = argparse.ArgumentParser( - description='Command line interface for{{ service_name }}' - ) - for input_item in inputs: - input_name = input_item.name.replace("_", "-") - nargs = 1 - optional = input_item.optional if hasattr(input_item, "optional") else False - if len(input_item.dims) == 1: - if input_item.dims[0] == -1: - nargs = "+" - elif input_item.dims[0] == 1 and optional: - nargs = "?" - else: - nargs = input_item.dims[0] - parser.add_argument( - f'--{input_name}', - type=py_datatype_mapping[input_item.data_type], - nargs=nargs, - required=not optional - ) - parser.add_argument( - '-s', - '--save-to', - type=str, - nargs='?', - const='stdout', - help='Save results to a file, or use -s alone for stdout' - ) - return parser - - -def run_inference(args) -> Optional[int]: - """Run the inference service synchronously. - - Args: - args: Parsed command line arguments - - Returns: - Optional[int]: Exit code, 0 for success - """ - # Read and remove save_to argument before converting to dict - save_to = getattr(args, 'save_to', None) - if hasattr(args, 'save_to'): - delattr(args, 'save_to') - - # Convert remaining args to dictionary - inputs = vars(args) - - # Convert input names back to original format (replace '-' with '_') - inputs = {k.replace('-', '_'): v for k, v in inputs.items()} - - service = GenericInference() - service.initialize() - status = 0 - - # Determine output target: file, stdout, or None (no output) - output_file = None - close_file = False - if save_to: - if save_to in ('-', 'stdout'): - output_file = sys.stdout - else: - output_file = open(save_to, 'w', encoding='utf-8') - close_file = True - - try: - for result in service.exec_sync(inputs): - if not result: - status = -1 - break - # Unified logic: write JSON to output target if specified - if output_file: - json_str = json.dumps(result, indent=4, cls=NumpyFlatEncoder) - output_file.write(json_str) - output_file.write("\n") - if close_file: - output_file.flush() # Ensure data is written to disk - finally: - if close_file and output_file: - output_file.close() - - print("Inference completed.") - service.finalize() - return status - - -def main() -> int: - """Main entry point for the inference service. - - Returns: - Optional[int]: Exit code, None for success - """ - parser = create_parser(global_config.input) - args = parser.parse_args() - - try: - return run_inference(args) - except KeyboardInterrupt: - print("\nInterrupted by user") - return 130 - except Exception as e: - print(f"Error: {e}") - return 1 - - -if __name__ == "__main__": - exit(main()) diff --git a/tools/inference_builder/templates/triton/model.jinja.py b/tools/inference_builder/templates/triton/model.jinja.py deleted file mode 100644 index 2335740f..00000000 --- a/tools/inference_builder/templates/triton/model.jinja.py +++ /dev/null @@ -1,274 +0,0 @@ -{# - SPDX-FileCopyrightText: Copyright (c) NVIDIA CORPORATION & AFFILIATES. All rights reserved. - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -#} - -from config import global_config -import triton_python_backend_utils as pb_utils -from lib.inference import * -from lib.utils import * -from omegaconf import OmegaConf -import json -import os -from typing import List, Dict -import asyncio -from concurrent.futures import ThreadPoolExecutor -import numpy as np -import torch -from pathlib import Path - -logger = get_logger(__name__) - -CHECKPOINTS_DIR = os.getenv("CHECKPOINTS_DIR", Path(__file__).resolve().parent.parent.parent) - -triton_input_type_map = { - "TYPE_CUSTOM_BINARY_BASE64": "TYPE_STRING", - "TYPE_CUSTOM_IMAGE_BASE64": "TYPE_STRING" -} - -{% for backend in backends %} -{{ backend }} -{% endfor %} - -{% if top_level %} - -class TritonPythonModel(InferenceBase): - """The top level python model that drives the inference flow""" - - @staticmethod - def auto_complete_config(auto_complete_model_config): - # create a minimum config - auto_complete_model_config.set_max_batch_size(1) - auto_complete_model_config.set_dynamic_batching() - auto_complete_model_config.set_model_transaction_policy({"decoupled": True}) - for input in global_config.input: - input_config = OmegaConf.to_container(input) - data_type = input_config["data_type"] - if data_type.startswith("TYPE_CUSTOM_"): - data_type = triton_input_type_map[data_type] if data_type in triton_input_type_map else None - if data_type is None: - raise Exception(f"Unsupported input type: {data_type}") - input_config["data_type"] = data_type - auto_complete_model_config.add_input(input_config) - for output in global_config.output: - output_config = OmegaConf.to_container(output) - auto_complete_model_config.add_output(output_config) - logger.info(f"Model configuration completed as {auto_complete_model_config.as_dict()}") - return auto_complete_model_config - - def _create_backend(self, backend_spec: List[str], model_config: Dict, model_home: str): - if backend_spec[0] == 'triton': - return TritonBackend(model_config, model_home) - return None - - async def execute(self, requests): - """ execute a list of requests""" - async def async_put(queue, item): - await queue.put(item) - def thread_to_async_bridge(thread_queue, async_queue, loop): - while True: - try: - item = thread_queue.get() - asyncio.run_coroutine_threadsafe(async_put(async_queue, item), loop) - if isinstance(item, Stop) or isinstance(item, Error): - break - except Empty: - continue - - - logger.info(f"Received {len(requests)} request(s)") - for request in requests: - response_sender = request.get_response_sender() - if request.is_cancelled(): - response_sender.send(pb_utils.InferenceResponse( - error=pb_utils.TritonError("request is cancelled", pb_utils.TritonError.CANCELLED)), - flags=pb_utils.TRITONSERVER_RESPONSE_COMPLETE_FINAL) - continue - for input in self._inputs: - # select the tensors for the input - tensors = {n: pb_utils.get_input_tensor_by_name(request, n) for n in input.in_names} - # the tensors need to be transformed to generic type - for name in tensors: - tensor = tensors[name] - config = next((c for c in self._input_config if c['name'] == name), None) - if config is None: - logger.warning(f"Invalid input parsed: {name}") - continue - dims = config['dims'] - if pb_utils.Tensor.is_cpu(tensor): - tensor = tensor.as_numpy() - # auto reshape - if len(tensor.shape) == (len(dims)+1): - tensor = np.squeeze(tensor, 0) - else: - tensor = torch.utils.dlpack.from_dlpack(tensor.to_dlpack()) - # auto reshape - if len(tensor.shape) == (len(dims)+1): - tensor = torch.squeeze(tensor, 0) - tensors[name] = tensor - if tensors: - logger.debug(f"Injecting tensors {tensors}") - input.put(tensors) - input.put(Stop(reason="end")) - # fetch result - loop = asyncio.get_event_loop() - for a_output, output in zip(self._async_outputs, self._outputs): - logger.error(f"Submitting {output._timeout} to async executor") - self._async_executor.submit(thread_to_async_bridge, output, a_output, loop) - stop = False - while not stop: - try: - logger.debug("Waiting for tensors from async queue") - response_data = dict() - results = await asyncio.gather(*(ao.get() for ao in self._async_outputs)) - for data in results: - logger.debug(f"Got output data: {data}") - if isinstance(data, Error): - error = pb_utils.TritonError(f"steam llm_response, error received: {data.message}") - response_sender.send( - pb_utils.InferenceResponse(error=error), - flags=pb_utils.TRITONSERVER_RESPONSE_COMPLETE_FINAL - ) - return - elif isinstance(data, Stop): - stop = True - continue - # collect the output - for k, v in data.items(): - response_data[k] = v - response_data = self._post_process(response_data) - # response with partial data - response_sender.send(pb_utils.InferenceResponse( - output_tensors=[ - pb_utils.Tensor(name, tensor) for name, tensor in response_data.items() - ] - )) - except Exception as e: - logger.exception(e) - - response_sender.send(flags=pb_utils.TRITONSERVER_RESPONSE_COMPLETE_FINAL) - logger.debug(f"Finalizing the response for requests: {request}") - logger.debug(f"All request done") - - def finalize(self): - super().finalize() - - def _post_process(self, data: Dict): - processed = {k: v for k, v in data.items()} - for processor in self._processors: - if not all([i in data for i in processor.input]): - logger.warning(f"Input settings invalid for the processor: {processor}") - continue - input = [processed.pop(i) for i in processor.input] - logger.debug(f"Post-processor invoked with given input {input}") - output = processor(*input) - logger.debug(f"Post-processor generated output {output}") - if len(output) != len(processor.output): - logger.warning(f"Number of postprocessing output doesn't match the configuration, expecting {len(processor.output)}, while getting {len(output)}") - continue - # update as processed - for key, value in zip(processor.output, output): - processed[key] = value - return processed - -{% else %} -class TritonPythonModel: - def initialize(self, args): - """ - This function allows - the model to initialize any state associated with this model. - """ - model_name = args["model_name"] - model_home = os.path.join(global_config.model_repo, model_name, "1") - model_config = next((m for m in global_config.models if m.name == model_name), None) - if model_config is None: - raise Exception("Model config not found") - self._model_backend = None - self._model_config = OmegaConf.to_container(model_config) - self._in_config = {i["name"]: i for i in self._model_config["input"]} - self._out_config = {o["name"]: o for o in self._model_config["output"]} - self._model_repo = args["model_repository"] - self._device_id = int(json.loads(args["model_instance_device_id"])) - # default model path - engine_path = os.path.join(self._model_repo, "1", "model.plan") - if "tensorrt_engine" in self._model_config: - self._model_config["tensorrt_engine"] = os.path.join(CHECKPOINTS_DIR, self._model_config["tensorrt_engine"]) - else: - self._model_config["tensorrt_engine"] = engine_path - # create backend - BackendClass = None - backend_spec = model_config.backend.split('/') - if backend_spec[-1] == "tensorrtllm": - BackendClass = TensorRTLLMBackend - elif backend_spec[-1] == "polygraphy": - BackendClass = PolygraphBackend - elif backend_spec[-1] == "dummy": - BackendClass = DummyBackend - if BackendClass is not None: - self._model_backend = BackendClass(self._model_config, model_home,self._device_id) - else: - raise Exception(f"Backend not supported: {model_config.backend}") - - - def execute(self, requests): - """ - execute each request - """ - logger.info(f"Model {self._model_config['name']} received {len(requests)} requests") - - r_list = [] - responses = [] - for request in requests: - inputs = {k: None for k in self._in_config} - for name, config in self._in_config.items(): - dims = config['dims'] - pb_tensor = pb_utils.get_input_tensor_by_name(request, name) - if pb_utils.Tensor.is_cpu(pb_tensor): - tensor = pb_tensor.as_numpy() - # auto reshape - if len(dims) > 1 and len(tensor.shape) == (len(dims)+1): - tensor = np.squeeze(tensor, 0) - else: - tensor = torch.utils.dlpack.from_dlpack(pb_tensor.to_dlpack()) - # auto reshape - if len(dims) > 1 and len(tensor.shape) == (len(dims)+1): - tensor = torch.squeeze(tensor, 0) - inputs[name] = tensor - - for output in self._model_backend(**inputs): - r_list.append(output) - for r in r_list: - logger.info(f"Model {self._model_config['name']} generating responses {r}") - for k in r: - v = r[k] - force_cpu = True if "force_cpu" in self._out_config[k] and self._out_config[k]["force_cpu"] else False - if isinstance(v, torch.Tensor): - tensor = pb_utils.Tensor(k, v.cpu().numpy()) if force_cpu else pb_utils.Tensor.from_dlpack(k, torch.utils.dlpack.to_dlpack(v)) - elif isinstance(v, np.ndarray): - tensor = pb_utils.Tensor(k, v) - elif hasattr(v, "__dlpack__") and hasattr(v, "__dlpack_device__"): - tensor = pb_utils.Tensor(k, np.from_dlpack(v)) if force_cpu else pb_utils.Tensor.from_dlpack(k, v) - else: - responses.append( - pb_utils.InferenceResponse( - pb_utils.TritonError(f"Unsupported tensor format from the backend. {v}") - ) - ) - break - r[k] = tensor - responses.append(pb_utils.InferenceResponse(output_tensors=[r[k] for k in r])) - - return responses -{% endif %} \ No newline at end of file diff --git a/tools/inference_builder/tools/trt_build.py b/tools/inference_builder/tools/trt_build.py deleted file mode 100644 index 04598a1a..00000000 --- a/tools/inference_builder/tools/trt_build.py +++ /dev/null @@ -1,110 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import tensorrt as trt - -def build_engine(onnx_file_path, min_batch_size, opt_batch_size, max_batch_size, max_text_len): - # Create a TensorRT logger and builder - TRT_LOGGER = trt.Logger(trt.Logger.WARNING) - trt.init_libnvinfer_plugins(TRT_LOGGER, namespace="") - builder = trt.Builder(TRT_LOGGER) - network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)) - parser = trt.OnnxParser(network, TRT_LOGGER) - - # Read the ONNX file - with open(onnx_file_path, "rb") as model: - if not parser.parse(model.read()): - print("Failed to parse the ONNX file!") - for error in range(parser.num_errors): - print(parser.get_error(error)) - return None - - inputs = [network.get_input(i) for i in range(network.num_inputs)] - outputs = [network.get_output(i) for i in range(network.num_outputs)] - # Set builder configurations - config = builder.create_builder_config() - config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 2 << 30) # 2GB of workspace - config.set_flag(trt.BuilderFlag.FP16) -# builder.max_batch_size = max_batch_size - profile = builder.create_optimization_profile() - for model_input in inputs: - print(f"Input {model_input.name} with shape {model_input.shape} and dtype {model_input.dtype}") - input_shape = model_input.shape - input_name = model_input.name - if input_name == 'inputs': - real_shape_min = (min_batch_size, *input_shape[1:]) - real_shape_opt = (opt_batch_size, *input_shape[1:]) - real_shape_max = (max_batch_size, *input_shape[1:]) - elif input_name == 'text_token_mask': - real_shape_min = (min_batch_size, max_text_len, max_text_len) - real_shape_opt = (opt_batch_size, max_text_len, max_text_len) - real_shape_max = (max_batch_size, max_text_len, max_text_len) - else: - real_shape_min = (min_batch_size, max_text_len) - real_shape_opt = (opt_batch_size, max_text_len) - real_shape_max = (max_batch_size, max_text_len) - - profile.set_shape(input=input_name, - min=real_shape_min, - opt=real_shape_opt, - max=real_shape_max) - - config.add_optimization_profile(profile) - - for output in outputs: - print(f"Output {output.name} with shape {output.shape} and dtype {output.dtype}") - - # Build and return the engine - print("Building the engine. This might take a while...") - engine = builder.build_serialized_network(network, config) - if engine: - print("Engine built successfully!") - return engine - -def save_engine(engine, file_name): - with open(file_name, "wb") as f: - f.write(engine) - -def main(args): - onnx_file_path = args.input # Your ONNX file path - engine_file_path = args.output # Output TensorRT engine file - - engine = build_engine(onnx_file_path, args.min_batch_size, args.opt_batch_size, args.max_batch_size, args.max_text_len) - if engine: - save_engine(engine, engine_file_path) - print(f"Engine saved to {engine_file_path}") - -if __name__ == "__main__": - parser = argparse.ArgumentParser("TRT Builder") - parser.add_argument("input", type=str, help="Onnx input file") - parser.add_argument("-o", "--output", type=str, help="TensorRT engine file", default="model.plan") - parser.add_argument('--max_batch_size', - type=int, - default=1, - help="Maximum batch size for input images") - parser.add_argument('--min-batch-size', - type=int, - default=1, - help="Minimum batch size for input images") - parser.add_argument('--opt-batch-size', - type=int, - default=1, - help="Optimal batch size for input images") - parser.add_argument('--max-text-len', - type=int, - default=256, - help="Maximum text length for input prompt") - main(parser.parse_args())