{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "skip" } }, "source": [ "\n", "$$\n", "\\newcommand{\\Xs}{\\mathcal{X}}\n", "\\newcommand{\\Ys}{\\mathcal{Y}}\n", "\\newcommand{\\y}{\\mathbf{y}}\n", "\\newcommand{\\weights}{\\mathbf{w}}\n", "\\newcommand{\\balpha}{\\boldsymbol{\\alpha}}\n", "\\newcommand{\\bbeta}{\\boldsymbol{\\beta}}\n", "\\newcommand{\\aligns}{\\mathbf{a}}\n", "\\newcommand{\\align}{a}\n", "\\newcommand{\\source}{\\mathbf{s}}\n", "\\newcommand{\\target}{\\mathbf{t}}\n", "\\newcommand{\\ssource}{s}\n", "\\newcommand{\\starget}{t}\n", "\\newcommand{\\repr}{\\mathbf{f}}\n", "\\newcommand{\\repry}{\\mathbf{g}}\n", "\\newcommand{\\bar}{\\,|\\,}\n", "\\newcommand{\\x}{\\mathbf{x}}\n", "\\newcommand{\\prob}{p}\n", "\\newcommand{\\Pulp}{\\text{Pulp}}\n", "\\newcommand{\\Fiction}{\\text{Fiction}}\n", "\\newcommand{\\PulpFiction}{\\text{Pulp Fiction}}\n", "\\newcommand{\\pnb}{\\prob^{\\text{NB}}}\n", "\\newcommand{\\vocab}{V}\n", "\\newcommand{\\params}{\\boldsymbol{\\theta}}\n", "\\newcommand{\\param}{\\theta}\n", "\\DeclareMathOperator{\\perplexity}{PP}\n", "\\DeclareMathOperator{\\argmax}{argmax}\n", "\\DeclareMathOperator{\\argmin}{argmin}\n", "\\newcommand{\\train}{\\mathcal{D}}\n", "\\newcommand{\\counts}[2]{\\#_{#1}(#2) }\n", "\\newcommand{\\length}[1]{\\text{length}(#1) }\n", "\\newcommand{\\indi}{\\mathbb{I}}\n", "$$" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "%%capture\n", "%load_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline\n", "# %cd .. \n", "import sys\n", "sys.path.append(\"..\")\n", "import random\n", "import statnlpbook.util as util\n", "import matplotlib\n", "matplotlib.rcParams['figure.figsize'] = (10.0, 5.0)\n", "import random \n", "from collections import defaultdict\n", "random.seed(2)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Text Classification " ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Automatically classify input text into a set of **atomic (discrete) classes**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Motivation\n", "* **Information retrieval**: classify documents into topics, such as \"sport\" or \"business\"\n", "* **Sentiment analysis**: classify tweets into being \"positive\" or \"negative\" \n", "* **Spam filters**: distinguish between \"ham\" and \"spam\"\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Sentiment Analysis as Text Classification\n", "Let us focus on a specific task: sentiment analysis\n", "\n", "* load data for this task from the [Movie Review dataset](https://www.cs.cornell.edu/people/pabo/movie-review-data/)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from os import listdir\n", "from os.path import isfile, join\n", "def load_from_dir(directory,label):\n", " \"\"\"\n", " Load documents from a directory, and give them all the same label `label`.\n", " Params:\n", " directory: the directory to load the documents from.\n", " label: the label to assign to each document.\n", " Returns:\n", " a list of (x,y) pairs where x is a tokenised document (list of words), and y is the label `label`.\n", " \"\"\"\n", " result = []\n", " for file in listdir(directory):\n", " with open(directory + file, 'r') as f:\n", " text = f.read()\n", " tokens = [t.strip() for t in text.split()]\n", " result.append((tokens,label))\n", " return result\n", " \n", "data_pos = load_from_dir('../data/rt-2k/txt_sentoken/pos/', 'pos') \n", "data_neg = load_from_dir('../data/rt-2k/txt_sentoken/neg/', 'neg')\n", " \n", "data_all = data_pos + data_neg" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Let us look at some example data ..." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "\"charmingly effective romantic drama , this film offers insight into various types of relationships , presents us with interesting characters and excellent performances from the cast , and scratches beneath the surface of love and its many complex subtleties . how do people fall in love ? why do people fall out of love ? how do people fall back into love , once they've been hurt and left to join the lonely hearts club ? all of these questions and more , are touched upon in this film\"" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\" \".join(data_pos[4][0][110:199])" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "\"to watch `battlefield earth' is to wallow in misery . it is one of the most ludicrously conceived efforts in recent history . it has a clumsily told story , insipid dialogue , shallow characterizations , ugly scene transitions , no evidence of dramatic arc , headache-inducing sound effects , and a resolution that is completely implausible . worse , there's the promise of a sequel . why ? ! save your money . some films go quickly to video . this one , however , should go straight to the sci-fi channel's `mystery science theatre . ' in the year 3000 , man has become an endangered species . most of humanity ( called ? man-animals' ) was destroyed generations ago in a battle against a race of plundering aliens ( called psychlos ) . survivors have either taken up shelter in caves or were enslaved to mine earth's resources for the rest of their lives . the aliens are a menacing looking humanoid species that stand nine-feet tall , who resemble inbred klingons . dimwitted as they are tall , their culture is predicated on power , extortion , and getting ? leverage . ' travolta , the\"" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\" \".join(data_neg[5][0][:200])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Rule-based Approach\n", "\n", "The task: given the review text, return its sentiment. Can we write a program to solve this?" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def rule_based_classifier(text):\n", " text = text.lower()\n", " if \"charming\" in text or \"i love\" in text:\n", " return \"positive\"\n", " elif \"misery\" in text or (\"bad\" in text and not \"not bad\" in text):\n", " return \"negative\"\n", " else\n", " return \"neutral\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "A common approach is to use a *sentiment lexicon*: collection of all positive words and negative words.\n", "\n", "| Word | Sentiment Score |\n", "|-----------|-----------------|\n", "| Amazing | 0.8 |\n", "| Good | 0.5 |\n", "| Average | 0.0 |\n", "| Bad | -0.5 |\n", "| Terrible | -0.8 |\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### More complex rules\n", "\n", "Besides checking for the presence of words, we can also consider\n", "\n", "- Words at specific positions (beginning/end)\n", "- Length of the text\n", "- Lemmas, parts of speech, syntactic structures (see later in the course)\n", "- The output of any other classifier we have\n", "- ..." ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "
\n", "\n", "What limitations does the rule-based approach to text classification have?\n", "\n", "Discuss and enter your answer(s) here: https://ucph.page.link/nlp_q3\n", "\n", "([Responses](https://docs.google.com/forms/d/1bXldAjGhvyycpN4k8zEccxS0PezgIgZjTMICVgJaR_E/edit#responses))" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Text Classification: Formal Definition\n", "\n", "* Input space $\\Xs$ are strings or sequences of tokens\n", "* output space $\\Ys$ is a set of labels\n", " * Example for document classification: $\\Ys=\\{ \\text{sports},\\text{business}\\}$ \n", " * Example for sentiment prediction: $\\Ys=\\{ \\text{positive},\\text{negative}, \\text{neutral}\\}$ \n", "* model $s_{\\params}(\\x,y)$ \n", " * scores $y$ highly if it fits text $\\x$\n", " " ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* **Discriminative** model:\n", " * Learn how to *discriminate best output based on input*: $\\prob(y|\\x) \\propto s_{\\params}(\\x,y)$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Discriminative Text Classification\n", "\n", "Use data to learn how to estimate probabilities algorithmically - machine learning approach." ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Frame the task as an optimisation problem and maximise the probability of the training set give the classifier parameters $\\params$.\n", "\n", "\n", "maximise $\\prob_\\params(\\text{correct label} \\bar \\text{text})$" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Negative Log-Likelihood (NLL) Loss\n", "\n", "Maximise the likelihood of the correct labels (given the input), or equivalently,\n", "\n", "**Minimise** the **negative log-likelihood** of the correct labels\n", "\n", "$$\n", "\\mathcal{L}(\\params) = -\\sum_{(\\x,y) \\in \\train} \\log\\left(\\prob(y|\\x)\\right)\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Log-Linear Models\n", "\n", "Model the score as\n", "\n", "$$\n", "s_\\theta(y_i, \\x) = \\frac{\\exp(\\weights_i f(\\x, y_i))}{\\sum_{j=1}^C \\exp(\\weights_j f(\\x, y_j))}\n", "$$\n", "\n", "This is also often called **softmax**." ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "### Feature Function\n", "\n", "For log-linear models we need **feature functions** $f_i(\\x, y)$ mapping input to a real value.\n", "\n", "For simplicity $f_i(\\x, y)$ depends only on $\\x$, e.g.,\n", "\n", "$$\n", "f_{\\text{Pulp}}(\\x) = \\counts{\\x}{\\text{Pulp}}\n", "$$\n", "i.e., the number of times *Pulp* appears in the input $\\x$. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/plain": [ "[(('Pulp', 'Fiction'), True),\n", " (('Pulp', 'Fiction'), True),\n", " (('Pulp', 'Fiction'), True),\n", " (('Fiction',), False),\n", " (('Fiction',), False),\n", " (('Pulp', 'Fiction'), False)]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p,f = \"Pulp\", \"Fiction\"\n", "data = [((p,f),True),((p,f),True),((p,f),True), ((f,),False), ((f,),False),((p,f),False)]\n", "data" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/plain": [ "[(1, 1), (1, 1), (1, 1), (0, 1), (0, 1), (1, 1)]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def count_p(x):\n", " return len([w for w in x if w==p])\n", "def count_f(x):\n", " return len([w for w in x if w==f])\n", "\n", "[(count_p(x), count_f(x)) for x, _ in data]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from math import log, exp\n", "\n", "def nll(data, w_p_true, w_f_true, w_true, l=0.0):\n", " loss = 0.0\n", " for x,y in data:\n", " score_true = w_true + count_p(x) * w_p_true + count_f(x) * w_f_true\n", " log_z = log(exp(score_true) + exp(0))\n", " if y:\n", " loss += score_true - log_z\n", " else:\n", " loss += -log_z\n", " return l * (w_p_true * w_p_true + w_f_true * w_f_true + w_true * w_true) - loss\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Minimising the Negative Log-Likelihood\n", "No closed form solution\n", "\n", "Use **iterative methods** such as (Stochastic) Gradient Descent (SGD)" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "\"Easy\" because the loss is a **convex** function of the weights $\\weights$" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "pycharm": { "name": "#%%\n" }, "scrolled": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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LUL9aBF65t/82YrtZOTZOJ5j43huISdybRzLsXEit5A8Wwn5thLyi0rIs5VQ8Md/820l2A0Di8WCBbBY/nhhwWIBT1cXvD1c8PFwpZa7Kz4ervj88bW/lxvBvh4E+3pS19eDoFruKjciIiZS+REREafh7molxM+TEA37LCLilPTrJxERERERcQoqPyIiIiIi4hRUfkRERERExCmo/IiIiIiIiFNQ+REREREREaeg8iMiIiIiIk5B5UdERERERJyCyo+IiIiIiDgFlR8REREREXEKppafWbNmERkZiaenJx07duS3334zM46IiIiIiNRgppWfefPmMXbsWJ588kk2btxIjx496N+/P4cOHTIrkoiIiIiI1GAWwzAMM75x165d6dChA2+99VbptJYtWzJ48GCmTp16znWzsrLw9/cnMzMTPz+/yo4qIiIiIiLVVHm6gSlnfmw2G/Hx8fTt27fM9L59+7Jy5crTli8sLCQrK6vMS0REREREpDxMKT/Hjh2jpKSEkJCQMtNDQkJIS0s7bfmpU6fi7+9f+oqIiKiqqCIiIiIiUkO4mvnNLRZLma8NwzhtGsCkSZMYN25c6deZmZk0aNBAZ4BERERERJzcn53gQu7mMaX81KlTBxcXl9PO8qSnp592NgjAw8MDDw+P0q///IA6AyQiIiIiIgDZ2dn4+/ufcxlTyo+7uzsdO3Zk0aJFDBkypHT6okWLuP7668+7fnh4OElJSfj6+p7xTFFVy8rKIiIigqSkJA3AUAm0fSuXtm/l0vatXNq+lUvbt3Jp+1Yubd/KVZ22r2EYZGdnEx4eft5lTbvsbdy4cQwfPpxOnTrRrVs33n33XQ4dOsR999133nWtViv169evgpTl4+fnZ/offk2m7Vu5tH0rl7Zv5dL2rVzavpVL27dyaftWruqyfc93xudPppWfYcOGcfz4cZ5//nlSU1OJjo7mhx9+oGHDhmZFEhERERGRGszUAQ9Gjx7N6NGjzYwgIiIiIiJOwpShrmsaDw8Pnn322TKDMkjF0fatXNq+lUvbt3Jp+1Yubd/Kpe1bubR9K5ejbl+LcSFjwomIiIiIiDg4nfkRERERERGnoPIjIiIiIiJOQeVHREREREScgsqPiIiIiIg4BZUfERERERFxCio/F+DFF18kNjYWb29vateufcZlDh06xHXXXYePjw916tThoYcewmaznfN9CwsLefDBB6lTpw4+Pj4MGjSI5OTkSvgEjmPp0qVYLJYzvtatW3fW9UaOHHna8pdddlkVJnccjRo1Om1bTZw48ZzrGIbB5MmTCQ8Px8vLi169erFt27YqSuw4Dhw4wN13301kZCReXl40adKEZ5999rw/C7T/ntusWbOIjIzE09OTjh078ttvv51z+WXLltGxY0c8PT1p3Lgxb7/9dhUldSxTp06lc+fO+Pr6EhwczODBg0lMTDznOmf7Gb1z584qSu04Jk+efNp2Cg0NPec62ncv3Jn+LbNYLDzwwANnXF777rktX76c6667jvDwcCwWCwsWLCgz/2KPA7766itatWqFh4cHrVq1Ii4urpI+wYVT+bkANpuNm2++mfvvv/+M80tKShgwYAC5ubmsWLGCuXPn8tVXXzF+/Phzvu/YsWOJi4tj7ty5rFixgpycHAYOHEhJSUllfAyHEBsbS2pqapnXPffcQ6NGjejUqdM5173mmmvKrPfDDz9UUWrH8/zzz5fZVk899dQ5l58+fTozZsxg5syZrFu3jtDQUPr06UN2dnYVJXYMO3fuxG63884777Bt2zZee+013n77bZ544onzrqv998zmzZvH2LFjefLJJ9m4cSM9evSgf//+HDp06IzL79+/n2uvvZYePXqwceNGnnjiCR566CG++uqrKk5e/S1btowHHniA1atXs2jRIoqLi+nbty+5ubnnXTcxMbHM/tqsWbMqSOx4WrduXWY7bd269azLat8tn3Xr1pXZtosWLQLg5ptvPud62nfPLDc3l5iYGGbOnHnG+RdzHLBq1SqGDRvG8OHD2bx5M8OHD2fo0KGsWbOmsj7GhTHkgs2ePdvw9/c/bfoPP/xgWK1WIyUlpXTanDlzDA8PDyMzM/OM73Xy5EnDzc3NmDt3bum0lJQUw2q1Gj/99FOFZ3dUNpvNCA4ONp5//vlzLjdixAjj+uuvr5pQDq5hw4bGa6+9dsHL2+12IzQ01HjppZdKpxUUFBj+/v7G22+/XQkJa5bp06cbkZGR51xG++/ZdenSxbjvvvvKTGvRooUxceLEMy4/YcIEo0WLFmWmjRo1yrjssssqLWNNkZ6ebgDGsmXLzrrMkiVLDMDIyMioumAO6tlnnzViYmIueHntu5fm4YcfNpo0aWLY7fYzzte+e+EAIy4urvTriz0OGDp0qHHNNdeUmdavXz/jlltuqfDM5aEzPxVg1apVREdHEx4eXjqtX79+FBYWEh8ff8Z14uPjKSoqom/fvqXTwsPDiY6OZuXKlZWe2VF88803HDt2jJEjR5532aVLlxIcHEzz5s259957SU9Pr/yADmratGkEBQXRrl07XnzxxXNelrV//37S0tLK7KseHh707NlT++oFyMzMJDAw8LzLaf89nc1mIz4+vsy+B9C3b9+z7nurVq06bfl+/fqxfv16ioqKKi1rTZCZmQlwQftr+/btCQsLo3fv3ixZsqSyozms3bt3Ex4eTmRkJLfccgv79u0767Lady+ezWbjk08+4a677sJisZxzWe275XexxwFn26fNPnZQ+akAaWlphISElJkWEBCAu7s7aWlpZ13H3d2dgICAMtNDQkLOuo4zev/99+nXrx8RERHnXK5///58+umn/Prrr7z66qusW7eOq666isLCwipK6jgefvhh5s6dy5IlSxgzZgyvv/46o0ePPuvyf+6Pf9/Hta+e3969e3njjTe47777zrmc9t8zO3bsGCUlJeXa98708zgkJITi4mKOHTtWaVkdnWEYjBs3ju7duxMdHX3W5cLCwnj33Xf56quvmD9/PlFRUfTu3Zvly5dXYVrH0LVrVz766CMWLlzIe++9R1paGrGxsRw/fvyMy2vfvXgLFizg5MmT5/xFqfbdi3exxwFn26fNPnZwNfW7m2jy5Mk899xz51xm3bp1573P5E9n+k2DYRjn/Q1ERazjCC5meycnJ7Nw4UI+//zz877/sGHDSv8/OjqaTp060bBhQ77//ntuuOGGiw/uIMqzfR955JHSaW3btiUgIICbbrqp9GzQ2fx9v6yp++qZXMz+e/jwYa655hpuvvlm7rnnnnOu6+z77/mUd9870/Jnmi7/b8yYMWzZsoUVK1acc7moqCiioqJKv+7WrRtJSUm88sorXHHFFZUd06H079+/9P/btGlDt27daNKkCR9++CHjxo074zrady/O+++/T//+/ctcgfN32ncv3cUcB1THYwenLT9jxozhlltuOecyjRo1uqD3Cg0NPe3mrYyMDIqKik5rvH9dx2azkZGRUebsT3p6OrGxsRf0fR3JxWzv2bNnExQUxKBBg8r9/cLCwmjYsCG7d+8u97qO6FL25z9HFduzZ88Zy8+foxOlpaURFhZWOj09Pf2s+3dNU97te/jwYa688kq6devGu+++W+7v52z779nUqVMHFxeX035LeK59LzQ09IzLu7q6nrPcO7MHH3yQb775huXLl1O/fv1yr3/ZZZfxySefVEKymsXHx4c2bdqc9e+19t2Lc/DgQRYvXsz8+fPLva723QtzsccBZ9unzT52cNryU6dOHerUqVMh79WtWzdefPFFUlNTS3eKn3/+GQ8PDzp27HjGdTp27IibmxuLFi1i6NChAKSmppKQkMD06dMrJFd1Ut7tbRgGs2fP5s4778TNza3c3+/48eMkJSWV+Utak13K/rxx40aAs26ryMhIQkNDWbRoEe3btwdOXV+9bNkypk2bdnGBHUx5tm9KSgpXXnklHTt2ZPbs2Vit5b+62Nn237Nxd3enY8eOLFq0iCFDhpROX7RoEddff/0Z1+nWrRvffvttmWk///wznTp1uqifJTWZYRg8+OCDxMXFsXTpUiIjIy/qfTZu3Oj0++qFKCwsZMeOHfTo0eOM87XvXpzZs2cTHBzMgAEDyr2u9t0Lc7HHAd26dWPRokVlrjj5+eefzf8lv0kDLTiUgwcPGhs3bjSee+45o1atWsbGjRuNjRs3GtnZ2YZhGEZxcbERHR1t9O7d29iwYYOxePFio379+saYMWNK3yM5OdmIiooy1qxZUzrtvvvuM+rXr28sXrzY2LBhg3HVVVcZMTExRnFxcZV/xupm8eLFBmBs3779jPOjoqKM+fPnG4ZhGNnZ2cb48eONlStXGvv37zeWLFlidOvWzahXr56RlZVVlbGrvZUrVxozZswwNm7caOzbt8+YN2+eER4ebgwaNKjMcn/dvoZhGC+99JLh7+9vzJ8/39i6datx6623GmFhYdq+f5OSkmI0bdrUuOqqq4zk5GQjNTW19PVX2n8v3Ny5cw03Nzfj/fffN7Zv326MHTvW8PHxMQ4cOGAYhmFMnDjRGD58eOny+/btM7y9vY1HHnnE2L59u/H+++8bbm5uxpdffmnWR6i27r//fsPf399YunRpmX01Ly+vdJm/b9/XXnvNiIuLM3bt2mUkJCQYEydONADjq6++MuMjVGvjx483li5dauzbt89YvXq1MXDgQMPX11f7bgUqKSkxGjRoYDz++OOnzdO+Wz7Z2dmlx7dA6bHCwYMHDcO4sOOA4cOHlxmJ8/fffzdcXFyMl156ydixY4fx0ksvGa6ursbq1aur/PP9lcrPBRgxYoQBnPZasmRJ6TIHDx40BgwYYHh5eRmBgYHGmDFjjIKCgtL5+/fvP22d/Px8Y8yYMUZgYKDh5eVlDBw40Dh06FAVfrLq69ZbbzViY2PPOh8wZs+ebRiGYeTl5Rl9+/Y16tata7i5uRkNGjQwRowYoW15BvHx8UbXrl0Nf39/w9PT04iKijKeffZZIzc3t8xyf92+hnFqmMtnn33WCA0NNTw8PIwrrrjC2Lp1axWnr/5mz559xp8Vf/89k/bf8nnzzTeNhg0bGu7u7kaHDh3KDMU8YsQIo2fPnmWWX7p0qdG+fXvD3d3daNSokfHWW29VcWLHcLZ99a9/9/++fadNm2Y0adLE8PT0NAICAozu3bsb33//fdWHdwDDhg0zwsLCDDc3NyM8PNy44YYbjG3btpXO17576RYuXGgARmJi4mnztO+Wz59Dgf/9NWLECMMwLuw4oGfPnqXL/+mLL74woqKiDDc3N6NFixbVomxaDOOPu+lERERERERqMA11LSIiIiIiTkHlR0REREREnILKj4iIiIiIOAWVHxERERERcQoqPyIiIiIi4hRUfkRERERExCmo/IiIiIiIiFNQ+REREREREaeg8iMiIiIiIk5B5UdERERERJyCyo+IiIiIiDiF/wNX6ic9gWHuRAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(-10, 10, 100)\n", "C = 1\n", "nll_loss = np.vectorize(lambda w: nll(data,w,log(0.5),log(0.5),1/C))\n", "plt.plot(x, nll_loss(x))" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### How to Find the Minimum?\n", "\n", "In practice one of the following:\n", "* Implement both optimisation and gradient calculation\n", "* Use off-the-shelf optimisation library (such as scipy) and implement the gradient calculation\n", "* Use a library that calculates gradients automatically (such as PyTorch or Tensorflow)\n", "* Use a library that implements specific models (such as [scikit-learn](http://scikit-learn.org/))\n" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Regularisation\n", "Estimating a log-linear models can lead to *overfitting*\n", "\n", "* For example, reviews of movies often contain the **name** of the movie\n", "* False *killer feature*: only appears in one training instance\n", "* Weight can be set in way that we get perfect accuracy on this instance" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "*Regularise* the model by **penalising** large weights:\n", "\n", "* Add a regularisation penalty to the training objective\n", "* For example, the L2 or L1 norm of the weight vector (ridge/lasso regularisation)\n", "\n", "\n", "$$\n", "||\\params||_1 = \\left(\\sum_{i=1}^N |w_i|\\right)\n", "$$\n", "$$\n", "||\\params||_2 = \\sqrt{\\sum_{i=1}^N w_i^2}\n", "$$\n", "\n", "The hyperparameter $\\alpha$ controls strength of regularisation:\n", "\n", "$$\n", "\\mathcal{L}^1_\\alpha(\\params) = \\mathcal{L}(\\params) + \\alpha ||\\params||_1\n", "$$\n", "$$\n", "\\mathcal{L}^2_\\alpha(\\params) = \\mathcal{L}(\\params) + \\alpha ||\\params||_2\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "skip" } }, "source": [ "Both L1 and L2 have their strength and weaknesses. \n", "* L1 regularisation can lead to sparse vectors with mostly zero weights\n", "* L2 (also called \"weight decay\" in PyTorch) is more common in modern NLP" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "## Logistic Regression Toolkits\n", "A log-linear model trained by minimising the NLL corresponds to training a **logistic regression** model\n", "\n", "(or equivalently, a one-layer neural network)" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "The [logistic regression](http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html) model is implemented in [scikit-learn](http://scikit-learn.org/stable/index.html). Let's use it to implement a simple classifier:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Setup\n", "\n", "Divide dataset to **train**, **test** and **development** (validation) sets" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "{'train': {'pos': 815, 'neg': 785},\n", " 'dev': {'pos': 95, 'neg': 105},\n", " 'test': {'pos': 90, 'neg': 110}}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "random.seed(0)\n", "shuffled = list(data_all)\n", "random.shuffle(shuffled)\n", "train, dev, test = shuffled[:1600], shuffled[1600:1800], shuffled[1800:]\n", "split = {\"train\": train, \"dev\": dev, \"test\": test}\n", "{name: {label: sum(1 for (x,y) in data if y == label) for label in (\"pos\", \"neg\")} for name, data in split.items()}" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Convert $\\x \\in \\Xs$ to a (sparse) feature vector $\\mathbf{f}(\\x)$:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x = ['pulp', 'fiction', 'fiction']\n", "f(x) = Counter({'fiction': 2, 'pulp': 1})\n" ] } ], "source": [ "from collections import Counter\n", "\n", "def feats(x):\n", " return Counter(x)\n", "\n", "x = ['pulp','fiction','fiction']\n", "print(f\"x = {x}\")\n", "print(f\"f(x) = {feats(x)}\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Apply to training and validation instances:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x = ['i', 'remember', 'making', 'a', 'pact', ',', 'right', 'after', '`patch', \"adams'\", ',', 'to', 'not', 'be', 'easily', 'be', 'suckered', 'by', 'movies', 'dripping', 'with', 'sentimentality', '.', 'but', 'darn', 'it', ',', '`music', 'of', 'the', \"heart'\", 'is', 'just', 'layered', 'with', 'feel-good', 'material', 'and', 'bright', 'characterizations', '.', \"it's\", 'hard', 'to', 'dislike', 'a', 'movie', 'that', 'uses', 'such', 'skill', 'with', \"it's\", 'manipulation', '.', 'in', 'addition', ',', \"it's\", 'also', 'a', 'terrific', 'family', 'film', '.', 'this', 'is', 'the', 'true', 'story', 'of', 'violin', 'teacher', 'roberta', 'guaspari', ',', 'who', 'fought', 'the', 'school', 'board', 'to', 'keep', 'the', 'musical', 'program', 'active', 'in', 'a', 'handful', 'of', 'inner', 'city', 'harlem', 'schools', '.', 'it', 'could', 'also', 'be', 'described', 'as', '`mrs', '.', \"streep's\", \"opus'\", '.', 'yes', ',', 'meryl', 'streep', 'brings', 'her', 'dramatic', 'clout', 'to', 'the', 'demanding', 'role', 'of', 'guaspari', ',', 'and', 'that', 'brings', 'both', 'good', 'news', 'and', 'bad', '.', 'out', 'of', 'the', 'gate', ',', 'possibly', 'because', 'of', 'her', 'distracting', 'star', 'power', 'and', 'the', 'rushed', 'writing', ',', 'it', 'is', 'relatively', 'difficult', 'to', 'identify', 'with', \"roberta's\", 'character', 'and', 'grasp', 'her', 'academic', 'point-of-view', '.', 'she', 'is', 'very', 'strict', 'with', 'her', 'students', ',', 'but', 'what', 'insight', 'does', 'that', 'create', 'into', 'the', 'story', '?', 'slowly', 'but', 'surely', ',', 'we', 'begin', 'to', 'recognize', 'the', 'intentions', 'of', 'the', 'character', ',', 'and', 'show', 'admiration', 'for', 'the', 'thoughtfulness', 'and', 'human', 'feeling', 'that', 'streep', 'has', 'once', 'again', 'applied', '.', 'one', 'thoroughly', 'interesting', 'fact', 'about', '`music', 'of', 'the', \"heart'\", 'lies', 'with', 'the', 'unlikely', 'presence', 'in', 'the', \"director's\", 'chair', ':', 'horror', 'veteran', 'wes', 'craven', '.', 'after', 'leaving', 'an', 'impression', 'with', 'the', \"`scream'\", 'films', 'and', 'the', 'original', '`nightmare', 'on', 'elm', \"street'\", ',', 'craven', 'has', 'attempted', 'a', 'precarious', 'cross-over', 'to', 'drama', '.', 'at', 'first', ',', 'his', 'inexperience', 'with', 'the', 'genre', 'is', 'fairly', 'obvious', ',', 'but', 'as', 'the', 'film', 'progresses', 'craven', 'finds', 'a', 'surprisingly', 'comfortable', 'niche', 'with', 'directing', 'this', 'material', '.', 'it', \"doesn't\", 'carry', 'the', 'heart-warming', 'courage', 'of', '`mr', '.', \"holland's\", \"opus'\", ',', 'but', '`music', 'of', 'the', \"heart'\", 'is', 'casually', 'assured', 'and', 'filled', 'with', 'little', 'morsels', 'of', 'dramatic', 'truth', '.', 'the', 'tag', 'team', 'of', 'streep', 'and', 'craven', 'works', 'better', 'than', 'you', 'would', 'anticipate', '.', 'yes', ',', 'oscar', 'could', 'come', 'calling', 'once', 'again', 'for', 'meryl', 'streep', ',', 'but', \"it's\", 'the', 'solid', 'ensemble', 'cast', 'that', 'makes', '`music', 'of', 'the', \"heart'\", 'work', '.', 'angela', 'bassett', 'displays', 'her', 'usual', 'forceful', 'stamina', 'as', 'janet', 'williams', ',', 'the', 'principal', 'at', 'an', 'inner', 'city', 'school', 'who', 'initially', \"doesn't\", 'hire', 'roberta', 'because', 'of', 'her', 'lack', 'of', 'experience', '.', 'blue-eyed', 'adian', 'quinn', 'is', 'endearing', ',', 'as', 'always', ',', 'playing', 'a', 'new', 'love', 'interest', '.', 'gloria', 'estefan', 'also', 'delivers', 'in', 'the', 'tiny', 'role', 'of', 'a', 'supportive', 'second-grade', 'teacher', ',', 'and', 'the', 'three', 'lead', 'actresses', 'together', 'produce', 'a', 'flaming', 'fireball', 'of', 'estrogenic', 'force', '.', \"it's\", 'like', 'a', \"schoolteacher's\", 'version', 'of', '`thelma', 'and', \"louise'\", ',', 'in', 'a', 'restrained', 'but', 'effective', 'manner', '.', 'the', 'movie', 'tackles', 'more', 'issues', 'than', 'just', \"guaspari's\", 'teaching', 'of', 'violin', '.', \"there's\", 'some', 'powerful', 'moments', 'between', 'roberta', 'and', 'her', 'two', 'sons', ',', 'who', 'must', 'cope', 'when', 'their', 'father', 'leaves', 'them', 'for', 'another', 'woman', '.', 'in', \"it's\", 'dramatic', 'build-up', ',', 'the', 'movie', 'manages', 'to', 'produce', 'some', 'authentic', 'moments', 'of', 'feeling', 'and', 'warmth', '.', \"it's\", 'a', 'good', 'movie', 'for', 'anyone', 'to', 'see', ',', 'although', 'missing', 'out', 'on', 'the', 'experience', 'would', 'not', 'be', 'a', 'life-altering', 'decision', '.', \"it's\", 'commendable', 'of', 'wes', 'craven', 'to', 'be', 'attempting', 'such', 'a', 'difficult', 'cross-over', ',', 'and', 'also', 'for', 'achieving', 'his', 'intricate', 'goal', '.', 'watching', 'this', 'heartfelt', 'chick', 'flick', 'about', 'morals', 'and', 'musical', 'instruments', ',', 'who', 'may', 'ask', 'yourself', ':', 'this', 'is', 'the', 'guy', 'who', 'directed', \"`scream'\", '?', 'of', 'course', ',', 'when', 'the', 'third', 'installment', 'of', 'that', 'series', 'comes', 'around', 'in', 'february', '2000', '(', 'with', 'craven', 'directing', ')', ',', 'you', 'may', 'find', 'yourself', 'wondering', ':', 'this', 'is', 'the', 'guy', 'who', 'directed', '`music', 'of', 'the', \"heart'\", '?', 'mission', 'accomplished', ',', 'wes', '.', 'thankfully', ',', 'there', 'is', 'no', 'layer', 'of', 'artificial', 'sentiment', 'covering', 'the', 'film', '.', 'in', \"it's\", 'entirety', ',', \"it's\", 'a', 'wholesome', 'and', 'agreeable', 'movie', 'for', 'the', 'whole', 'family', ',', 'despite', 'the', 'periodic', 'flaws', 'that', 'surface', 'every', 'once', 'in', 'awhile', '.', 'the', 'child', 'actors', 'are', 'cute', 'and', 'perform', 'up', 'to', 'par', ',', 'even', 'if', 'some', 'of', 'their', 'problems', 'are', 'clich', '?', 'd', 'and', 'predictable', 'in', 'the', 'extreme', '.', 'the', 'mother', 'who', \"doesn't\", 'want', 'her', 'son', 'to', 'be', 'learning', '`white', \"man's\", \"music'\", ',', 'the', 'unexpected', 'casuality', '.', '.', '.', 'basically', 'everything', 'is', 'there', '.', 'it', \"doesn't\", 'strike', 'the', 'perfect', 'chord', ',', 'but', '`music', 'of', 'the', \"heart'\", 'is', 'highly', 'convincing', '.', 'the', 'uplifting', 'true', 'story', 'of', 'roberta', 'guaspari', 'could', 'have', 'been', 'told', 'better', ',', 'but', '`music', 'of', 'the', \"heart'\", 'is', 'still', 'edifying', 'enough', 'to', 'properly', 'divulge', 'her', 'morals', '.']\n" ] } ], "source": [ "from sklearn.feature_extraction import DictVectorizer\n", "vectorizer = DictVectorizer()\n", "\n", "train_X = vectorizer.fit_transform([feats(x) for x,_ in train])\n", "dev_X = vectorizer.transform([feats(x) for x,_ in dev])\n", "print(f\"x = {dev[0][0]}\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "f(x) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 1, 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, 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, 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, 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, 2, 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, 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, 4, 0, 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, 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, 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, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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, 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, 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, 1, 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, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 2, 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, 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, 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, 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, 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, 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, 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, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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, 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, 2, 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, 1, 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, 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, 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, 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, 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, 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, 1, 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, 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, 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, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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, 0, 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, 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, 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, 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, 2, 0, 2, 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, 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, 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, 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, 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, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 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, 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, 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, 1, 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, 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, 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, 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, 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, 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, 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, 1, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 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, 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, 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, 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, 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, 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, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 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, 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, 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, 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, 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, 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, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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, 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, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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, 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, 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, 1, 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, 1, 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, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 5, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 1, 1, 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, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 1, 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, 1, 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, 1, 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, 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, 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, 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, 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, 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, 2, 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, 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, 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, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 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, 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, 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, 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, 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, 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, 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, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 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, 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, 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, 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, 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, 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, 1, 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, 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, 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, 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, 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, 1, 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, 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, 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, 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, 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, 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, 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, 1, 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, 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, 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, 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, 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, 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, 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, 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, 4, 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, 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, 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, 2, 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, 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, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 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, 1, 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, 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, 2, 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, 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, 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, 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, 1, 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, 2, 0, 0, 0, 0, 0, 1, 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, 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, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 2, 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, 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, 5, 0, 0, 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, 1, 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, 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, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 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, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 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, 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, 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, 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, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 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, 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]\n" ] } ], "source": [ "print(f\"f(x) = {list(map(int, dev_X[0].toarray()[0]))}\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "scikit-learn prefers numbers as classes:\n", "\n", "* $\\text{positive}\\rightarrow 0$\n", "* $\\text{negative}\\rightarrow 1$" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "first 10 labels in dev: [1 1 0 0 0 1 0 0 1 1]\n" ] } ], "source": [ "from sklearn.preprocessing import LabelEncoder\n", "label_encoder = LabelEncoder()\n", "\n", "train_Y = label_encoder.fit_transform([y for _,y in train])\n", "dev_Y = label_encoder.transform([y for _,y in dev])\n", "\n", "print(f\"first 10 labels in dev: {dev_Y[:10]}\")" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Train the logistic regression with L1 regularisation with $\\frac{1}{\\alpha}=C=1000$" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
LogisticRegression(C=1000, penalty='l1', random_state=1, solver='liblinear')
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression(C=1000, penalty='l1', random_state=1, solver='liblinear')" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "import numpy as np\n", "\n", "lr = LogisticRegression(C=1000, penalty=\"l1\", random_state=1, solver='liblinear')\n", "lr.fit(train_X, train_Y)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Weights learned:\n", "* single weight vector $\\weights=\\weights_\\text{positive} - \\weights_\\text{negative}$" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0YAAAH2CAYAAABUcZxEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACOGElEQVR4nOzdd1hT598G8G9w4AIcKKCgggsUB8MBiIADFUTr3nvPusU9quKsVm211m1drYqj7rqtu7i3daE4UUBUQOB+/+DN+RFxSyB67s91ebUkJ8mTdfLcz9QAgBAREREREamYUXoXgIiIiIiIKL0xGBERERERkeoxGBERERERkeoxGBERERERkeoxGBERERERkeoxGBERERERkeoxGBERERERkeoxGBERERERkeoxGBERERERkeoxGBERERERkerpPRj98ssvYmtrK1myZBEXFxc5ePDge4/fv3+/uLi4SJYsWcTOzk7mzZun7yISEREREZHK6TUYrVmzRvr27SvDhw+XU6dOiaenp9SuXVvu3Lnz1uNv3rwpfn5+4unpKadOnZJhw4ZJnz59ZN26dfosJhERERERqZwGAPR15xUrVhRnZ2eZO3eucpmDg4N89913EhQUlOL4IUOGyKZNm+TSpUvKZd26dZMzZ87IkSNH9FVMIiIiIiJSuYz6uuO4uDj5999/JTAwUOdyX19fOXz48Ftvc+TIEfH19dW5rGbNmrJw4UJ5/fq1ZMqUKcVtYmNjJTY2Vvk7MTFRnj59Knny5BGNRpMKz4SIiIiIiL5GAOT58+eSP39+MTJ6/2A5vQWjJ0+eSEJCglhYWOhcbmFhIQ8ePHjrbR48ePDW4+Pj4+XJkydiZWWV4jZBQUEyduzY1Cs4ERERERF9U0JDQ8Xa2vq9x+gtGGm92WsD4L09OW87/m2Xaw0dOlT69++v/B0ZGSkFCxaU0NBQMTU1/dxipyrH0TvS9PHOj635zuvSuiwihlUeQyqLiGGV531lETGs8vC9MpyyiBhWefg5fj9DKo8hlUXEsMpjSGURMazy8Dv+foZUng+9V2klKipKbGxsxMTE5IPH6i0YmZubS4YMGVL0Dj169ChFr5CWpaXlW4/PmDGj5MmT5623MTY2FmNj4xSXm5qaGkwwMjLOlqaP977nndZlETGs8hhSWUQMqzwf+r4YUnn4XhlOWUQMqzz8HL+fIZXHkMoiYljlMaSyiBhWefgdfz9DKo+h1MO1PmaKjd5WpcucObO4uLjIrl27dC7ftWuXuLu7v/U2bm5uKY7fuXOnuLq6vnV+ERERERERUWrQ63Ld/fv3lwULFsiiRYvk0qVL0q9fP7lz545069ZNRJKGwbVp00Y5vlu3bnL79m3p37+/XLp0SRYtWiQLFy6UgQMH6rOYRERERESkcnqdY9S0aVMJDw+XcePGyf3798XR0VG2bt0qhQoVEhGR+/fv6+xpZGtrK1u3bpV+/frJzz//LPnz55dZs2ZJw4YN9VlMIiIiIiJSOb0vvtCjRw/p0aPHW69bsmRJisu8vLwkJCREz6UiIiIiIiL6H70OpSMiIiIiIvoaMBgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHq6S0YPXv2TFq3bi1mZmZiZmYmrVu3loiIiPfepl27dqLRaHT+VapUSV9FJCIiIiIiEhGRjPq64xYtWsjdu3dl+/btIiLSpUsXad26tWzevPm9t6tVq5YsXrxY+Ttz5sz6KiIREREREZGI6CkYXbp0SbZv3y5Hjx6VihUriojIb7/9Jm5ubnLlyhUpUaLEO29rbGwslpaW+igWERERERHRW+llKN2RI0fEzMxMCUUiIpUqVRIzMzM5fPjwe2+7b98+yZcvnxQvXlw6d+4sjx49eu/xsbGxEhUVpfOPiIiIiIjoU+glGD148EDy5cuX4vJ8+fLJgwcP3nm72rVry4oVK2TPnj0yffp0OXHihFStWlViY2PfeZugoCBlHpOZmZnY2NikynMgIiIiIiL1+KRgNGbMmBSLI7z57+TJkyIiotFoUtwewFsv12ratKn4+/uLo6OjBAQEyLZt2+Tq1auyZcuWd95m6NChEhkZqfwLDQ39lKdERERERET0aXOMevXqJc2aNXvvMYULF5azZ8/Kw4cPU1z3+PFjsbCw+OjHs7KykkKFCsm1a9feeYyxsbEYGxt/9H0SERERERG96ZOCkbm5uZibm3/wODc3N4mMjJTjx49LhQoVRETk2LFjEhkZKe7u7h/9eOHh4RIaGipWVlafUkwiIiIiIqJPopc5Rg4ODlKrVi3p3LmzHD16VI4ePSqdO3eWOnXq6KxIZ29vL8HBwSIiEh0dLQMHDpQjR47IrVu3ZN++fRIQECDm5uZSv359fRSTiIiIiIhIRPS4weuKFSukdOnS4uvrK76+vlKmTBlZvny5zjFXrlyRyMhIERHJkCGDnDt3TurVqyfFixeXtm3bSvHixeXIkSNiYmKir2ISERERERHpb4PX3Llzy++///7eYwAo/581a1bZsWOHvopDRERERET0TnrrMSIiIiIiIvpaMBgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHqMRgREREREZHq6S0YTZgwQdzd3SVbtmySM2fOj7oNABkzZozkz59fsmbNKt7e3nLhwgV9FZGIiIiIiEhE9BiM4uLipHHjxtK9e/ePvs2UKVPkxx9/lDlz5siJEyfE0tJSatSoIc+fP9dXMYmIiIiIiPQXjMaOHSv9+vWT0qVLf9TxAGTmzJkyfPhwadCggTg6OsrSpUvl5cuXsnLlSn0Vk4iIiIiIyHDmGN28eVMePHggvr6+ymXGxsbi5eUlhw8ffuftYmNjJSoqSucfERERERHRpzCYYPTgwQMREbGwsNC53MLCQrnubYKCgsTMzEz5Z2Njo9dyEhERERHRt+eTgtGYMWNEo9G899/Jkye/qEAajUbnbwApLktu6NChEhkZqfwLDQ39oscnIiIiIiL1yfgpB/fq1UuaNWv23mMKFy78WQWxtLQUkaSeIysrK+XyR48epehFSs7Y2FiMjY0/6zGJiIiIiIhEPjEYmZubi7m5uV4KYmtrK5aWlrJr1y5xcnISkaSV7fbv3y+TJ0/Wy2MSERERERGJ6HGO0Z07d+T06dNy584dSUhIkNOnT8vp06clOjpaOcbe3l6Cg4NFJGkIXd++fWXixIkSHBws58+fl3bt2km2bNmkRYsW+iomERERERHRp/UYfYpRo0bJ0qVLlb+1vUB79+4Vb29vERG5cuWKREZGKscMHjxYXr16JT169JBnz55JxYoVZefOnWJiYqKvYhIREREREekvGC1ZskSWLFny3mMA6Pyt0WhkzJgxMmbMGH0Vi4iIiIiIKAWDWa6biIiIiIgovTAYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6jEYERERERGR6mVM7wIQEREREaWGW5P807sICkMqi4jhlccQsceIiIiIiIhUj8GIiIiIiIhUj0PpiIiIiL4ShjYcytDKQ/QlGIyIiIiI3oOVfyJ14FA6IiIiIiJSPb31GE2YMEG2bNkip0+flsyZM0tERMQHb9OuXTtZunSpzmUVK1aUo0eP6qmUREREZGjYQ0NE6UFvwSguLk4aN24sbm5usnDhwo++Xa1atWTx4sXK35kzZ9ZH8YiIiCgZhhEiUju9BaOxY8eKiMiSJUs+6XbGxsZiaWmphxIRERERERG9ncHNMdq3b5/ky5dPihcvLp07d5ZHjx699/jY2FiJiorS+UdERERERPQpDCoY1a5dW1asWCF79uyR6dOny4kTJ6Rq1aoSGxv7ztsEBQWJmZmZ8s/GxiYNS0xERERERN+CTwpGY8aMEY1G895/J0+e/OzCNG3aVPz9/cXR0VECAgJk27ZtcvXqVdmyZcs7bzN06FCJjIxU/oWGhn724xMRERERkTp90hyjXr16SbNmzd57TOHChb+kPDqsrKykUKFCcu3atXceY2xsLMbGxqn2mERERGmBix0QERmWTwpG5ubmYm5urq+ypBAeHi6hoaFiZWWVZo9JRETfLoYRIiJ6F73NMbpz546cPn1a7ty5IwkJCXL69Gk5ffq0REdHK8fY29tLcHCwiIhER0fLwIED5ciRI3Lr1i3Zt2+fBAQEiLm5udSvX19fxSQiIiIiItLfct2jRo3S2azVyclJRET27t0r3t7eIiJy5coViYyMFBGRDBkyyLlz52TZsmUSEREhVlZW4uPjI2vWrBETExN9FZOIiIiIiEh/wWjJkiUf3MMIgPL/WbNmlR07duirOERElA44dI2IiL4WBrVcNxERERERUXpgMCIiIiIiItVjMCIiIiIiItVjMCIiIiIiItXT2+ILRESU9rjYARER0edhjxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREakegxEREREREalexvQuABHR1+7WJP/0LgIRERF9IfYYERERERGR6jEYERERERGR6nEoHRF9FEMaLmZIZSEiIqJvA3uMiIiIiIhI9RiMiIiIiIhI9RiMiIiIiIhI9RiMiIiIiIhI9RiMiIiIiIhI9bgqHZGB4sprRERERGmHPUZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6DEZERERERKR6eglGt27dko4dO4qtra1kzZpVihQpIqNHj5a4uLj33g6AjBkzRvLnzy9Zs2YVb29vuXDhgj6KSEREREREpNBLMLp8+bIkJibKr7/+KhcuXJAZM2bIvHnzZNiwYe+93ZQpU+THH3+UOXPmyIkTJ8TS0lJq1Kghz58/10cxiYiIiIiIREQkoz7utFatWlKrVi3lbzs7O7ly5YrMnTtXpk2b9tbbAJCZM2fK8OHDpUGDBiIisnTpUrGwsJCVK1dK165d9VFUIiIiIiKitJtjFBkZKblz537n9Tdv3pQHDx6Ir6+vcpmxsbF4eXnJ4cOH33m72NhYiYqK0vlHRERERET0KdIkGP33338ye/Zs6dat2zuPefDggYiIWFhY6FxuYWGhXPc2QUFBYmZmpvyzsbFJnUITEREREZFqfFIwGjNmjGg0mvf+O3nypM5twsLCpFatWtK4cWPp1KnTBx9Do9Ho/A0gxWXJDR06VCIjI5V/oaGhn/KUiIiIiIiIPm2OUa9evaRZs2bvPaZw4cLK/4eFhYmPj4+4ubnJ/Pnz33s7S0tLEUnqObKyslIuf/ToUYpepOSMjY3F2Nj4I0pPRERERET0dp8UjMzNzcXc3Pyjjr137574+PiIi4uLLF68WIyM3t85ZWtrK5aWlrJr1y5xcnISEZG4uDjZv3+/TJ48+VOKSURERERE9En0MscoLCxMvL29xcbGRqZNmyaPHz+WBw8epJgrZG9vL8HBwSKSNISub9++MnHiRAkODpbz589Lu3btJFu2bNKiRQt9FJOIiIiIiEhE9LRc986dO+X69ety/fp1sba21rkOgPL/V65ckcjISOXvwYMHy6tXr6RHjx7y7NkzqVixouzcuVNMTEz0UUwiIiIiIiIR0VMwateunbRr1+6DxyUPSSJJvUZjxoyRMWPG6KNYREREREREb5Vm+xgREREREREZKgYjIiIiIiJSPQYjIiIiIiJSPb3MMSL6Gt2a5J/eRSAiIiKidMIeIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUj0GIyIiIiIiUr2M6V0AUrdbk/zTuwhEREREROwxIiIiIiIiYjAiIiIiIiLVYzAiIiIiIiLVYzAiIiIiIiLVYzAiIiIiIiLVYzAiIiIiIiLVYzAiIiIiIiLV4z5GKsN9g4iIiIiIUmKPERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqR6DERERERERqZ5egtGtW7ekY8eOYmtrK1mzZpUiRYrI6NGjJS4u7r23a9eunWg0Gp1/lSpV0kcRiYiIiIiIFBn1caeXL1+WxMRE+fXXX6Vo0aJy/vx56dy5s7x48UKmTZv23tvWqlVLFi9erPydOXNmfRSRiIiIiIhIoZdgVKtWLalVq5byt52dnVy5ckXmzp37wWBkbGwslpaW+igWERERERHRW6XZHKPIyEjJnTv3B4/bt2+f5MuXT4oXLy6dO3eWR48evff42NhYiYqK0vlHRERERET0KdIkGP33338ye/Zs6dat23uPq127tqxYsUL27Nkj06dPlxMnTkjVqlUlNjb2nbcJCgoSMzMz5Z+NjU1qF5+IiIiIiL5xGgD42IPHjBkjY8eOfe8xJ06cEFdXV+XvsLAw8fLyEi8vL1mwYMEnFe7+/ftSqFAhWb16tTRo0OCtx8TGxuoEp6ioKLGxsZHIyEgxNTX9pMfTl8KBW9L08W5N8k/TxyMiIiIiMkRRUVFiZmb2Udngk+YY9erVS5o1a/beYwoXLqz8f1hYmPj4+Iibm5vMnz//Ux5KRESsrKykUKFCcu3atXceY2xsLMbGxp9830RERERERFqfFIzMzc3F3Nz8o469d++e+Pj4iIuLiyxevFiMjD591F54eLiEhoaKlZXVJ9+WiIiIiIjoY+lljlFYWJh4e3uLjY2NTJs2TR4/fiwPHjyQBw8e6Bxnb28vwcHBIiISHR0tAwcOlCNHjsitW7dk3759EhAQIObm5lK/fn19FJOIiIiIiEhE9LRc986dO+X69ety/fp1sba21rku+ZSmK1euSGRkpIiIZMiQQc6dOyfLli2TiIgIsbKyEh8fH1mzZo2YmJjoo5hEREREREQi8omLL3wNPmWCVVrh4gtERERERGnvU7JBmu1jREREREREZKgYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUYjIiIiIiISPUypncB1ODWJP/0LgIREREREb0He4yIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1GIyIiIiIiEj1MqZ3AVIbABERiYqKSueSEBERERFRetJmAm1GeJ9vLhg9f/5cRERsbGzSuSRERERERGQInj9/LmZmZu89RoOPiU9fkcTERAkLCxMTExPRaDTpXZzPFhUVJTY2NhIaGiqmpqbpXRyDKo8hlcXQymNIZTG08hhSWVier6cshlYeQyoLy/P1lMXQymNIZTG08hhSWQyxPJ8DgDx//lzy588vRkbvn0X0zfUYGRkZibW1dXoXI9WYmpoa1AfRkMpjSGURMazyGFJZRAyrPIZUFhGW530MqSwihlUeQyqLCMvzPoZUFhHDKo8hlUXEsMpjSGURMbzyfKoP9RRpcfEFIiIiIiJSPQYjIiIiIiJSPQYjA2VsbCyjR48WY2Pj9C6KiBhWeQypLCKGVR5DKouIYZXHkMoiwvJ8LWURMazyGFJZRFier6UsIoZVHkMqi4hhlceQyiJieOXRt29u8QUiIiIiIqJPxR4jIiIiIiJSPQYjIiIiIiJSPQYjIiIiIiJSPQYjIiIiIiJSPQYjIqKvwK1bt9K7CPQZtOsbcZ0jIiLDx2BEOvT1452YmKiX+6Wv18mTJ+X58+fpXQy9Sc3v0h9//CGNGzeWXbt2pdp9fusMJYjs379fREQ0Go3BlIkMz5u/kfzNNFyvXr1Kk8dZv369PH78OE0ei/6HwYh0aDQaERFZtWqV/Pvvv6l2v0ZGSR+1iIgIEUmbSkvyx2CFxHAAkH/++UcqVKggCxculOjo6PQukl5ov0va8PclFR0TExMxNzeXadOmyd9//50q5XtT8vLFx8eLiEhUVJReHistaF//9HTy5EmpWrWqDBkyRETSNxxpHzcmJiZdHt9QGUqPnvY3cu3atTp/Gzp9v25v3n96v089e/aUefPm6fXcmJiYKOfPn5d27dpJXFyc3h6H3u7r+OZRmrp586aMHTtWzp8/LyIiCQkJqXK/q1evltKlS0t0dLReKy3aE2dsbKxyUjGEStLnMpQf7tSi0WjEw8NDRo8eLUOGDJFFixZ9U+EoecDYsGGDeHt7y4MHD8TIyOizw1Ht2rVl2LBhYmJiIlOnTpV9+/alUmn/x8jISK5fvy779++XjBkzytq1a2Xw4MFKY8bX4uTJk3LlyhUREenRo4esXr063cpia2srP/74oyxatEgCAwNFJH3CEQDRaDSybds2adu2rdy8eTNNH99QaV+XnTt3SmBgYLqfh65duya9e/dO18/sp9L+tj558iTV71v7/oiIHD58WHm89PwtfPjwocybN0/WrFmjt3BkZGQkjo6OcvfuXSlQoIBcvHhRHj16pJfH0oevva7CYEQp2Nraiq+vr0ycOFFiY2MlQ4YMqXK/hQoVEisrKzl58qSI6GeoQPIKQKNGjcTT01Pq1KkjBw4cSLPu79SgPbEcOXJEFi9eLK9evfqicKe9v7Nnz8qePXtk5cqVEhcXly4nMG3QHj16tIwYMUL69ev3zYSjxMREpaV327ZtsnPnTjl9+rR06dJF7t+//1nhSNt7Y2NjI8WLF5crV67IyJEj5eDBg6la9ri4OJkxY4b4+PjI2LFjpUmTJuLu7i45c+ZM1cfRFwASGhoqtWrVkjlz5kjHjh1l4cKF4uDgkG7lyZMnj/Tq1UvGjx8vCxculPHjx4tI2lfuNBqNrF+/Xpo3by6FCxdO07CrfZ7//fefXL9+XW7fvp3iuvSi0Whk3bp10qxZM3n58mW6z+PLly+fODo6KiHga7Fw4UKZNGmSiKReQ2piYqLym7d3717p0qWLzJgxQ0TSJxxpz9tr164VLy8vmTJliqxevVov4SgxMVEAiKmpqURGRoqjo6MMGzbMoMKR9vU/fvy4LF68WH788Uf5559/RCT9w+sXA6laXFzcW/++cuUKypcvj5UrVwIAEhMTP+l+33Z8bGwsPDw80KhRo88s7cfZvHkzsmfPjhEjRmDfvn1wdXVFkSJFcOrUKb0+bmrRvnZr165Fnjx5MHr0aJw/f1657nPfi3Xr1sHa2hqVKlWCtbU1ypUrh3Xr1iE+Pj51n8AnGjNmDIyMjPDTTz/h+fPn6VqW1NKvXz+ULFkSgwYNQp06dVCwYEFUq1YN9+7dAwAkJCR80v398ccfsLCwQNeuXVGvXj3kyZMHPj4++Pvvv1O13Pfv34enpyeMjIwwZMgQAEB8fPwnf+bS086dO5ErVy5kzpwZGzZsSLdyaN/jgwcPYujQobCzs4NGo8Ho0aOVY9Lqdb1w4QIsLS0xb948ncvDwsLw+vVrvT/+n3/+CRsbG1hZWcHDwwO//vqrcl16frZOnDiBXLlyYeHChTqXv3r1Su+P/a5zwLZt25A9e3bs27dP72VILWPGjEGuXLkQERGRKveX/LVZtmwZunbtCnNzc9jY2GDmzJnKdWn52UlMTNQpV/v27VG0aFH8+uuviIyM1MtjbtmyBVeuXMHWrVuROXNm9O7dGw8fPtTLY32OtWvXIleuXGjYsCFcXV3h6uqKvn37pnexvhiDkUq9WaFauXIlHj58iNjYWABJISYgIAB169b9osd584Rx5MgRFCpUCDt37vyi+32bxMREREVFoVq1apgwYYLy+IULF0aPHj1S/fH0ad++fTA1NdWpQABQQsyn/iAcPXoUefLkwZIlSwAAt27dgkajwS+//JI6Bf5EJ06cQHBwsPL3txSODh06BCsrKxw4cEC5bOnSpfDw8ECNGjVw//59AB8fju7evYsSJUpgxowZymWbN29GzZo14e3trfM4n0v7ubpx4wYCAgJQsWJF5M6dG7t27VLKaujhSNtocPDgQRQqVAgWFhbo3bu30qigPSYtbdq0CVmyZMGECRPw448/omnTpjAxMUFgYGCalmn79u1wcXEBAISHh2PBggWoXr06cufOje+//x5hYWGp/pja53Xv3j0UKVIECxYswLp169C3b18ULFgQ06ZNS3FsWtE+3vLly1GjRg0AwNOnT7FmzRoEBASgTJkymDlzZpqci44cOaITKMLDw1G3bl2MGjUKANK94epNyd8rbdlevnwJT09PjB07NlXfy2HDhsHc3Bzz58/HwoULUblyZTg7O2Pq1KlvLU9auHLlivL/+gxHhw8fRrZs2bBgwQIAwMaNG6HRaAwmHF24cAHW1tZKY8uZM2eQNWtWDB8+XOc4Q//deBsGIxWaNWsWihYtit9++w1AUmWoaNGiyJs3L3r27IktW7YAAM6fP4/ChQtjzZo1H33fyb8Ec+bMQbly5TBixAg8e/YMABAREQFPT0/88MMPAD695fxtkv9wvHr1Cs7Ozrh+/ToePHgAKysrdOnSRbl+06ZNSlkMkfb1GzRoEJo0aQIgKdzt2bMHnTp1Qt26dXH27FkAn/baLVmyBN999x0A4NKlS7Czs0OnTp2U61+8eJFaT+G9EhMT8fLlS7i5ucHd3R0bN25UrvtWwtG2bduQM2dOXLt2TbksPj4ec+bMQfbs2eHv769URD/mPQwLC4OlpaXSe6u1efNmmJmZwdvbGzt27Pjicq9duxa2trY4ceIErl+/jnbt2iFXrlw64QiAQfwoJ/eu13Dz5s2wtrZG165dceHChTQuVdK5qEGDBujTp49y2cOHDzFt2jTkyJEDY8aMUS7Xd+Xh9OnT0Gg06Nq1K8qVK4d69eph4MCB+PXXX5EhQ4ZU73nUOnz4MAIDA9GrVy/lfQoNDcWoUaNQoECBNA9H2sfQ/nfNmjXQaDSYM2cOPD09UadOHXTu3Bk9evRArly5cPnyZb2W5+TJk9BoNPDz88OQIUMQExMDAJg/fz7y5MmTaj0w+hYXF4c+ffrAy8tLuexL389bt27BwcEBq1evVi67ffs2OnbsCHt7e8yePTvVHutjrVy5Eh4eHti8ebNymT7C0c2bNzFixIgU9SRDCkdbtmxBxYoVASTVIQsVKqRT1zp9+nR6Fe2LMRip0OnTp9GuXTt4eHhg0aJFyuU///wzOnTogIwZM6JDhw6YNGkSWrdujREjRgD4cCVO2xIOJAWQx48fo3///vDw8ICVlRVGjhyJa9euYdWqVTAxMcF///33Rc8jKipK+f9Tp07h/v37SEhIgLOzMwYMGIAiRYqgW7duyvDAR48eoXbt2p8U9NKK9sSufY0nTpyo/Cg0atQIfn5+8PHxQe3atWFubq7z3D/GgAED0LBhQ7x+/Ro2Njbo0qWL8lgrV67E1KlT07Rl58qVK/D29kaNGjV0hjuNGTMGxsbGmDRpEqKjo9OsPJ8r+Wum/f8zZ87A0dERq1at0vnOPH/+HA4ODihVqhTq1auH8PDwj7rfe/fuwdXVVXmPkt+nr68vrKys0LBhw896vbSPEx0dja5du2L69OnKdVevXkW7du2QO3dupeI8ceJE9OjRI02GGn2M5K/T1q1bsWLFChw/flwZHrZmzRpYW1ujZ8+eSoNCtWrVsH79er2XLS4uDi4uLmjfvr3O5Q8fPkS9evWg0WgwePDgVH9c7Wvy8OFDPHv2TDkvr127FjVq1MDgwYNx8eJF5Th3d3ds2rQp1cvx/PlzdOvWDWZmZqhWrZrOddpwVLhwYaXyl1aOHDmCdu3aKY1Bw4YNg4ODA7p3747jx48DSBoxUaZMGRw5ciRVH/ttv6FHjx7F5MmTUaRIETg6OmLQoEH4999/4ePjg9GjRxtEi/uECRN0evjnzZsHb29vhISEKBX0+/fvI3fu3Pjpp59S5TEjIiJgZ2eHOXPmAPjf5/rBgwcoUqQIChUqhB9//DFVHutj7dy5E1WrVkVAQAD++usv5fL27dujePHimD9//heH2atXr6JChQqwtrZWesbi4+OVBuCNGzcic+bMaN++PR49evRFj/U5kg/19/f3x+3bt2FtbY0uXbooZfznn38wfPhwZej414bBSEUGDBigfGmvXLmCtm3bolKlSjrjzhMSEnDgwAG0b98ebm5u0Gg0yJ49u0738dts374dXl5eCAkJQd++faHRaBAREYGEhAS8fv0aU6ZMQf369ZEjRw60aNECuXLlUiphn9NrdO/ePfj7+2Pr1q3YsGEDNBoNDh8+DAD48ccfkSdPHnh4eOjcZvjw4ShZsiRu3br1yY+XFg4cOIDg4GAkJCTg8OHDaNq0KfLkyYM2bdpgx44dSEhIwL59+1ChQoVPPiH+888/sLOzQ44cOZRhhdoTXO/evdG0adNU76VZv349IiIilMd5szXt2rVr8PDwgK+vr07P0eDBg5E7d248ffo0VcuT2pJ/bmNjY/Hy5Uvl/2vWrAlXV1flMwkkfWYbNWqEqVOnomzZsm+tjGpfq1evXinDWgFg5MiRyJ49O3bu3KkcEx8fj7Zt22LixIk6jRKf6p9//kHx4sXh7u6O/fv361x39epVdOrUCRqNBr6+vsiYMSNCQkI++7FSU/IKY//+/WFpaQlzc3M4OTmhX79+Suv7H3/8ATs7O1SpUgXOzs6wtbVNMbdSX8aMGQNvb2+cOXNG5/Jx48ahRIkSKF68OB4+fJhqlV/t/WzcuBEVK1ZE2bJlUbBgQcydOxevX79Oca4dNmwYChYsiNDQ0FR5/DeFhISgW7duMDY2xrJly3Suu3v3LgYMGICSJUsiPDw8zXqMpk+fjpIlS6JLly5KwH/8+LHOcUOHDkWJEiXw4MGDVHvs5K/9xYsXcfXq1RTnuKCgIDRu3BgZM2aEqakpPD09P3v4dGq5dOkSHBwcEBAQgG3btgEAfv/9d1StWhXFihWDr68vVqxYgcjISAwfPhwdO3bUOe9/jLfVAZ48eQJPT0906NAB0dHROvNrW7VqBU9PT1SrVk2n9ya1PHny5J3X7d+/HzVq1ICfn59OOOrYsSNMTU11fss+1/Dhw5E3b15Ur15d+QzGx8crr9Off/6J3Llzp+rn833e9l6ePn0amTJlQsaMGXV6xYGkOoWfn59Bj855HwYjldixYwfatGmjUyE4d+4c2rZtCzc3txRzWaKjo/Hs2TOMHTsWZcqUwZAhQ9468V8btG7cuIGSJUvC1tYWOXPmVCoCySf2vnjxAnv27EGDBg2QP39+lC5d+rOfT0hICBo2bIhSpUohS5YsOsOM/vvvP7Rt2xYlSpRAjx49MH36dLRv3x5mZmYGvQBDzZo1kS9fPmUoY2xsLG7cuKFzzMCBA1GpUqV3tkpp359Lly5hz549SoAKDw9Hhw4dULhwYcyfPx9AUkVdO4b74sWLqfpcBg8eDI1Go7QYHTx4EHXr1sU///yjc9zVq1dRtmxZVKhQQedH5s2KiiGbMGECqlevDh8fHyxfvhxA0vfHyckJLi4uGDp0KFauXAkfHx/UqVMHiYmJsLGxSdFboH3vtm7dCn9/f1SoUAG1atVSwlXHjh1hYmKCsWPHYv78+fj+++9hbW39xa1yjx49UhpB/vzzT52yAEmVhGXLlmHIkCF6H1r0sZKX79SpU/D29sa///6L27dvY9y4cahQoQI6deqkhKMdO3bghx9+wNChQ5VzUmouOqAtT1hYGK5fv670Bp44cQIODg7o3bu3Tjjq27cvxo8f/8k9vx9j27ZtyJo1K3766SdcvXoVI0aMgEajwZ49e3SCU8uWLZEvX75UC7ra+3769KnOMJ/bt2+jU6dOsLe3x++//65zm3v37qX5d/3Vq1f46aefUL58ebRv315p0EhMTMRff/2FTp06IU+ePHprAAgMDISVlRUKFCgAS0tLzJ8/P8V3eNOmTejSpQtMTEx0hoylNW1w/Oeff+Dt7Q1/f3+dRSE2bNiAIUOGKA2eLi4usLCwUHrePiYcJQ9Fly5dQmhoqNKItmXLFhgZGWH48OFKiIyNjUWTJk2wZMkSuLi46AzfSg2enp7KbySQ9F15s+dw37598PX1RY0aNXTmS0+YMOGT54S96zWaMGECHBwcEBgY+NZwlFbDzbXlO3bsGBYvXozdu3cr57dff/0VxsbGGD9+PG7evIkrV65g0KBByJUrl87czq8Ng5FKJCQk6Ayd0v4YnT9/XglH2jlHgG6lYcyYMShTpkyKisSAAQPQo0cP3LlzB0BSZThTpkyoVKkSjh49qnyhtLdLPmznzJkzKFq0KGbNmvXZz2nRokXQaDQoVqxYilaj//77D7Nnz0a5cuVQuXJltGzZ8qv4ogYEBMDOzg4bN25UKnVA0lj03r17I2fOnB8cu7t+/XqYmZnBxsYGuXLlwvz58xETE4MrV66gY8eOyJ07NwoVKgQXFxfY2tqmegXg8uXLKFGiBPbs2QMAuHPnDm7evAlLS0s0bdoUx44d0zn++PHjyJEjh87YbUMYPvIuyX/IJ02ahLx582LIkCFo3rw5NBoNxo0bByCpIaB79+5wc3ODvb09ateurVTCfHx8UjRGAG9fUbFw4cI4d+4cAGDUqFGoUqUK7Ozs4Orqin///TdVntOjR4/g7u6OYsWKvbN32BDfk1WrVqFu3bro0KGDUr4XL15g6tSpKF++PDp37qz0vCWvsOgjFAUHB6NkyZIoVqyYEobCw8MRHBwMR0dHZUXOxo0bw8zMLFVC5tt6vjp06KCsKHjz5k0UK1YMnTt31jlm/fr1aN++fao1iLzZU2Vvb49y5cphzpw5iIyMxNWrV9G1a1fY29unmCuXFq5du6bz+X316hV+/PFHVKxYEZ06dcKrV68QFxeHn3/+GQEBAan6W5H8fLFt2zbky5cPf/31Fw4ePIjhw4fDzMwM48aNS9HYFRERgSFDhqBJkyaIiYlJ8+/fkCFD0Lp1ayW8Hzp0CFWqVIG/v3+K39uzZ89i6tSp8Pb2hkajQf369T+54j5s2DAUKFAAxYoVg5eXF27evAkgqXcqU6ZM8PX1RcOGDeHm5gYHBwcASQ2FHh4eqfZ9Hjx4MOzs7JRzRlhYGAoXLozmzZvj5MmTOsfu3bsXuXLlQo0aNbB27Vqd6z42HGnf0927d6NHjx5o2rQpRo0apXxmxowZAycnJwwdOlQJR9rr0vLzEBwcDFNTU9ja2qJYsWJo1KiREuZnzZqFbNmywdraGqVKlYKjo6PBjCr4XAxGKpD8x1M7/8HX11dJ/e8KR9rb3bhxA9bW1ikqYf3791daxJ89e4YDBw5g586dcHJyQvXq1ZWK8ZsSExMRExODJk2aYMCAAZ/0XJLPxdm9ezfmzZuHli1bonLlyu+dO5RWQ2c+VvLhZW+e4Pz8/FCkSBFs3LgRsbGxuH79Onr37v3WITnJJSQk4MmTJ6hcuTLmzZuHO3fuoF+/fihQoAAmT56MV69e4fnz5wgJCcGPP/6Ibdu2KaE2NT1//hx2dnbo378//vrrL2TJkgXR0dE4fvw4ihYtioYNG+Lo0aPK8f/88w+qVq2KmjVr6qU8+nLp0iXMnDlTaTGMj4/H3LlzkSFDBowdOxZA0nvy6tUrnVbx4cOHw8LCAtevX1cu+9CKisk/I8+ePUN4ePgnD1NI3uMbFhaGe/fu6QwZefz4MVxcXFCqVCmdhSMM1cuXL9GlSxcUKFAAlSpV0rnuxYsXmDZtGipVqoTGjRvrZUnq5O/J7t27kSNHDsycORMxMTEYO3YsMmXKpPSQ7N+/H9OmTUP16tXRvn17Zb7Tlxg8eDC6deumc1lsbCycnZ2xbt06vHjxAvnz50eXLl2Uss6ZMwdXr14FkPpLUm/fvh3Zs2fH5MmTcefOHbRt2xampqbYvn07gKTfmR49eiBfvnz4448/UvWx3+fKlStwdXXFoEGDdN6zFy9eYPz48bCyskLfvn2Vhih99OIBwIIFCzBlyhRMmTJF5/KffvoJWbJkUXrMk1eqV65ciUKFCr13PqI+vH79GoMGDYKbmxv69OmTIhzVqVNHGdmQXGxsLMaOHYvSpUt/cKXD5IFxx44dsLKywpYtWzBv3jz4+voib968yoiJgwcPYuDAgWjatCm+//57JbjUr18fHTt2TJVFnF6/fo1GjRqhY8eOAJK2XLhx4wbWr1+PSpUqoVWrVjhx4oTObby8vFCwYEGlIeJzaENHx44dMXXqVGTJkgV+fn5Kr9moUaNQvnx59OnTJ83nFCUmJuL169do3bo1li1bhujoaCxatAje3t6oWrUq7t69CyCpMXTPnj04ceJEusx7Sm0MRiryyy+/4J9//sHixYtRpUoV+Pn56YSjdu3aoXLlyjr7BABJ8xvy5s2rtFgk/3EZO3YsypYti2HDhinzHK5du4ayZcuievXqOt3ubw4JaNCgAfz8/PD69euPav3QHrN9+3YMHDhQqRieOHECTZo0QeXKlZWhQEDSkCRtmQyxtfuff/6Bvb09Dh8+nKJ81atXh42NjdIyd/v27XeOe9beNiYmBnFxcejXr5/OscOHD4e1tTUmT56s95VsEhISEBcXh7Vr18LCwgKZMmXCqlWrlOtPnDihtDj99ddfiImJwejRoxEYGGjQiy306dNHZz7A3r17odFokCdPnhRLz8+bNw8ZM2ZUAo7WpUuXEBAQgAIFCigtap+yomJwcPBnTezVVmqSt+qXLl0aDg4OMDc3x/Lly5X7ffLkCVxcXFC2bFmDGTan9bbv8JMnTxAYGAgbGxtlkRitFy9eYPTo0ejUqVOqVJy0ks/H0Qau3r17o2fPngCSJqHb2tqie/fuynHahhntnMvUsH//fqX3OPnz69mzJ7777jsUKFAAPXr0UB47JiYGDRo0wPjx41P19Xj9+jViY2PRvHlzpYL4+PFj2NnZ6bwGQNLw7X79+uk0Cujb06dP0atXL7i7u2PEiBEpwlGxYsVgamqqvH/6cOfOHZQrVw4ajUZpDEw+IqBZs2bw8vJKsSz+xIkTYWNjk6bDDbWPHxsbi/Hjx6NSpUro3bv3W8ORds4RoNv4+CmLaixcuBBz5sxRFlkAkira1atXh7m5ubJIU/I5l2FhYQgMDESePHlSdcXJVatWQaPRwN/fHxqNRmnA+PPPP+Hq6orWrVsrPUcRERHo1KlTikV2PsW9e/fg6Oio1LmioqKQL18+9OnTR+c++/XrBy8vrzQLHdrPwOPHjxEVFYX69evr9AKtW7cOXl5e8PHx+aoaMz8Wg9E3LPkX69dff4VGo8GVK1cQFxeHFStWwN3dPUU4qlu3Lrp27apzcp46dapON/KbJ++RI0fCyckJgYGBSqXh+vXrcHJyQtWqVTF9+nQEBATAzMxMKVNISAhcXV0/ec7P2rVrkTNnTvTu3VvntsePH0eTJk3g4eGBGTNmYMyYMdBoNEqLhiGKj4+Hra0typYti2PHjum06N+9exfZs2dHoUKFsHXr1g/e18aNG1G9enU4ODigbNmyKSoeI0aMgJ2dHUaPHp0mJ1ftghh58uTB0KFDda77999/4eHhgYIFC6JYsWIwNzc36Llft2/fhq+vr84Pf1RUFMaPH4/MmTMrP2rJvxPz58+HRqNJMeH8jz/+wNWrV9NsRcXOnTujffv2SmV88+bNMDExwfTp03Hjxg0MHDgQJiYmmDZtmtLQ8OTJE9jZ2cHNzc1gelqTn8siIiIQFxenVCy1q19WqlRJZwlsADpDkFIjDCxZsgQ1a9ZMsXdUixYtsGTJEoSHh6fopdm4cSO2bNmil+F7wP/mj2qHLi1fvhyFCxeGq6urcm5PSEjAsGHDYGdnl2qh5M3X1cvLC3v27NF5DbTWrVun9HYnr+Dqw9sCdHh4OAYPHozy5ctj5MiRyuVPnz5Fq1atEBQUlKoVvDfLEB8fj927d8Pb2xvW1tZK0NF+JgIDA1GzZk2d20RERKBr167pcm7UvqexsbH44YcfUKlSJfTq1Us5b/3zzz+oUqWKzoIMwP8aeqpXr56iYQhIWgEx+bCz27dvo0yZMtBoNAgKCgLwv9fu8uXL8PX1TdG7/ujRIwwfPhxFixbVy2vj6uoKjUajNLQkX4XN3d0dlStXRp8+fVCtWjW4ubkpr9X7zi/vui40NBROTk6Ij4/H7du3U3xvkjcsp3VPTHBwMIoUKQI3NzdYW1unGHa7bt06VK9eHc7OznrZBy09MRipwJ49e7Bw4UKsWLFCuSw+Pl4JR/7+/soP6I0bN5Qv8YfGySY/Kb0tHN24cQN16tRBlSpVULNmTZ1KVkxMzHtXfnmbkJAQ5M6dW9nwTEtbIbh8+TI6d+4Me3t7lCpVKsWYYEMUHx8PR0dHlCxZUglHQFJIbdmyJerWrfvBYU0hISHImjUr+vbti4YNGyJPnjzo1q1bitX3+vXrB0dHx09+3T/V3bt3sWTJEqxcuRLz5s1DoUKF0L9/f51jbt++jY0bN2LBggVfvGx7Wlq+fLnS6xYVFaVMbNcuupDchg0b3loZTqsVFVetWoW8efMq39Pw8HDUq1cPEydOBJD0HhQtWhTOzs7QaDSYNGmS8tkIDw9PsfBHekleqZgyZQpq166tnGsuXboEIGlp6n79+qFSpUrKHK/kUqvHeN26dXBxcUGzZs1w6NAh5fJ27drB0dERhQoVQq9evZT3PSYmBi1btsSYMWO+OBglfx2SzzPQ9l4mH1I0atQolCtXDpUqVUKXLl3w3Xff6WVBgSVLlsDNzQ0AUKtWLfj5+cHOzk6np+r58+do0KABZs6cqfeee+39Hzx4EBMmTMCAAQOUXvfnz58jMDAQ5cuXR5cuXRASEoIhQ4bA09MzVXtk3lytUvv7lJiYiCNHjqBs2bIoVqwY7t69i+joaMTFxaFKlSrKvnXJpXXDxNven9jYWIwbNy5FODp8+DB8fHzg5uamLE6QmJiI3bt3Q6PRpJinFRMTg19//VWnp0wbGKtUqQJbW9sUq/RduXIFTk5O8Pf317n8wYMHeqmMnzx5ElWqVEG3bt3eugH6nj170KdPH2XecvKe4A+5c+eOMqJl1apV6NixI65duwY7Ozv8/vvvsLOzQ5cuXZTzxOXLl+Hj45NiwSJ9Sh5Kc+bMiYkTJyIwMBCOjo4oUqRIinC2cuVKBAQEGOxKv5+Lwegbd+HCBWg0Gmg0GmVZbm3g0YYjT09PVKxYUWc55Q990f/66y/Y2tpi4cKFymVvC0dRUVF4/PixzkIMn/vjuHr1avj4+ABIqritXLkSfn5+KFasGCZNmoTExERERkbiwYMHBjfOVfucT58+jZUrV2LTpk3KeOXXr1+jVKlSKF26NDZu3Ig7d+5gzJgxaNu27Qd/GC9cuIDx48crlV0gqfLo4uKCfv364fbt2zrH6/N1SUhIwH///Yc8efIoCyzcv38fM2bMQOHChVOEo6/NkydPkDVrVnh5eSkVqejoaAwbNuyd4QhIOdE/rVZUnDJlCuzt7QEkrXLVr18/LFiwAA8ePMDDhw/h4OCgjKfv3r07cuXKhR9++MFgl1gdOnQo8uTJg/nz52Py5MmoVKkSqlSpogx3efjwIQYMGAA7Ozud81Jq2Ldvn/Id/uuvv1CxYkU0adJEWd787t27cHJygqWlpXIbbS+NjY2NMq/nS4WGhioVpT/++EPZ8mDv3r3IkSMHWrdurRy7du1a9OnTB3Xr1sXQoUNTbWhk8mE2lStXVlr6//77bxQpUkT5zGlpe6rSqgFk7dq1yJ49O3x8fODh4QGNRoMePXrg0aNHeP78OaZNm4aSJUvCysoKRYoUSbUFTN40fvx4VK1aFSVLlsSIESOUoHD06FGULVsWOXPmhIuLCzp06ICSJUsq5/r0Gvad/Df/0aNHiIqKUkKddt7cm+Fo79696NmzZ4r6wpvLv795Tvnhhx+UPYji4+Nx4MABlC9fHmXKlEkRju7cuZOqQz+Te/N+4+PjERMTgxcvXiijTubOnatzjHbejdbHNHjExcWhWbNmcHd3R79+/aDRaDB//nzEx8ejdevWyJEjB+rWratzm2HDhqFixYpp3htz8OBBbNy4Uel9T0xMxOHDh1G5cmWULFkyxXB8fc3JS08MRt+42NhY/PHHH7C0tETz5s2Vy7Vf5vj4ePz222/o2rXrJ518QkJC0LZtW1SoUEFnk9iRI0fC2dkZw4YNSzE04UtPblu3boVGo8HkyZPh5uaGgIAAdO/eHYMHD0b27NnfuzCBIVi7di3y5Mmj7C2SP39+ZRhWfHw8fHx8YG1tDRsbG1hYWHzwBzs0NBRVq1aFubk5Ro8erXPd5MmT4eTkhEGDBimr++jD237EGzRoACcnJ+UH7tGjR0o4GjRokN7KktqSf161m0FevHgRtra2qFatmhIyo6OjMXz4cGTKlOmtK829TVqsqHj8+HGUKFECPj4+0Gg02Lhxo9IjNH78ePj6+irv0ZgxY2BtbY3cuXPrvUfxc6xfvx4ODg7KMsDbt2+HsbExHB0dUbFiReX1uX//PmbNmvXJS+a+z549e1C8eHEEBgYqn/fNmzejYsWKaNy4MQ4ePAggaeiJtbU1ihcvjoCAAAQEBMDc3DzVemkiIiLQpEkTeHt744cffoBGo8HSpUt1yqkNR6n5/N/m8OHDaNu2LZo0aaLMT4uIiMDkyZNhY2MDb29v9OzZE02aNEGuXLnSbJWqGzdu6GxJACS9L+bm5speK7GxsXj06BFOnDiht32KJkyYgNy5c2PkyJEYPnw48ufPD39/f+zevRtA0jydmjVrIleuXDpLQetjkZCP8WbZfXx8YGtrix49eijDRrXhSLsgw5vzHRMSEt6651L37t1RvHhxpYIfHx+PwMBAaDQa5XwZHx+P/fv3o1KlSihbtuxbG2dSOxwlL+Mff/yBBQsW6AxVfvToEcaOHavTqKwt69vu40OePXuGihUrQqPR6My927JlC5ydnVGjRg38/vvv+Ouvv9C7d2+YmpqmeZ3m5cuXqFKlCjQajU4PZmJiIv755x94enqiTJkyX7Rv3teAwegb8q4Tx4sXL7B69WpkzZpVZyMu7Rf8bUM0knvXl//s2bNo3749nJ2ddcLR6NGjYW1tnaKl5VO86zGDgoJQtmxZ9OrVSyc4ODk5pRj3n96Sv5Znz55F7ty5MXfuXLx8+RKXLl3CDz/8gAwZMig7hScmJmLHjh3YvHnzR4eZuXPnonTp0ihXrlyK7uxp06ahcOHCGD58uN5/cG/duqUMkTh//jy8vLwQFBSktII+efIEP/30E0xMTFJMkjdEyd+7X375BdOnT1eC/uXLl2FjY4Nq1arp9Bz17t07xRC45NJjRcUePXpAo9Eow520OnXqhEaNGimfi/79+2PPnj0G21u0f/9+9O3bF0BSKMmTJw/mzZuHDRs2wNzcHJUrV04xdDa1wkF4eDgGDBiASpUqYejQoSnCUaNGjZTAFhYWhgEDBqBnz54ICgpKldX9km8YuX//fjg5OUGj0WD48OEAkj5X2s+rdnW8jh076mWfE+0qi6NGjUL+/PlRvHhxnesjIyOxf/9+NGrUCA0aNMCAAQP0tojHrFmz8Pfff+tcdunSJdjZ2eHff//VmbO5bt06aDQaJZjo08WLFzFhwgSduaGnT59G5cqVUbduXTx58gTx8fHYu3cvPDw8UKZMGaXVXd+B9kOGDx+OPHnyYMWKFVi8eDG8vLxQtmxZZYGZmJgY/PDDDyhSpIjS4/OhcHD16lUULVoUVapUUcLRy5cvMWHCBJ0eGW048vDwgKWlpV736Xlzc+jcuXOjRIkSsLa2RqNGjZTrHj16hHHjxiFDhgyYNm3aFz1mXFwcqlatinLlyqFGjRo68083btyINm3awMzMDGXLloWPj0+6NfRevnwZDRs2RL58+VL08h4+fBilS5dGpUqV9NaLZwgYjL4RyT+k69atw88//4wpU6bo9AytWrUKWbJkwffff//W233IihUrsGnTJp3Lzpw5gw4dOqBMmTI6Q4J+++23zz7Ja09aBw4cwIQJE/D9999jz549yh4wb1behg4dimLFihlMK0bypWi1r+/GjRtRrlw5nZN9VFQURo8eDTs7O2Wfms+xaNEiuLm5oUWLFinmhfz00096nysSEhICjUaDDh06IDg4GACUMenJh1Q8fvwYc+fO/SqWgtYaNGgQ8ubNi2XLluk8l0uXLqFAgQKoXr26Eo5evXr1zkpCeqyo+PLlS1StWhWdOnVCyZIl0bJlS+W6SZMmwdjYGP369UOzZs1gYmKizNdJb+96vg8fPsTLly/h7e2N8ePHA0hqYXdxcUGBAgWUYYGpORRJe/6Mi4tDYGAgvL29MWrUqLeGI23PUWratWsXXF1dlc/ekydP4OTkhJIlS8Lf318Zygf871yjnXPUo0ePVCtH8pXKgKSemXHjxiFLliwpNirWt4SEBERGRsLLyyvFueTUqVMwNjZWJq3HxsYqZS9btiwmTZqk17Lt2bMHGo0G2bJlw/r165XyAkmNY1myZFGWcE9MTMTBgwfh6ekJa2vrNG+UePPxtmzZosx1BZI+e1myZEH58uVRqlQpZfuNV69eYdGiRR/8fd+xY4cS+G7cuAE7Ozt4eHjohCNtz2fycLRz50506dJFLyHxzXPDo0eP4Ovri3PnzuHevXvYsGEDLCwsULt2bZ1jBg4cCHd397ducv8pYmJicP/+ffj7+8PHxyfF4jyhoaGIjo5O881bk0tISMD169dRpUoVFCpUSOd3LzExEceOHfvm5hS9icHoG5D8wz1kyBAULFhQaYmyt7dXlrNMSEjAqlWrkD17drRt2/aT7vfOnTuoUqUKqlSpgh07dugcd+bMGRQrVgwlSpRI0Uv0ubtAr1u3DiYmJmjevDkqVqwId3d3DB48WGc86+bNm9GhQ4dUHa7ype7cuYOMGTPqnFiBpI39smXLlmL/kn///Rf58uXD3r1733u/2tclJCQECxcuxMqVK3VayOfNmwdPT080a9ZMr0Pn3mbfvn3Ily8fvL290apVK7Rv3x6RkZGws7ND165ddY79mlqZ5s+fj/z58+t8tuLj45XhN5cuXULBggVRtmxZnWEl7/rhTI8VFbVDABcuXIgSJUroDKcNDAyEh4cHatWqZTDDUJN/Pm7evIkzZ87oDO27du0a8ufPrzTQ3Lt3D02bNsW6dev08tnSvpenTp3CsGHDULRoUeTJkwdjx45NEY6aN2+u04ORGgHt/v37yudNu/FuREQEdu7ciVq1asHX11cnHGkdOnQo1YPusWPHkC9fPuVzGRoaitGjR6NEiRI6qwEmX3VOH/NltBV6bU/q0aNHsW3bNuWxmjdvjuLFi+s8//j4eJQvXz7FZPrU9vTpU4wbNw6ZMmVSVmWLj49XPpseHh5KTx+Q9Prs2bMHvr6+aboITb169VKcm8+ePavMA92yZQvMzc0xf/58HDx4UNm8882G0Xf9vq9YsUIZgqat5N+8eRNFihSBu7u7TjgaP348jIyMlOFqyb/HqRmO3pxv+9NPP6FSpUpo2rSpslXE69evsX37dlhYWOgs+PDs2TPl85Uan+n//vsP/v7+qFatmjIcNjAwMMVGzPqkfR6HDh3CmDFjMGjQIJ263Y0bN+Dp6YlChQoZ9Oq++sBg9A356aefYGVlpQwxW716NTQaDYoXL65UxBISErBo0SL4+Ph89PKS2rkUhw4dwnfffYeqVasqm/ZpNWrUCKVKldJZpvZzHT58GDY2Nsrqc7du3UL27NlRvHhx9O7dG8+fP8fr16/x22+/oUGDBqm6j8GXSkhIwN69e5Ux5VpXr15FxYoVMXDgQJ0TdHh4OBwdHd+6WZ5W8rCYN29eeHh4wNHREZ6enjoT/ufNmwcfHx/4+/unSYtO8pWcRo4cCXNzcxw7dgy1atVC7dq10bZtW2TPnj3FruBfi379+ilB4urVq1iwYAGcnZ1Rrlw5LF68GEDSviz169f/YKU8vVdUfP78ORYtWpQiHEVEROisEpWekp83hg0bBldXV5iYmMDf3x+9evVCYmIinj59imrVquG7775DcHAwfH19UaNGjY9aMvdTy6C1adMmZMqUCWPGjMGUKVPg6emJUqVKYfjw4crxW7ZsQYkSJdC+fXulZ/tLzJkzRwlCQFJFqlixYjpDoTdt2oTatWujdu3aSjgaN25cin3oUsuFCxfg4uKCggULKhXb27dvY/To0bC3t3/raoCpbcGCBejSpYtyfnv16hVcXFzg4uKiVOpCQkLg5+eHokWLYuvWrdizZw+GDRuGPHnypOr+Se/6rEVHRyMwMBBGRkZYsmSJcvnLly9RvHhxpdcqeUU7NT4zn+LGjRtKgNU2ngD/Wwq/du3aOmHXx8cHRYsWRZs2bZQyf8jw4cOROXNmzJ0794PhaOLEidBoNEovW2obMGAAvL29lbLHxMRg7ty5KFy4MEqWLKlz7OvXr7Fjxw4UKFAA5cuX17kuNYP+jRs3UL9+fTg6OqJ8+fIwNTXV2fhcn7Sf3fXr18Pc3By+vr5o3Lix0nunvf7GjRvw8fGBiYkJ7t27lyZlMwQMRt+IJ0+eoG/fvspwto0bN8LU1BQzZ85ElSpVYG9v/9bNAN92ck9+2bhx49CiRQtlgujevXtRt25dVKtWTfkhev78Odq2bYtVq1Z9catKTEwMNm3ahA4dOgBI+mIWKVIE7dq1w5AhQ5A3b14MHjxYOdGmVZfzx0j+nA8cOABLS0u0atVKuWzq1Kmwt7dHv379cOzYMdy/fx9DhgxBgQIFPtgio+2V0bZ47ty5EyYmJihcuLDOxNAZM2bAz89P7y08J0+eTPHj2aJFC2URiClTpqBBgwbKJE5DqXy/S/LPvLaSMnLkSFSoUAG9e/dGhQoV0LBhQ/Tu3Rt9+vSBtbV1ipWX3te6uXr1auWHOTw8HCtWrFBWVAwKClJWVHz48KHeVg7U7lru6OiIOnXq6OUxUkNQUBDMzc3x999/48mTJ2jevDnMzMyUeTyLFy9G5cqVUbhwYVSrVu2Tlsz9EO1iFAkJCUhISMDz589Ro0YNnUVDIiIi8P3338PBwQHjxo3TGSaZGr21YWFhqFChAqytrZX7CwsLw+jRo1G2bFmd1R03bdqEgIAAFCtWDHXq1IFGo0m1Vdbedg6/ePEiqlSpAisrK6Vie+vWLYwbNw4WFhZ6H6o2atQolC5dGoMGDVLC0d27d+Hu7g5PT09lDtHp06fRpk0bZM+eHSVKlEDp0qVTdVRB8s/aqlWrMGXKFIwaNQpnzpxRAsegQYNgZGSEli1bIjAwEAEBAShZsmS6LbCglfw89dNPP6F8+fI6K409ePAABQsWVBpxHj9+jKZNm2Lt2rUf9bue/P6HDRuGDBkyfDAcvXjxAkuWLNHba/Pw4UOd+a5A0nd96dKlMDExUeobWq9fv8bGjRtRp04dvY5yuHv3LhYuXIixY8fqfUPtLVu26IwMOHLkCKysrJSFSu7duwdjY2MYGRkpQ5WBpF56Pz+/r2oI/JdiMPpKve0EtXPnTty7dw9nz55F0aJFlZ2ktd3aOXPm/KRlY4cOHYp8+fJh5cqVOktG7tu3Dw0bNkTRokXRtGlTVK5cGS4uLl/canvy5El069YNoaGhuHr1KmJjY1GjRg20b98eQNIQjcKFC8PCwgIDBgxIt2VN30Vbnm3btqFXr14oW7YsNBoN6tevrxwzbdo0VK5cGRkzZkTp0qVRoECBD/5gv3r1CoGBgcrO7Ldv34atrS0aN26M1q1bw9raWqfnKC3Gql+8eBFDhgxRJtUePXoU8+fPR+fOnZUhLFevXsXUqVNTbAxnaJJ/XufNm4fffvsNz58/x+XLl9GzZ09UqlQJP/30k7LyWXBwMLy8vFKsyvQ+hrKiYnR0NH755RdUqFDB4FoAExMTERERgdq1a2PVqlUAkuYpZM+ePUVPW3R0NG7evKm8d6lRoVq1ahVKliyp01MDAFWqVFFWkdJ+x6OiolCpUiVYWVmhf//+qX4uOn78OGrXrg1bW1ull+P+/fuYOHEiSpYsqROODhw4gMmTJ6NDhw6p3nt+5MgRZZiR1oULF+Dl5YX8+fMr8+Bu3LiBSZMmpWqPzLtMnz4d5cuXR79+/ZThZ9ow6eHhoTOc8cqVK7h3757eVlocMGAA8uTJAz8/P1hZWaFUqVIYNWoUXrx4gcTERGWfM19fX+zatUsJTekdjoCkRshz584pc2q0DTKRkZFo0KABqlatinnz5qF69erw9PT8qN/35NtyaAUGBr41HBUrVgyenp4pGpj0+dqsWrUKGo1G+Z5ERERg8eLFyJcvX4phbMkD3tc0BPxtHjx4AFtbW7Rv3175HVu0aJEyrPPOnTsoWLAgevbsiR9//BEajUZndU9D+LymJQajr1DyL+nbfpCXL18OHx8fpRVo48aN6N27NwYOHPjRY3aPHTsGW1tbnZ2Xkz/W+fPnMX36dPj5+aF79+6p0mo7a9YslC5dWtnf5+LFi7C3t1eGidy5cwf16tXDyJEjU3WX8tS0fft2ZM6cGbNmzcK6desQFBSEXLlywc/PTznm7t27OHjwIA4cOPDWymnyjeBWrlyJPn364M6dOzh06BCio6NRoUIFpYVr//79yJYtG0xMTHSWqE1tyTd+O3bsmFKR13a1e3p6ok2bNnBwcNDZWf5rol1oYfHixcr7Ehsbq1MxjI2NRZ06dVCvXr0PLrTwJkNZUfHFixefFOr06c3X6sWLF3BxccGpU6ewadMm5MiRQ5m3GBsbi/nz5+tsrAqkXqVl/fr1qFatGqpUqaKEo1evXqFt27aoXbs2njx5ovNYw4cPR5EiRVCvXr0Ue3t8jr59++r0uJw4cQK+vr4oXLiwEjjCwsLeGo6A1K+8PX36FE5OTrC3t9cZbpWYmIiQkBAUKlQIJUuWVBrN9F15St7i36lTJxQvXhz9+/dXeo604ahy5crYvn27XuecAUm9dQUKFND5Lg8ePBgeHh6YOnUqEhISEB4ejtGjR8PIyAirV6/WeR5pbffu3Vi3bh0AoHfv3krv/qVLl2BtbQ1fX19lePSGDRtQt25d2Nvbw8/P76N+35Nf9/r1a52/Bw0a9NZwlCNHjhRznfTp1q1bqFmzJqysrJQGO204srS0RLdu3dKsLGnt33//Rfny5dGpUydcv34dT58+xbFjx/Dy5UtUr14dnTp1QkJCAkJDQ2Fubg6NRvPFK/F9rRiMvjLJT8w///wzWrZsidGjR+sEmLFjxyJPnjx48uQJnjx5goCAAAwZMkS5/s1w1KNHjxRDQHbt2gVbW1uEhYWlGB73+vVr5UcweXk+9YdRe9vkP7re3t6oXLkygKSekRIlSiAoKAiPHz/G6NGjUaNGjRQbwBmKxMRE9OnTB40bN1Yui4uLw44dO5AzZ040aNDgg/fxro3gtA4ePAhnZ2elonT69GnUqlULo0aN0tvkXe37FBwcjMKFC8Pe3h5ZsmRB+/btER4eDgCYPXs22rVrp2wmrK+x4vryyy+/wMrKShluCiR9nrW9b8+fP8eqVatQs2ZNlClT5p0Vha99RcW0lPzcod1c+tmzZ3BxcYG/vz9y5cqlM1n+v//+Q61atd67tPmX2rFjB+rWrQt3d3flO3bq1ClkzZoV3bp10xnm2KdPH0ycOFFnrt3nio+Px4IFC1L0Hh8/flwJR9qhLPfv31dCtj4rlfHx8dixYwcqVqwIV1dXnQaCxMRE1KtXDxqNBiVKlEB8fHya9OCvWrUKZcuWRf369VG8eHFkyZIF/fv31+k5cnd3R5kyZVIs5f0lgoKClHl/2uf522+/oWTJkoiIiFAue/nyJbp06QInJyfldzYqKgpDhgyBsbGxzpyjtPT48WPUrVsXlStXRv369ZElSxadXuqLFy/C2toa1apVUxpNXr58mWJz9nd5c3uDFi1aoFGjRjr1jqFDhyJDhgw6CzLcv39fb0uUvyvE3blzB35+fsibN69OOFqyZInSq/+tCgkJgZOTEzp27KicT27fvo1y5copC0A9evQIHTt2xC+//GLwoz30hcHoK5L8h2fs2LHIlSsXmjdvjpIlS6Jy5crK6iaRkZFwcHBA9uzZUaRIETg6Or6zlerFixfw9fVNcf3mzZuRIUMGZehd8pPX33//jQMHDnz2RmfJbdu2Dc2bN1cWc7h79y6KFCmCH374AUBSy1aRIkU+etPT9NaoUSMl2Gm9fv0aI0eOhEaj0VmQ4V3etREckDTHy8zMTNnbZOjQoWjevLneh89pw92vv/6K2NhYZWhYw4YNlflMYWFhmDx5MvLnz58mQ2pS0/fff6/0wl2/fh1Lly6Fq6sratWqhaVLl+Lly5fo3bs3unTpolQQ3qwofO0rKqalN7cXCAgIUHqBt27dChMTE2Vlx/j4eERERMDPzw/e3t56qUhp38sLFy5g3LhxyJMnD7y8vJSeo507dyJbtmyoUaMGWrRogVatWiFbtmx6+Zxv3bpVZ8Pmd4WjkSNHolKlSqnSWwW8/RweFxeH3bt3w9nZGeXLl9eZK9i7d28EBwen2ZDMixcvIm/evPjtt9+U79KIESNQqlQpnZ6ju3fvolq1aqm2AM2hQ4dQpkwZfPfddzqrii5YsABFixZVwrL2N/T27dswMjJSlrcGkhpWevXqhdy5c+ucB9LS+fPnUaxYMWg0GsyYMUO5XPt9unjxImxsbODr65viM/WxvW+DBw+GhYUFfvjhB0ybNg1ZsmRB3bp1leuHDx8OY2NjTJs2TWfBidT+Ticv74kTJ3DixAmdukNoaChq166tE46ePn2KLVu2pPteUvqmDUedOnXChQsXcPv2bWg0Gixbtgzh4eEYMWIEXFxcDGr+dlpjMPpKJP+ynjx5Er169VKG32j3EnJ2dlZWy3rx4gV+/vlnLFu27J0VudKlSyt7KgDAsmXLlPGnz549Q5UqVeDv76/TExETE4OqVati7NixX/ycEhMT0blzZ2g0GuTKlUvp9ZgwYQK+++47XLlyBS9fvsTff/+NdevWpfky1J9j/fr1KFasmLKfj9ayZcvg5uaGkiVLplg29E1vbgSX/D26du0amjVrBktLSzg5OcHExESnl0MfIiMj0aVLF+U91y6I0ahRI+TMmRMBAQE6c9fS64f/c2gn2Xfr1g0eHh4YNmwYKleujO+++w6dO3dGx44d4ezsjJiYGISHhyuVx3f9eH7NKyqmleSVlv3796NZs2bIkycPOnTooMw3+OWXX6DRaFC1alVUrVoVVapU0emp00flZc2aNShUqBA6duwILy8vWFhYwMPDQ5kzd/bsWfTu3RsBAQFo3LixXuaFJSYmKs9d2zgE6IYjbRh78OBBqs2dedvSvdrGKu1mpM7OzihatCh+/vlndOrUCQULFvzguSw1HTlyBBYWFinOd9rK9qBBg97akJcaVq9ejerVq6NevXrK+/7w4UOYmZmlmLh/7tw5lCxZMsXnIzo6OtVC7KfQvrdXrlyBn58fqlWrhqpVq+qsFqqtG1y6dAmZMmXS2evwYx0/fhz29vbKfl4bNmxAjhw5UiyR3r17d3h6euqthzH5/Y4YMQJFihRB0aJFYWJigunTpyufjbt378LPzw+WlpYpttFQQzhydnZGx44dcfv2bUyePFlZwThXrlyqbKxLjsHIwL3Zrbtu3TqUK1cO5cqV02mpO3v2LDp06AAXF5e3dte/+UXv3r07nJ2dlb9fvXoFY2NjVKlSRflx+f333+Ht7Y0KFSpg7dq1WLx4sTKU6HPHk795Mjx27BiaN2+O8ePHo0KFCujevTs6deoEBwcHg+7S1j6P69ev48SJE8qQshs3biAgIAB169ZVxnMnJiZi8ODBGDRoEF69evVR9//mRnDJw9Hly5exYMECBAUFfdJiGp8rNjYWf/75J65fv47w8HClKx7432RWPz8/pSyGtihGcu9q+bx8+TIaNWoEV1dXTJ8+Xal8rVixAlWqVNEJe+96fl/ziorpoV+/fnByckLnzp3h7e2NfPnyoXXr1sp57dixYxg4cCAGDhyIn3/++Z0NPKnhzp07sLOzw4wZM5T3d8WKFahatSo8PDyUniNtj0nyvXpS24sXLzBv3jwYGRnprPp4/Phx+Pn5wcTEJFU3bf7Q0r1A0mf+/PnzaNCgARwdHeHm5pYmlafkG2oePnwYBQoUUOaYJe+9srOzg5WVFYYPH464uLhUOwclH0mxbt06eHt7o169ekrvw/bt22FiYoImTZpg27ZtOHLkCPz8/FCpUqV0n7D/rsc/ceIEGjZsiCpVqqTYSiEuLg63bt36qGDw5mu8Z88eZenr4OBg5MiRQ1kxNSoqSmcIbGruCfQu2pUS9+/fj+joaPTu3RsajQYjRozQCUcVKlT4qJEc3xptz1Hnzp1x7do1/PvvvwgODv7mN2/9GAxGBmzNmjVo1KiRzklq69atqFWrFnLkyJFiHse5c+fQuXNn2NjYvHdfHABo2rQp2rVrBwD48ccf8e+//yI0NBT58+eHt7e30juzY8cOtGjRAqampnB1dUWDBg2+uNV29+7dSot6QkICevXqhXbt2iEyMhLz5s1TepE0Gg0OHz78WY+RFtatW4c8efKgYMGCyJkzp7IyXEhICOrWrYvChQujXLlyyj4A586d++THeNtGcKNGjULfvn1T9bl8iDbQrVixAm5ubkrL/qpVq+Dt7Y1ChQqlaevx50heUVi9ejXGjRuH8ePHK62FL168UOa6AEmVBH9/fzRs2PCDP+Bf+4qKaW3Hjh3Imzcvjh07plw2bdo0VKhQAa1bt1Y+X2+eY/TVknvp0iXkyZMnxQaty5cvR+7cuVGtWjWd5XRT6/3TfiYfPnyY4vszZ86cFOHo8OHDaNiw4Rcvnfu5S/cCSXMQ3lypLrW96/WtUqUKypYtq9NQ8fjxYzRq1AgDBw5M1Upd8vPF5s2b8eTJE6xbtw5Vq1ZFvXr1lPPG4cOHYW9vj0KFCqFYsWLw9vZO1SXkP0fy12/ZsmWYPHmyzv40Bw8eRMOGDVG1alUlsNSsWRNTp05Vbvex37VFixZh1qxZOHz4MHx9fTFnzhydUKR9vBYtWijD1pIHXn24dOkS/P398ddffwFI6r3KmTMn2rZtiwwZMmDkyJFK48ajR4/SPcSml5CQEFSoUAFNmzZN0w2GDR2DkQF79uyZcnLSfsGBpOEOtWvXhqenJ7Zu3apzm5CQEAQFBb3zpLZw4UIAwIQJE1C5cmVUrVoVZmZmSgtkaGgoLCws4OXlpfNFCQ0NRXR09EdNxHyf+Ph4TJgwARqNBm3atMGhQ4eQmJgIJycnZVx9VFQUevfujfz586dJj8inSN5TVKpUKcyePRvnz59Hnz59YGZmhp9++glAUsVix44d6Ny5M0aNGvVFQ6aSbwTn6uoKU1NTZV+ptDZ+/Hg4OjoqC2AEBgZi9uzZ6bbS0sdK/iM8ePBgFCxYENWrV0edOnWQM2dOnZXOIiIisHz5cvj5+aF06dIfVcn5FlZU1Kc3X7tt27bBwsIixfDYMWPGIGvWrGjbtq0SjvRRiXrz/h48eIDy5cvrDLXRcnNzg4mJCXx9fVOlp2jx4sU6Ffh169ahSJEisLa2RsmSJTFlyhRlMY6ff/4ZRkZGOsPqPrbX+V0+Z+ne2bNnp9leZNr3Zvfu3ejRoweaNm2KkSNHIiEhAbdu3YKjoyPKlCmDHTt24PDhwxg2bBgqVKiQqvMsk38+hg4dCktLS2VI2KpVq+Dj44N69eopG6c/f/4cV69exaVLl1J1CfnPkbzs2uXEnZycYGtrCzc3N+XzrQ0rNjY2cHBwQNGiRT/5PB4TE4OAgAA0aNAAT58+RYkSJaDRaDBx4kTlmJcvX6J27dpo1qyZ3sLQm+eXR48eKYs8HDx4ENbW1sr2Je3bt4dGo8H333//wT0d1eD48ePw8vLS2ZJF7RiMDFCHDh2UHZATExNx9OhRWFtbK63PQNKPRr169eDj45MiHGm9+QPv4+Ojs8tzqVKlkClTJp3NC4H/hSMfH5+3rkqSGie3M2fOwNfXFx4eHvj++++xbds2BAQEKOOTgbTZj+dz7Nu3D3PnzkWvXr10Lh8yZAhy5syJn376SafnITWk5UZw73Pq1CkYGxvDw8MD1apVg6mpaZrtwZMafvnlF1hbWyubhf7+++/QaDTImjUrdu3aBSCp4ti2bVu0bdv2gwstfCsrKqaV8ePHY/ny5di2bRuKFCmirKaprZRER0fDzs4OLi4u6Natm15fr+3bt+PHH39U/m7dujVKlSqFvXv3KuWJiYlBq1atMGPGjFSpOERFRcHCwgLOzs4ICwvDqVOnkCtXLkyYMAG7du1Cjx494Orqii5duuDBgwcAkvbWSu3Vsj5n6d7p06en2uN/SHBwMExNTdGxY0dMnTpVmcT/8OFDhIaGolq1aihUqBDy58+PwoULKyvGpbZx48bB3Nwcx48f11nifsOGDahRowa+++67ty4IZAiV7PDwcDRp0gRnz55FVFQU9u/fj5IlS6J06dJK3eD8+fPYsGEDZsyY8clDVbXnwJCQEJiYmODYsWMICQmBsbExmjRpgtmzZ2P16tWoWrUqSpcurdxvar82ye/v2rVruHv3rk6I79OnD1q3bq00KAwZMkSZt6j2nnutL21s+dYwGBmY27dvw9vbG/nz51fmOTx+/BjTp09XxoNq7d69G9999x2qV6/+weWRtXsuaIcgLF26FLa2tqhXrx6qVKmCmTNn6hyvHVZXpkwZvQ2RevDgAZYvX45y5cohR44csLW1RWBgoF4eKzU1b94cGo0Grq6uKfaDCQwMRL58+TBlypRvthJ8+PBhtGrVCj179lRanA3Vm3tr9O3bV1mgZPPmzTAxMcG0adPQokULZM+eXenhSb4E77t6X7+1FRX1Ifnrv2rVKpiamipDSt3c3ODs7KzTM33z5k00adIEQ4cORfHixZUGotQWHx+PiRMnplihy93dHaVKlcK4ceMQHByMvn37onjx4srKi6nhzp07cHR0hIeHB/744w8MGDBA5/rZs2fDyckJs2bNApAUvhctWpTqS+ca6tK99+7dg6Ojo/KbFBUVhbx586J37946x505cwbnzp3T21L34eHhqF69ujK/8+7du9izZw86deqE1atXIygoCH5+fvD09DS4VTjnzp2LokWLonbt2sr8V20ja8mSJVG2bNm3ntfeN3zuXSEiKioKzZo1UxoK//77b9SpUwc2Njbw8vJCixYt9LZoSvIyDRkyBMWLF4e5uTm8vLyUHqKqVauiZcuWAJKGR9erV09nqgHDEb2JwcgAaSe5WlhYKC1hT58+xcyZM1GmTBl0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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "weights = vectorizer.inverse_transform(lr.coef_)[0]\n", "sorted_weights = sorted(weights.items(), key=lambda t: t[1])\n", "util.plot_bar_graph([w for _,w in sorted_weights[:20]],\n", " [f for f,_ in sorted_weights[:20]],rotation=45)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "More obvious **discriminative** features for the negative class \n", "\n", "* Conditional log-likelihood down-weighs a feature $f_i$ for $y=-$ \n", " * if $f_i$ is active in $\\x$\n", " * but gold label is $y=+$\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Positive weights? " ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0MAAAHeCAYAAABZp9BbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACU90lEQVR4nOzdZ1RU19s28D02UBEUC6AgIiJdRTqKYBfU2LvYWzT2ir23WBB7QbHFil1jjYoFe0vyjy1RQYTYRVAB4Xo/8M555jhY0GEgzvVba9aCM2fm7Jk57d7l3goAEERERERERDomT04XgIiIiIiIKCcwGCIiIiIiIp3EYIiIiIiIiHQSgyEiIiIiItJJDIaIiIiIiEgnMRgiIiIiIiKdxGCIiIiIiIh0Ur6cLoCmpKeni0ePHokiRYoIhUKR08UhIiIiIqIcAkC8fv1alC5dWuTJ8/H2n+8mGHr06JGwsLDI6WIQEREREVEuERMTI8zNzT/6/HcTDBUpUkQIkfGBDQ0Nc7g0RERERESUUxISEoSFhYUUI3zMdxMMKbvGGRoaMhgiIiIiIqLPDp9hAgUiIiIiItJJDIaIiIiIiEgnMRgiIiIiIiKdxGCIiIiIiIh0EoMhIiIiIiLSSQyGiIiIiIhIJzEYIiIiIiIincRgiIiIiIiIdBKDISIiIiIi0kkMhoiIiIiISCcxGCIiIiIiIp3EYIiIiIiIiHQSgyEiIiIiItJJDIaIiIiIiEgnMRgiIiIiIiKdlOVgKDIyUjRu3FiULl1aKBQKsWvXrk+u36VLF6FQKNQejo6O0jrh4eGZrvPu3bssfyAiIiIiIqIvkS+rL0hKShKVK1cWXbt2FS1atPjs+gsWLBAzZ86U/n///r2oXLmyaNWqlWw9Q0NDcevWLdkyfX39rBaPiIiIiIiEEOVG7dfq9u7PbKjV7WlCloOhgIAAERAQ8MXrGxkZCSMjI+n/Xbt2iRcvXoiuXbvK1lMoFMLU1DSrxSEiIiIiIvoqWh8zFBYWJurUqSMsLS1lyxMTE4WlpaUwNzcXjRo1ElevXv3k+yQnJ4uEhATZg4iIiIiI6EtpNRiKi4sTv/76q+jRo4dsuZ2dnQgPDxd79uwRmzZtEvr6+qJatWrizp07H32vGTNmSK1ORkZGwsLCIruLT0RERERE3xGtBkPh4eGiaNGiomnTprLlXl5eomPHjqJy5crC19dXbN26VVSsWFEsXLjwo+8VHBwsXr16JT1iYmKyufRERERERPQ9yfKYoa8FQKxevVoEBQWJAgUKfHLdPHnyCHd390+2DOnp6Qk9PT1NF5OIiIiIiHSE1lqGTp48Ke7evSu6d+/+2XUBiGvXrgkzMzMtlIyIiIiIiHRRlluGEhMTxd27d6X/7927J65duyaMjY1F2bJlRXBwsIiNjRXr1q2TvS4sLEx4enoKJycntfecNGmS8PLyEjY2NiIhIUGEhoaKa9euicWLF3/FRyIiIiIiIvq8LAdDly5dEjVr1pT+HzJkiBBCiM6dO4vw8HARFxcnoqOjZa959eqViIiIEAsWLMj0PV++fCl69eol4uPjhZGRkXBxcRGRkZHCw8Mjq8UjIiIiIiL6IgoAyOlCaEJCQoIwMjISr169EoaGhjldHCIiIiKiHKXLk65+aWyg9XmGiIiIiIiIcgMGQ0REREREpJMYDBERERERkU5iMERERERERDpJa5OuEhERERF9z7SdsECI3JW04L+ILUNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREemkLAdDkZGRonHjxqJ06dJCoVCIXbt2fXL9EydOCIVCofa4efOmbL2IiAjh4OAg9PT0hIODg9i5c2dWi0ZERERERPTFshwMJSUlicqVK4tFixZl6XW3bt0ScXFx0sPGxkZ6LioqSrRp00YEBQWJ69evi6CgING6dWtx/vz5rBaPiIiIiIjoi+TL6gsCAgJEQEBAljdUqlQpUbRo0UyfCwkJEXXr1hXB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stwydOnSJeHi4iJcXFyEEEIMGTJEuLi4iPHjxwshhIiLixPR0dHS+lZWVuLAgQPixIkTokqVKmLKlCkiNDRUSqsthBA+Pj5i8+bNYs2aNaJSpUoiPDxcbNmyRXh6en7r5yMiIiIiIspUlluG/P39pQQImQkPD1db5ufnJ65cufLJ923ZsqVo2bJlVotDRERERET0VbSSTY6IiIiIiCi3YTBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTvqqYGjJkiXCyspK6OvrC1dXV3Hq1KmPrtulSxehUCjUHo6OjtI64eHhma7z7t27rykeERERERHRZ2U5GNqyZYsYNGiQGDNmjLh69arw9fUVAQEBIjo6OtP1FyxYIOLi4qRHTEyMMDY2Fq1atZKtZ2hoKFsvLi5O6Ovrf92nIiIiIiIi+owsB0Pz5s0T3bt3Fz169BD29vYiJCREWFhYiKVLl2a6vpGRkTA1NZUely5dEi9evBBdu3aVradQKGTrmZqaft0nIiIiIiIi+gJZCoZSUlLE5cuXRb169WTL69WrJ86ePftF7xEWFibq1KkjLC0tZcsTExOFpaWlMDc3F40aNRJXr1795PskJyeLhIQE2YOIiIiIiOhLZSkYevr0qUhLSxMmJiay5SYmJiI+Pv6zr4+LixO//vqr6NGjh2y5nZ2dCA8PF3v27BGbNm0S+vr6olq1auLOnTsffa8ZM2YIIyMj6WFhYZGVj0JERERERDruqxIoKBQK2f8A1JZlJjw8XBQtWlQ0bdpUttzLy0t07NhRVK5cWfj6+oqtW7eKihUrioULF370vYKDg8WrV6+kR0xMzNd8FCIiIiIi0lH5srJyiRIlRN68edVagR4/fqzWWvQhAGL16tUiKChIFChQ4JPr5smTR7i7u3+yZUhPT0/o6el9eeGJiIiIiIhUZKllqECBAsLV1VUcOXJEtvzIkSPCx8fnk689efKkuHv3rujevftntwNAXLt2TZiZmWWleERERERERF8sSy1DQggxZMgQERQUJNzc3IS3t7dYsWKFiI6OFn369BFCZHRfi42NFevWrZO9LiwsTHh6egonJye195w0aZLw8vISNjY2IiEhQYSGhopr166JxYsXf+XHIiIiIiIi+rQsB0Nt2rQRz549E5MnTxZxcXHCyclJHDhwQMoOFxcXpzbn0KtXr0RERIRYsGBBpu/58uVL0atXLxEfHy+MjIyEi4uLiIyMFB4eHl/xkYiIiIiIiD4vy8GQEEL07dtX9O3bN9PnwsPD1ZYZGRmJN2/efPT95s+fL+bPn/81RSEiIiIiIvoqX5VNjoiIiIiI6L+OwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ66auCoSVLlggrKyuhr68vXF1dxalTpz667okTJ4RCoVB73Lx5U7ZeRESEcHBwEHp6esLBwUHs3Lnza4pGRERERET0RbIcDG3ZskUMGjRIjBkzRly9elX4+vqK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ronFixdr6nMSERERERHJZDkYatOmjXj27JmYPHmyiIuLE05OTuLAgQPC0tJSCCFEXFycbM6h5cuXi/fv34t+/fqJfv36Scs7d+4swsPDhRBCvHz5UvTq1UvEx8cLIyMj4eLiIiIjI4WHh8c3fjwiIiIiIqLMfVUChb59+4q+fftm+pwywFE6ceLEZ99v/vz5Yv78+V9TFCIiIiIioq+SpTFDRERERERE3wsGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDqJwRAREREREekkBkNERERERKSTGAwREREREZFOYjBEREREREQ6icEQERERERHpJAZDRERERESkkxgMERERERGRTmIwREREREREOonBEBERERER6SQGQ0REREREpJMYDBERERERkU5iMERERERERDrpq4KhJUuWCCsrK6Gvry9cXV3FqVOnPrn+yZMnhaurq9DX1xfly5cXy5YtU1snIiJCODg4CD09PeHg4CB27tz5NUUjIiIiIiL6IlkOhrZs2SIGDRokxowZI65evSp8fX1FQECAiI6OznT9e/fuicDAQOHr6yuuXr0qRo8eLQYMGCAiIiKkdaKiokSbNm1EUFCQuH79uggKChKtW7cW58+f//pPRkRERERE9AlZDobmzZsnunfvLnr06CHs7e1FSEiIsLCwEEuXLs10/WXLlomyZcuKkJAQYW9vL3r06CG6desm5syZI60TEhIi6tatK4KDg4WdnZ0IDg4WtWvXFiEhIV/9wYiIiIiIiD4lX1ZWTklJEZcvXxajRo2SLa9Xr544e/Zspq+JiooS9erVky2rX7++CAsLE6mpqSJ//vwiKipKDB48WG2dTwVDycnJIjk5Wfr/1atXQgghEhISsvKRsk168hutbu9znzs3lUfbZREi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "util.plot_bar_graph([w for _,w in sorted_weights[-20:]],\n", " [f for f,_ in sorted_weights[-20:]],rotation=45)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Evaluation\n", "\n", "How can we quantify how well our models do?" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Use **accuracy**, the ratio of the \n", "\n", "* number of correct predictions and the \n", "* number of all predictions \n", "\n", "$\\hat{\\y}$ is predicted sequence of labels, $\\y$ the true labels:" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "$$\n", "\\mathrm{Acc}(y_1,\\ldots,y_n, \\hat{y}_1,\\ldots,\\hat{y}_n) = \\frac{\\sum_i \\indi [ y_i = \\hat{y}_i]}{n}\n", "$$" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def accuracy(gold, guess):\n", " correct = 0\n", " for y_gold,y_guess in zip(gold,guess):\n", " if y_guess == y_gold:\n", " correct += 1\n", " return correct / len(gold)\n", "\n", "train_Y_lex = [y for _,y in train]\n", "dev_Y_lex = [y for _,y in dev]" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dev accuracy = 0.895\n" ] } ], "source": [ "lr = LogisticRegression(C=1000, penalty=\"l2\",random_state=1, tol=0.00001, solver='liblinear')\n", "lr.fit(train_X, train_Y)\n", "lr_guess = label_encoder.inverse_transform(lr.predict(dev_X))\n", "print(f\"dev accuracy = {accuracy(dev_Y_lex, lr_guess)}\")" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## More on Feature Functions\n", "\n", "Reminder: For log-linear models we need **feature functions** $f_i(\\x)$ mapping input to a real value, e.g.\n", "\n", "$$\n", "f_{\\text{Pulp}}(\\x) = \\counts{\\x}{\\text{Pulp}}\n", "$$\n", "i.e., the number of times *Pulp* appears in the input $\\x$. " ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "How to get a better feature function?" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Stop Words\n", "\n", "Non-content words" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[nltk_data] Downloading package stopwords to /home/daniel/nltk_data...\n", "[nltk_data] Package stopwords is already up-to-date!\n" ] }, { "data": { "text/plain": [ "{'!',\n", " '\"',\n", " '#',\n", " '$',\n", " '%',\n", " '&',\n", " \"'\",\n", " '(',\n", " ')',\n", " '*',\n", " '+',\n", " ',',\n", " '-',\n", " '.',\n", " '/',\n", " ':',\n", " ';',\n", " '<',\n", " '=',\n", " '>',\n", " '?',\n", " '@',\n", " '[',\n", " '\\\\',\n", " ']',\n", " '^',\n", " '_',\n", " '`',\n", " 'a',\n", " 'about',\n", " 'above',\n", " 'after',\n", " 'again',\n", " 'against',\n", " 'ain',\n", " 'all',\n", " 'am',\n", " 'an',\n", " 'and',\n", " 'any',\n", " 'are',\n", " 'aren',\n", " \"aren't\",\n", " 'as',\n", " 'at',\n", " 'be',\n", " 'because',\n", " 'been',\n", " 'before',\n", " 'being',\n", " 'below',\n", " 'between',\n", " 'both',\n", " 'but',\n", " 'by',\n", " 'can',\n", " 'couldn',\n", " \"couldn't\",\n", " 'd',\n", " 'did',\n", " 'didn',\n", " \"didn't\",\n", " 'do',\n", " 'does',\n", " 'doesn',\n", " \"doesn't\",\n", " 'doing',\n", " 'don',\n", " \"don't\",\n", " 'down',\n", " 'during',\n", " 'each',\n", " 'few',\n", " 'for',\n", " 'from',\n", " 'further',\n", " 'had',\n", " 'hadn',\n", " \"hadn't\",\n", " 'has',\n", " 'hasn',\n", " \"hasn't\",\n", " 'have',\n", " 'haven',\n", " \"haven't\",\n", " 'having',\n", " 'he',\n", " 'her',\n", " 'here',\n", " 'hers',\n", " 'herself',\n", " 'him',\n", " 'himself',\n", " 'his',\n", " 'how',\n", " 'i',\n", " 'if',\n", " 'in',\n", " 'into',\n", " 'is',\n", " 'isn',\n", " \"isn't\",\n", " 'it',\n", " \"it's\",\n", " 'its',\n", " 'itself',\n", " 'just',\n", " 'll',\n", " 'm',\n", " 'ma',\n", " 'me',\n", " 'mightn',\n", " \"mightn't\",\n", " 'more',\n", " 'most',\n", " 'mustn',\n", " \"mustn't\",\n", " 'my',\n", " 'myself',\n", " 'needn',\n", " \"needn't\",\n", " 'no',\n", " 'nor',\n", " 'not',\n", " 'now',\n", " 'o',\n", " 'of',\n", " 'off',\n", " 'on',\n", " 'once',\n", " 'only',\n", " 'or',\n", " 'other',\n", " 'our',\n", " 'ours',\n", " 'ourselves',\n", " 'out',\n", " 'over',\n", " 'own',\n", " 're',\n", " 's',\n", " 'same',\n", " 'shan',\n", " \"shan't\",\n", " 'she',\n", " \"she's\",\n", " 'should',\n", " \"should've\",\n", " 'shouldn',\n", " \"shouldn't\",\n", " 'so',\n", " 'some',\n", " 'such',\n", " 't',\n", " 'than',\n", " 'that',\n", " \"that'll\",\n", " 'the',\n", " 'their',\n", " 'theirs',\n", " 'them',\n", " 'themselves',\n", " 'then',\n", " 'there',\n", " 'these',\n", " 'they',\n", " 'this',\n", " 'those',\n", " 'through',\n", " 'to',\n", " 'too',\n", " 'under',\n", " 'until',\n", " 'up',\n", " 've',\n", " 'very',\n", " 'was',\n", " 'wasn',\n", " \"wasn't\",\n", " 'we',\n", " 'were',\n", " 'weren',\n", " \"weren't\",\n", " 'what',\n", " 'when',\n", " 'where',\n", " 'which',\n", " 'while',\n", " 'who',\n", " 'whom',\n", " 'why',\n", " 'will',\n", " 'with',\n", " 'won',\n", " \"won't\",\n", " 'wouldn',\n", " \"wouldn't\",\n", " 'y',\n", " 'you',\n", " \"you'd\",\n", " \"you'll\",\n", " \"you're\",\n", " \"you've\",\n", " 'your',\n", " 'yours',\n", " 'yourself',\n", " 'yourselves',\n", " '{',\n", " '|',\n", " '}',\n", " '~'}" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import string\n", "import nltk\n", "from nltk.corpus import stopwords\n", "nltk.download('stopwords')\n", "stop_words = set(stopwords.words('english')) | set(string.punctuation)\n", "stop_words" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "Shouldn't the model learn to ignored those since they are distributed similarly across classes? \n", "\n", "Let's see what weights our model learned for non-content words" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": "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ByxTpkxJXU6yqic51ZLc6klOtSS3epJTLdTz76kludWTnGqhnn9PLcmtnuRUS3KrJznVkhzr+Sck2ZkzZ25pfVS/BaOpU6f+7RpGf9ekdaNxRTeTIkUKy5cv320/LrnKlClTsnojJqd6klMtZsmrnuRUi1nyqic51WJGPTeTnGoxS171JKdazKjnZpJTLWbJq57kVItZ8qonOdVilvzquV1/11Lklaym6wYAAACApEAwAgAAAOB6BKNkKiAgwIYNG5ZspiJPTvUkp1rMklc9yakWs+RVT3KqxYx6/i21mCWvepJTLWbU82+pxSx51ZOcajFLXvUkp1rMkl89/ubRrcxdBwAAAAD/YbQYAQAAAHA9ghEAAAAA1yMYAQAAAHA9ghEAAAAA1yMYIcEwj8e/y/bt25O6BAAAgGSDYPQfkVShpG3btjZy5EgzM/N4PH6vIzY21q+/3y1mz55tbdu2tY8//jipS0m24r7X3Pi+u/Y5c+ED/hATE5No+/K+hxNznzeqgc8TEsprr71m8+bNS+oy/jMIRv9C3hOW6524JebBNjIy0nLlymWvvfaavfPOO2aW8OHowIEDNmfOHDMz++STT6xz585J+qX2X1G2bFnLnj27ffDBB4Sja0RHR1tsbKylSJHCNmzYYGZmKVK471Dpfc7fffedmV39bLvRli1b7NChQ0ldxn+G97vqzJkzZmaWMmVKW79+vUVHR/ttn97vpGv3uW3bNr/t80a8n6PTp08n+r6vx/v5xq259oJRUl80GzFihL3yyitWtmzZJK3jvxT03fdt/x+QIkUK27dvn3366admZvbxxx9bpUqV7MqVK4l68hIYGGgDBgywvn372tChQ23s2LFmlnDh6PLly9a/f3978803rW/fvta6dWsLCwuzlClT3vHvTgrX+5skxcHkypUrVqxYMZsyZYqlSZPGZsyYYbNnz070Osxu/qWSFH+bPXv2WLNmzezkyZP26aefWqVKlWz16tWJXse1vv766yQJsGvWrLFu3brZ2rVrE33ffycx3h/z58+3Bg0a2IQJE+zs2bN+39+d+jecnKRIkcIOHjxo7du3t6+//trmzp1rISEhtnHjRr/t0+Px2LFjx6xu3bq2YMEC+/LLLy0kJMQiIyP9ts+bmT17tj3++ON27ty5JNm/17Zt26xOnTq2aNGiJK3D7Op793rv36QOHnFJci4YLVmyxMyuvp+Tqsbz58/bunXrrEePHlaoUCHbunWr7d271+/79b5OJ0+etMOHD5vZf+vCGcHoX8b7hhwxYoT179/fevXqZR06dLAePXpYqlSpEq2OK1eumJlZjhw5rHr16ta8eXPr3bu3TZkyxcwSJhylTp3aJkyYYDExMfbWW29Zt27d7MknnzSz5HWwvBWSzOPx2PLly+3NN9+0V155xS5evJgkBxPvgT0mJsbCwsJsy5YtSdIU722VMTObMWOGvfTSS/bss8/aihUr7NKlS0nyt8mYMaMtX77catWqZa1bt7YPPvjAqlSpkqQnnKtWrbKWLVuaJOdzl1hy585tMTExtnz58kTd77W8f/99+/bZjh07bNeuXX7f5+LFi61169b24osv2lNPPWUZMmTw+z5v17p162zevHn27bffmtnV425yPTbG/QydOXPGTp06ZQMHDrQ2bdrYtGnTLDQ0NMFrj/v7jh8/buXLl7devXrZo48+arNnz/bLPm/FyZMn7Y8//nBayZLqNQsKCrKGDRvapk2bzCxpuhieP3/e2bfH47Eff/zRRo8ebaNGjbLTp08nm9b62NhY5ztpw4YN1qlTJ+vfv7+ZJV048n6mfv31VxszZoxVqlQpUcK+x+Oxzz//3GrUqGFVq1a1Rx991H799dd/xYWZWyL8K8TExEiSLl686NxWvXp1eTwedenSxbktNjY2UesaMGCAqlSpombNmikoKEgBAQEaO3ZsgtVz6dIl1apVS2XLllWdOnU0c+ZM5z7v3+TfYsGCBQoICFBYWJiyZs2qkiVLasOGDUlSy+eff6506dLp2WefVadOnZQrVy6FhYXpk08+SfRa+vXrp6CgIPXo0UO1atVSiRIlNHz48ER9L0dGRurEiROSpKlTp8rj8aho0aLav3+/U0dif7Ykaf/+/XrppZc0bNgwv9fg/Txd+3zfe+89FShQQL/99pvf9n0z3jo+//xzFSlSRGXKlFHWrFnVrVs3/fzzz37Z54ULF9S8eXM9//zzkqRz585pz549GjlypObNm6eoqCi/7Pd2zJs3T5kyZVKBAgVUpEgRtWjRwrkvuR4bjx8/rmPHjkmSpk2bppQpU6pEiRJavHixs01C137o0CHn/2fOnCmPx6NcuXLp888/99s+44r7mY37/6VKlfL57k4q48aNU4YMGRQREZHo+546daqyZs2qo0ePSpLmzp2rdOnSqXLlyipQoIBy586tLVu2JHpd14r7ur377rt68sknFRQU5HyHeiXW5y4yMtL5/xMnTihLlixKkyaN8z1xbc0JbcOGDcqVK5eGDx+uadOmqXDhwqpcubJ+/PHHJPmeTGgEo3+Rw4cPa/DgwVqxYoUkqXbt2goJCVGpUqU0depUnT17VpLvh9Ofb9I5c+YoQ4YMWrFihaKjo7V9+3Y9++yzypAhg8aNG5dgNVy8eFFHjhxRw4YNVbNmTZ9wJElXrly5o9/vT97X4uzZs2rfvr0+/PBDRUdH6+TJk7r//vtVqFAhrV271q81XLhwwaklNjZWx48fV+nSpfXyyy872+zatUu1atVSlSpVfE4Y/G3+/PkqWLCg1q9fL+nqyW+qVKn02WefJVoNp06dUuPGjfXuu+/qzJkz+uqrrzRhwgQVKFBAVatW1S+//HLdcOTvk6n9+/crT548ypo1qwYPHuxznz/t2rXL5+ctW7aoSpUqmjVrlqSk+bz98MMPypQpk8aPHy9JmjRpkjwej2bMmOGX/Z0/f14VK1bU008/rZMnT6pnz5564IEHlC9fPgUFBel///ufX/Z7K2JjY3Xp0iU99thjmjFjhg4ePKiZM2eqRIkSqlOnjrNdcgtHZ86cUefOndWxY0edPHlSP/30k95//301bNhQtWvX1qeffupsm1C1R0dHq1GjRnrwwQclSb/++qumTJmiXr16qVixYj7vn8T+e73//vuqWbOm9u3bl6j7/fXXX3X8+HHn50uXLqlmzZoaMmSIrly5kqgnttu3b1fFihVVrFgxHT58WH379tWHH36oK1euaP/+/XrkkUeUM2fOJLuAeK1hw4Ypc+bM+vTTTzV//ny1a9dORYsWVa9evZxt/P0+eu+991SkSBHnffPHH3/I4/EoMDBQrVq10tatW/26/61bt2ratGkaOnSoc1tUVJTKli37nwlHBKN/kR9++EH16tXTc889pwMHDji3t2jRQiVLltTUqVN17tw55/ZLly75pQ7v73311VdVqVIln/siIiL05JNPKmXKlJo6dWqC7nfPnj1q2LChHnzwQecLbfDgwercuXOy+iCuW7fO54ryjz/+qLJly6pu3bo+B/jLly/rgQceUKFChbRu3Tq/1DJ16lS1bt1aJ0+edG47f/68SpYsqbfeekvS/x/If//9d+XIkUNhYWEJ/tp5XfulMWHCBDVo0ECS9Mknn/ic/J47d04bN25MlNd2+PDhqlOnjqZMmeK8dseOHVO+fPlUtWpVbdu2zdl20aJFfq0l7vOdMGGCMmfOrNq1a8cLLP7wzTffyOPxqEOHDnrvvfec25999lkVKlQo0U8eL1++LEkaNGiQ2rdvL+nqiUCRIkV8rrafOXMmwfc9bdo0pU2bVpkyZVLTpk01bdo0SVLv3r1Vs2bNJAsep0+f1qlTp9SiRQvnfRkdHa0vvvhCxYoVS9bhaNq0aQoPD1ffvn2dk/Pt27erXr16evDBBzVnzhxn20WLFvn0kPin1q5dq9q1a6tly5bObb/88ou6du2qYsWKOYFfkhYvXqzt27ff8T6ffvppn9D12muvqWrVqpozZ45zLPYeb99+++073t+tWrp0qVKmTKn69etr3LhxzvnCSy+9pPLlyzvbJeb36e+//67KlSsrODhYderU0erVq537Tp06pSZNmihHjhzauHFjotV0PcePH1flypV9josnTpzQSy+9pPz582vAgAHO7f78+0VERKho0aKqUqWK9u/fr0uXLmnnzp36/fffFRQUpEcffVS//PJLgu83NjZWFy9eVLZs2eTxeNSxY0ef+//66y+VLVtWVatW1bfffpuszsluF8HoX+a7777To48+qo4dO+qPP/5wbm/ZsqVKlSqlDz/8UGfPntWQIUMUEhKi2NjYBHmDfvXVV7r//vt9bps9e7Zy584dr4vN4sWL5fF45PF49PHHH9/xvuPau3evmjZtqlKlSqlSpUrKlCmTz4E0KcXGxmrFihXyeDx68803nZO1gwcPqlSpUvJ4PPr+++8l/f8Jy5UrV/Tggw8qMDDQL1fFhg8frkqVKql79+46deqUJOnPP/9USEiInnnmGacGbz3NmzdX1qxZ1aJFC5/m+oQ2ffp0nTt3TiNGjFDbtm31888/K0OGDE4okqSPPvpIw4YN019//eW3OuKeOI4ePVr33nuvVq1a5dx+/Phx5c+fX9WrV9eCBQs0ZMgQpU6d2i/dTryfU28Y8HrvvfeUK1cu9evXz+cznxCuPXG+dOmSFi1apI4dOyo4OFghISH64IMPtHLlStWrV88JzP7+0vP+/iNHjkiSWrVqpTfffFOXL19Wnjx51LVrV2eb2bNna+HChX6p47ffftM333wj6f//Vk899ZTatWuXICftt2vevHm69957Vbt2beXOndvnJD46OlqLFi1yjo3JSdz3yyeffKJ69er5tAp7w1GdOnU0ZswYDRs2TB6PJ0E+Z7Gxsdq4caNKliyp999/37n9119/Vbdu3VS0aFG9+uqrGjZsmO666y7t37//jva3b98+NWvWTCVLlnSe488//6x69eqpSpUqKlSokD788EMdP35c06dPV/ny5RP8c30z8+fP18iRI5UxY0bVrl1bw4YN0969e5UrVy7nYlliiPue2L17tx566CF5PB6ne6z383b69Gk99thjSpEihTZv3pxo9V3r4sWLKlGihAYNGuRz+19//aXq1asrderUeu6555zb/XmMPHTokEqWLKkKFSr4vF/Xr1+vXLlyJXg4ivtcDhw4oCJFiqhEiRLaunWrz32RkZEqWLCgateurfPnzyfY/hMbwehfIm73lQULFmjKlCmSfE9s2rZtq8KFC6tcuXLKkSOHVq1alWD7P3LkiAoWLKhGjRo5t23atEkVKlTQc889pz179ji3r1u3Tq1atdJHH33kl243Bw8e1JQpU/Tiiy9qx44dCf7779Tw4cN111136e2333ZO6g8ePKjSpUurXLlyzoEs7olww4YN9fvvvyd4LTExMRozZoxCQ0PVtWtX/fnnn5Kunpx4PB6fq1+S1KNHD40bN86nRTKh6vB65ZVX5PF4dODAAW3cuFF33XWXPB6PZs+e7Wxz4cIF1a9f3+cEODF8/fXXzv97A8qJEydUunRplS1bVgULFvRLgPU+x2+//VYdOnRQ8+bN1alTJ6d1dsKECcqTJ48GDBiQYF1vvF0sJWnnzp06fPiw0x03MjJSx48fV+fOnVW3bl2lT59eAQEBatu2bYLs+1Z8/PHHSpkypc6ePauRI0cqd+7cypUrl5555hnntYmNjVV4eLh69+6t6Ohov9azfft2Pf/88woMDPTLFdm/s3HjRmXLlk3PP/+8+vXrp0KFCik0NNSnZ0B0dLTmzp2rSpUq3fEJvj/FbSH3Hht27typ1q1bq2LFiipRokSCfs4uX7583WPa9u3bNWDAABUqVEhlypRxuvTeqS1btqhz584qXry4TyvYr7/+qiFDhjjfBdWqVVPx4sX17bffSvJfC9/OnTvjdbHat2+fRo0apYoVK6pgwYLKkSOH6tevr/PnzyfahY/t27fr119/lXS1C2/16tV19913O2OOvNudPHlSbdq00c6dO/1al9f1Xodz586pY8eOatKkSbzv6n79+ql+/foKDQ31ubjnD96/ycGDB1WiRAlVqlTJ5zvBO/6nRYsWdxwkvfuKiorSlStXnIurERERypkzp2rVqhWvhTUqKkp79+69o/0mNYJRMha3tSfuScy128QNH7NmzdLEiRP90u3m2LFjKliwoMLCwpzbxo0bp6JFi6pz585asGCBtm7dqoceekitW7e+4RXw/6q4z/Oll15S6tSpNX78eJ0+fVrS/x/IKlasGC8c+YP3fRETE6NRo0YpNDRUXbp0ccLRyJEjnck7RowYoR49eihz5sw6ePBggtYR9zlu3LhRb731ls9g67feekvp06fX0KFD9csvv+inn35SvXr1VLp0aZ8TYH/U9Mcff2jPnj1Oy4SX94vRu/9z587p119/dQaO+8O8efOUPn169enTR2+99ZYKFiyoUqVKOa/XhAkTVLBgQT311FN3dNLbr18/n66egwcPVv78+VW0aFHVrl3bOSnxOnbsmCZPnqwHHnhAGTNm1Lx58/7xvv+O93X5888/1blzZ7355puSrnajrV+/vnLlyuVcXb9w4YIGDRqkPHny+P2Eaf369Xr88cdVokSJJLlqvX79es2ZM8cZXH3p0iWtW7dORYoUUbVq1XzC0aVLl5yAm9S8r+fOnTu1fft2ny6pUvwJP/766y8dOXLEmQjlTva5a9cubdy4Md5n5dqLdZcuXdLJkyfvaJ/X7luSNm/erCeffFIlSpSI13Pit99+05w5c1S+fHl5PB6FhYX57Xty4MCBypMnj4KCghQaGqqdO3c6fwNvvRMnTlT79u2VKlUqffnll36pw8u7z7lz5+qee+7Ryy+/7Hzn/P777woNDVXhwoWd49C17xF/ixuKNm7cqK1btzrdH1esWKFs2bKpU6dOzsWR8+fP69FHH9W7776rRx99VI888kiijcM8ePCgihUrpooVK/qEo40bNyp16tRq167dP75g5P17L168WE2aNFHlypXVpEkT57s7IiJCQUFBqlWrVrK8QH0nCEbJmPeN+eWXX6pBgwZq3bq1Xn/9def+uAdSf3wQ4x6IvL//8OHD8QbnT548WQ0bNlSqVKlUtGhRlS9f3vmi/jf3M71d3uf6/fffa/78+cqSJYsy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MDDwjr5wr/3SGjFihCpXrqytW7dq5cqVKlWqlCpWrBgvHP3xxx/xurHcaBKYO6lr7ty5Tp/9LFmyqGHDhs4A8FmzZiksLEyNGzd2TcvR119/rcyZM+u9995TdHS0vvzyS3k8HrVs2VIHDhxQRESEypYtqyJFiiT4RCn/1LJlyxQUFOTTOrxr1y4NGjTougvxRkZGavjw4cqSJYtOnjz5j06stm7dqrRp06pp06Y+31fDhw9XihQp4i0ELl2dFCdr1qw+67olhLlz52rGjBn64IMPnNt27dqlUqVKqVy5cs57d+3atRo1alS8z1VCvY5Lly7VvHnztGDBAknXb2WMezz05+c7rjVr1qhFixbOYuY///yz0qZN6ywZ4TVgwACVLl063gQw/vLFF1/EC8l79uzRY489phw5cjhjHL1/s7Nnz+rhhx/2WStMuvo978+JeaZMmaKmTZtq165dypcvn7p06eJ8n/zwww96/vnnfRbtvR1xWykvXrzo0/rjvdDQqFEjn7/TwIEDVbx48WQ98+WdIBglE2vXrlW9evUUHBzsJP6jR49q1KhRuvvuu33mx5euXr346KOP/NIda9GiRfJ4PNednaZfv35Knz69ZsyY4beDaHLnPSCtX79eRYoU0aOPPqqVK1dKujr9aOXKlVWvXj2flqFnn31W33zzjV9P7rytIYUKFdKyZct87vvtt99UrVo15cqV67onDAntRuPS4oaDgwcPqlu3bqpdu7bfrjh5f+/XX3+tnj17OmFn8+bNat68ue6//36facKlq105rp2lLiFrWbBggWrWrOms25ElSxan5XHjxo1q3769ihQpojJlyqhBgwZ3tJJ53L9r3JPBSpUqOVcgV65cqXLlyqlSpUo+C0R7xT15SujXaeXKlcqaNasmTZokSc4EHd4uIzExMZo9e7ZKlCihFi1a/Oe76EZGRjrjFqSr78XChQvrscceU2BgoBo3bqx9+/Zp3759CTqe4E7FxMRo5cqVKliwoE9LwL59+9S7d29lyJDBZyFV6Wp3r396PPRecNqxY4cCAwPVtGlTn4k6evfurYCAgOtOeJDQoejAgQNKnz6901Uvrt9//1333XefKlasGO/ENe76cQlh0KBByps3r8qVK6c0adKoffv2TpC+9957FRISct1WxsQYwzNz5kyVLVtWbdu2dS7yTJo0SenTp9cD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z549fVpjypUr55fV5uP+vvXr1+vjjz/W4sWLJV0NKEOGDFFYWJj69eunv/76S1FRUXr++edVv379BGsdiY6O1v/+9z+lTJlSrVq10rfffqsrV66obNmyztXIK1euqG/fvqpTp45fvvCPHj2qQoUKqWPHjtq9e7e2b9+uzJkz63//+5+eeeYZVahQQa1atdLLL7+sHj16KHXq1CpTpowqV66sAgUKJMkg7ORm5cqVatu2rZ566qlk0a+/cePGSp8+vc9006dPn1bOnDnjTTzw559/qkSJEvJ4PM44sn+iS5cuznP3fv8cOnRImTJlcsZgxMTEKCYmRufPn1eZMmXk8XjUtm1bv1zEGz16tCpXrqxLly459Rw9elRNmzZVvXr1JEnfffedGjdunGjdw7zHm06dOqlatWqKjIzUhQsX1KhRI6eLneS/7mre/c+bN085c+bUiBEjJF0N0uXKldMzzzzjtBxduHBBXbp00ciRIxNtyvkbPe+YmBgVKVIk3hCFmTNnyuPx6L333kuM8vTRRx8pZcqUOnHihDp27KgMGTIoR44catKkicaNGydJCg0NvaPWm0uXLqlVq1YKCwtT79695fF49OGHHyo2NlZTpkxR6tSpNWTIkHiP++677/5RK++/GcEoCXkPJt9++63Kli2rSZMm+ZwYff/996pdu7batGmjXbt2Jeg+vT777DMFBwf7rDEQGRmp1157TRUrVrzurHf/9ZmhrmfVqlV67bXX4g2GHzZsmEqVKqX+/fs7rXnr16/3++KtMTExCgsLc76A4l51CwkJUYsWLfy67xtJqnFp3vf18uXLNXLkSD3zzDP6/vvvndfLu7Cu16BBg3TPPff4ZfY5r3nz5umuu+5yTtTatGnjDJofOnSoypUrp1SpUqlMmTLKlCmTX1ptfv31VzVt2lRVqlTRE088oZkzZ6pZs2Y+q95fO515QtqwYYMqVqyonj176n//+5/+97//OfctXLhQderUUYsWLbRgwQKtWLFCo0aN0kcffZTsxtAkpeS0TkhMTIyzlot3cpfLly+rR48eqlmzpjNNtHT1RKxjx476/PPP/9HxcOrUqT7TfC9btkzTpk1zZt8aMmSI8uTJoy+++MLncb1799bChQsT/GTO+xq8/vrrKlOmjDO9vfeYtm7dOnk8niQdO7N69WqlTp1apUqV0j333KP77rsv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Vi098cQTOnnypC5evKg2bdqoW7du1118020Hee/Bq3v37mrdurXPfcuWLVOKFCk0evRon9sT+iAa9/d9+umnqlOnjgoUKBBvHJE3HN1///0+M8D56ypTchmX5n1+ccd41ahRQ9WqVZN0deHHYsWKadSoUTpx4oSGDRumOnXqJFoXm2nTpumee+5R165dde7cOS1fvlwpU6ZU9+7dfVZOd/s4mrVr1+qBBx64rQUKkfi2b9/uLAzqfc/+/PPPzviMuMG2U6dOCXZi9d5776l48eI+Y5oOHjyoatWqqWDBgs60/926dUvyyQ4Q3/r16/X444+rRIkSfl0/72b7r1GjhjM5yKJFi5Q5c2Y1atRIHo9H77//vrPttROL+MvKlSuVNWtWTZo0SdLVXjoej0fjx4+XdPV8a/bs2SpRooRatGjhuvOv5IRglIButpjhsGHDnDEjjz76qM+Jd+/evfXhhx8qMjLSr/UdOHBA77//vsqXL6/ixYsrPDxcDRs2VMOGDZ1uUW48Ybt2YPFDDz3kvD6xsbFOaBw5cqRKly6tEydO+G2Mhvf3/fbbbzp16pQWLlyoChUqqGjRovEm4li2bJlq1aqlevXqxZspzx81JZdxaV999ZUef/xxpyvCwYMHfbo7Pv300ypcuLDy58+voKAgv86AtGfPHp/AI0kffvihihYtqs6dOys6Olo//fSTPB6Pevfu7apuqX8nsRf7xa2LjY3V8ePH5fF41KlTp+uGo1SpUqlTp04JNig8runTp+uee+5xJrPxtoRv3bpVGTJkUIkSJe54sUv4z/nz57V8+XK/t9J7Xfs9fODAAb3yyiu6ePGivvvuO+XOnVsTJkzQ2bNnVadOHXk8Hr3++uuJUpvX22+/7azntWvXLhUpUkSdO3d27j937pxiYmL02WefOWs+IWkQjBLI3y1mWL58eWdK2g8++ECpU6fWCy+8oA4dOih79ux+mWjhZt5//30988wz8ng88ng8eumllxJ1/8mF94C6dOlS9e3bV/v379fEiROVK1cup3uWd5vx48erTJkyfgshccc3BQUFafjw4bpy5Yrmzp2rBx54QE2aNIl39W358uUJvkhech6XFhsbq86dO8vj8ShLliwaOnSo9uzZo5EjR6pJkybauXOnzp8/r2+//VZz58716xfMqVOnlDt3bj3//PPxWj4mT57stBSd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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "stopword_weights = [(w, weight) for w, weight in sorted_weights if w in stop_words]\n", "\n", "# Highest negative stopword weights\n", "util.plot_bar_graph([w for _,w in stopword_weights[:20]],\n", " [f for f,_ in stopword_weights[:20]],rotation=45)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "pycharm": { "name": "#%%\n" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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ypMnjx599NF0CaCXlmHHjh0qXbq0xo4dq7feekv33HOP8ufPrw0bNnit/+OPP6pTp07OVdesIPk1HD58WHv27NHZs2clSe+//74iIiI0ePBg5yTy3LlzCg8P18KFCyUlvd8nT56UJH399dfO/68Wdt577z3VqFFDXbt2VXx8fIa8vrFjx6pWrVrq06ePE3bi4uKUL18+eTwePfvss17rP/PMM7rrrru8rq6lpeT3e9GiRWrVqpVCQ0P1wAMPaOHChUpMTNSKFSt07733qlatWk5IT+v9Z+PGjV4nDD169FCnTp20e/dudejQQdWqVZO/v7/CwsKydCifM2eO6tWrp7x586a4qPLtt9+qXbt28vPzS9Na7/nz52vIkCE6fvy4mjVrphEjRqh06dKKjIzU+fPnJUkHDhzQfffdp7lz56bZdv/Oc889p8KFC2vJkiUpQvqYMWMUEBCge+65R3Xr1lWJEiWcsl6P119/XcWKFdPOnTuVmJio7du3KzIyUmFhYQoNDdXgwYPl8Xg0c+bMG31Z1+2jjz7yup+YmKivvvpKRYsWVbly5VSsWLE0r8G4dD9dtmyZypYt61ykvNTGjRtVrlw5derUKV36x1z6m518PJeSLgDmz59f+fPnT/HaFy5cqGrVqqldu3YZdnEw2fr167Vz505JSSG1T58+zkXd5Pf0+PHjioiI0OjRo6+rlvDChQt6+OGH1ahRIx0+fFi1atWSx+NRt27dvNbr37+/GjRokOYB+HI//vij8ubNq8cff1yPPPKIbrnlFj311FMpal5HjBihAgUK6PDhw+lanoxG0MmCrlZj8uyzzyokJES33357mrVxXb16tWbPnu0VrJLbbL766qvatGmTtm/frv79+6tAgQLpdhIveR8wv/jiC3355Zf6/vvvnWX16tVThQoVtGXLFh09elQXLlxQu3bttHDhQvXv319FixZ1mjWlZVku9eqrr+rWW29NcVL4+uuv64477lDVqlX10ksveT2Wlr766itNnTpV/fr1c5bt27dP7dq1U4ECBVKEnczq7H4lye/HJ598ojp16qhkyZJq2rSpBgwYkKKciYmJevHFFxUYGKg9e/Z4vZf79u1T06ZNVa5cOefzvlrYmTVr1hWb0aSl0aNHO82wpKR+JzVq1FCfPn2c2qcZM2aocOHCevzxxxUXF6f169dr4MCBypcvX7ruU1JSyMmdO7deeOEFLV++XPXr11dQUJBzQvTll1/qvvvuU9myZdO09ishIUEnT55U3bp1Va9ePaef37Jly/Twww9r1apVkpJq31q1aqVChQopLi4uzbafHhYtWqRq1aqpbt26Kb5Xy5cv14MPPphmNcsbN25UiRIl9M477+jUqVPq2bOnfH191apVK6/1Bg0apCpVqjiDIqS3VatWqUKFCs6x+fTp09q7d69mzJjhXAR777331L9/f/Xt29e5en09zTO3bt2q/v37a/bs2ZL+d3HpwoULOnnypJ5//nm1atVKHo9HXbt2TYNX99cuvVBzpZPTy0+Kjx49qujo6HQZNCJ5W8m/VUuXLlVgYKC6dOmS4vzgp59+0q5du9K8DMl2797tvB8ff/yxhg0bJinp+FukSJErtriYO3eu6tatm6612Zfbt2+fwsLCNHnyZElJNU8ej0d16tTRgQMHJCW9r0OGDFFQUJATiK7Hzz//rFy5cik6OlpbtmyRj4+POnbsqLlz52rlypV68sknlS9fvnRvcbBjxw69+OKLXgP3TJgwQaVKldKgQYNSHMfS66JbZiLoZKLkg+bWrVu1ZMkS7dmzx2v0oStdSfj999/TrFpx/vz5uvXWW1W+fHkVLlzY6wc0KipKwcHByp07t2rWrKnKlSun65WXS09k+/Xrp6JFi6pIkSKqXr2604b24MGDatKkiQoWLKiqVasqJCREZcuWlZR08hwSEpImI4dcGnIWLVqk+fPn66uvvnKWtW7dWsWLF9e3336rgwcP6ty5c2rbtq0+/vhjjRgxQrfeeqtXVX1a6ty5szwej+rXr+8V6pLDTtGiRTO97fNfWbJkiW699VaNHj1av/32mwYNGiSPx+OcyEhJTb0iIyNVpEiRFD/Y69atU0REhObMmaP69eurZs2aKcJO5cqVNXTo0Ax5PQcPHlSvXr1S1JqNGTNGNWrUUO/evbV7925duHBB06dPV6FChVSiRAkFBwerevXq6bpPJSQk6MSJE2revLkzauLp06dVqlQpPfHEE1773JIlS9SpU6d0ORnas2eP3nnnHZUrV041a9bUvHnz1KpVK68a4/3796fbPnM9kt+bzZs3a/ny5ZozZ45TK/j555+rSZMmatKkSYqLUmk1etyWLVv0+uuv66mnnnKWHTx4UA0aNFDt2rU1cOBATZkyRREREcqXL1+KCxzpaeXKlSpatKhiY2O1ZcsW9e/fX+XKlVPBggUVFBTk/D5dehxNbchJTEzUsmXL5PF4lCdPHs2ZM8d57PKLUMeOHdPHH3+sHDlyaNmyZTfwyq7NX41sduk+lZ7NQL/88kv16dNHDz30kF599VUnZCxZskSBgYF66KGHMuw7cebMGbVq1UqlSpXSlClT5PF49P777zuPT5s2TSVLllS/fv1SBIe0ujCZGh07dlS1atWc+yNHjlTu3Ln1r3/9S507d1anTp1UsGDBG7qYnPwdffLJJ9WmTRtJSZ9ZvXr1VLx4cVWqVEkNGjRI98/o+PHjqlWrlgoXLqwhQ4Z4PfbGG2+oZMmSioqK8jruZ+U+kteLoJPJ5syZo6JFi8rPz09ly5bVsGHDnB/89DpoJiYm6uLFi+rYsaPeffddHThwQEuWLFHp0qXVqFEjZ72tW7dq+fLl2rhxY7qdhCQkJHi9tq1bt6pmzZpav369vv/+e/373/9WQECA1046depUjR49WmPGjHF+QHv16qXGjRvf8IHzSoGrWLFiCg0N1dNPPy0p6WTx/vvvV548eVSxYkWVL19e5cuX18WLF/XFF1+oQoUKOnLkyA2V42rOnz+vJ554Qr6+vvr888+9Htu/f7/uvPNOBQUFZamaHCnpcz5//rx69uzpfJZ//PGHSpUqlWJEvw8++EC9evW64tDhY8eOVVhYmFavXq1vvvlG1apVU1hYmFfY6du3r26//XYdPnw4Qw7aye/1qlWrvPqZjB07VtWrV3fCjpT0mmNiYrRp06YMObG/cOGC6tSpo23btmnv3r0qUaKEV9+Ozz77zLmieqPNWi4diWvLli2Kjo5WdHS08/fPnj2r+++/Xy1btnSuwiePRJSVJL+GuXPnqnjx4mrYsKEKFy6spk2bOk2U5s2bp6ZNm6pZs2Zeo4ylxbZPnTql4OBgeTwe5yQp2f79+/XUU0+pdu3aqlmzph544IEMq2VPtmfPHmewkAIFCqhnz5567733dPToURUoUEBTp05Ns+2/8sorTpPPy5tMJ39OiYmJunDhglq0aOE0X04v1zKyWXofcz755BP5+vqqe/fuuuuuu1SrVi0FBAQ4I8998cUXKl++vNq0aeMMkJGeEhMTtWXLFlWoUEG33HKLM9z3pc3Ypk6dqpIlS2rAgAFeF4UyaqQxSc6Fit27dyskJERvvPGGs86HH36o/v37q2XLlnrhhReua9qK5cuX6/333/faZ+bNm6cCBQo4F0r/+OMP/fbbb2l6wfrvrFu3TuXLl1f9+vVTHCsmTpwoX19fvfzyyxk+IE5GIuhkguQdb/fu3WrYsKEmTZqk3377TQMGDFCdOnX01FNPXTHspJUjR47o0KFDioiI8BqV6rvvvlNAQIAaN26c5tu8kst3rLffflvt27dX7969nWWHDh3Sf//7X5UuXVoDBw5M8Td27Nihxx9/XAULFryhg/rlP+i//vqr6tevr40bN2rr1q0aPXq0ypUr5zVaypw5c/T2229r0qRJTu1bnz59FB4eniYHsat1IpekBx98UPnz50/RWfLAgQMZ1oTlerRu3Vrvvvuu9u7dm6JD9fz58/Xll19K+t+V8eT34NKT8EaNGumOO+6QlDRARvXq1b3Czs6dO9O9zfOlEhMTdfr0aXXt2lVVqlTRpEmTnMcuDTuXj8aW3hISEnT27FkFBwfrueeeU7ly5dSzZ0+nv0RcXJzuu+8+zZo164a2c/l3Mzkg1KtXT8HBwapXr54z/LmU1KzpiSeecGoms8q8GpdavXq1Chcu7Jy0//jjj/J4PM5JnJTUqbpGjRq699570+Qk4dJj/c8//6zbb79dZcuWTXFBIyEhwRmg4Eb6vvydS4+J3377rZYtW+b8Lv3888+aMGGCFi9e7Ox3x44dU+3atbVo0aIb2u6FCxe8WjMMGTJE2bJl08SJE//yu3L77bfrySefvKFt/5XUjGyWXifwhw4dUrVq1ZzR96SkWse77rpLQUFBzuezePFiVatWLcOahe3fv1/lypVTYGCgQkNDnWZgl15we+edd+Tj46OoqKh0/d5e7vLQcvz4cXXq1EkdOnRIs23Ex8fr6aeflsfj0b/+9S/997//dR7r0aOH6tatm6nz1GzcuFHVq1dXz5499dNPP3k99vbbb2epfrzpgaCTSdauXauBAweqW7duXgfvV155RbVr1063sDNv3jyFhISofv36yps3r1auXOk8lpiYqNWrV6ts2bKqWbNmul5t6datm9OmOiEhQYcPH1ZkZKT8/Px0zz33eK176NAhjRw5UkFBQV5DPx49elQzZ85U48aNb6gK+PIrhVOnTlXLli31yCOPOD+4x44d08SJE1W2bFl17949xd/45Zdf1LNnTxUsWDBN2twmv/cLFy5U69atVaFCBUVERHjNNdOpUyflz58/Q5pr3IiNGzfq119/dfpUtWvXTmXKlFGPHj28On9269ZNI0eOTNFk8/PPP9eDDz7ojDr4+++/KzAw0GmOtXLlStWuXVtlypTJlKYQyX766SdFREQoPDxcEydOdJaPGzdOt99+u7p163ZDbb7/ysWLF50T0+RBGpLf27feekt58+ZVeHi413OioqIUEhJyQ32YevTooccee8z5zL7//nsVKlTImYcrOjpaOXLk0CuvvJKi0/KsWbOcuZ6ymsmTJ6t169aSkvbty/f75AsZixYtuuE+YJdfcU7+d+vWrapcubJatmzpdZzO6KHin332WZUqVUq+vr6qX7++V380KelkNjY2Vq1bt9btt99+Q0M8T5gwQZ07d1b79u29phMYPHiwcuTIobfeeuuKYWf16tUqXrx4uvR3yCojm124cEF//vmnihQp4lWDdPHiRa1fv141a9bU+PHjne9HRl5AuHDhgmJjY7V+/XrVq1dPISEhVww78+bNy9ABR/bs2aPAwEBVrVpVH3zwgdPU9Mcff5SPj48+/PDDNN3e1q1bFRkZqeDgYAUHB2vatGkaO3as2rRpo6+//jpNt5Va69atU82aNdW9e/cMnyYksxF0MljyQah79+7KmzevQkJCUrTrfuWVV1S/fn1FREQ4E4imhfXr16tkyZIaPHiwRowYoXLlyqXoDJiYmKivv/5aVapUSbdO3AkJCfruu++cqzrJ78m2bdvUv39/5cmTR6NHj/Z6zqFDh/TSSy/pX//6l1cAO3369A3Vnjz++OO67777nHIcP35cAwYMkL+/vxo0aOC17rFjx/TWW2+pYsWKat++vbP8+PHj+uSTT3T33Xen6Q/tokWLlDNnTg0cOFCvvvqq7r77btWsWdMZ7EBKCowejydDJ5W9VgkJCTp69Kjy58+vsWPHSkoK+IULF1bFihW9ToiioqIUGBjoNSyzlPR97NGjhzwejwoUKKAXX3xRO3fu1KuvvuqM2JOYmKjFixerSZMm6drhNll8fLzzHfzjjz906tQpp5nGTz/9pIcffjhF2HnttdfUuHHjNO9s/9VXX3ntvwsXLlSrVq3UsGFDTZkyRfv379exY8fUt29fFSxYUE8++aReeeUVZ5jeG+kjlNzR+NK27O+8847T12/37t3OcNvJ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zz//XBEREWrWrJm6dOmSrhMEpkbye3Ho0CHVrVtX4eHhiomJcT6zH374QePGjVPhwoXVqlUrpy9HciBK7bb69esnX19fFS1aNFPmJBg7dqxq1qyp1atX69tvv1XlypW95u9J9vPPP6fbD/23336r3Llzq06dOvJ4PHrvvfe8Hn/xxRdVo0YNDR48OF1GobqakydPatq0aapYsWK610Kkpeeff17t2rXTrl275O/v79UUa9GiRXr++edT1LTciGbNmilnzpxew+RLUpcuXVS9enV17dpV48ePV69evZQnT5507dtwtWPrhAkT1KBBAz300ENO2Nm5c6fatGmj0NDQ69p/r7b9s2fP6tFHH3XC5tKlS9W6dWv5+/urcePG6ty58w2N5JYaWWFks9T0TUzPgSk+++wzr/5Hc+fOdYbwb9OmjaZNm6YxY8YoV65cmjlzpuLj4xUfH68hQ4YoJCQkTUeLTY1x48YpODhY3333ndfysWPHqnLlyllyzi6kP4JOGks+8P3+++/6/fffnU7WS5cuVefOnfXiiy9qx44dzhWqZs2aOaOnpMVB87vvvlOJEiWcZlbnz59Xjhw5VLJkSb3yyitOm9STJ08qLCwsw4Z73bZtm3OQiYmJ0a233qpHH300xUnEhQsX9OOPP6brj9qsWbNUqlQp/fDDD5KSrnbnzJnTaxSb77//XhUrVnTaG6flD9r19PdIfu/SsilUWkj+HieHnQYNGmjRokVeAffEiROKiopS27Zt5fF4Uj2PwqXv/dKlSzPsauG1TlZaq1atDP0BHTZsmDwej2rUqOEsu/R78eKLL6p27dp68sknnWY2GeHUqVOaNm2aQkNDde+992bYdlNrzZo1zpXo2bNn6/bbb1fx4sWd4aSTm1X27dtXERERadIsKCEhQQcPHlS5cuXUqFEj+fr6aubMmV411yNGjFDbtm1VqVIltWzZMl07ul+6f+7du1dxcXFetVdvvPFGirDzyy+/aMCAATd0bB4/frzefPNNr1FG33vvPeXOnds5Hp88eVJHjhzxet8zopluZo9sllX6Jh44cEBBQUF69NFHtXPnTm3ZskV58+bVK6+8ohEjRqh3797KlSuXnnjiCY0bN04ej0chISGqWbOmChcunCFNVJO/vwcPHvRqTrpp0yY1adJEXbt29Qo7/fr1U7NmzdJsZFTcXAg6aSj5wDd//nzVqlVLwcHBKleunNfEZ5eu+8ILL6hEiRJpeuL2/vvvO9vbtWuXAgMD9eSTTzoTro0YMcIJNxlVhZs8EMPs2bOdYPPZZ585k69dbQSQ9Ao7//73v/XQQw9JSuqEmzdvXqf/1MmTJ52aps2bN6d5Ga6nv0dGzW59o+Li4lSnTh01aNBA0dHRXq81ISFBZ86cSdF/5FplVnODa52stFy5cukadi59/bNnz9aQIUPk7++v5s2bO8svbfY0ePBg1a9fP0ODjvS/prm1a9fOct/bxMREnTt3Tm3btnUmJb5w4YKaNWumW265RZ9++qlOnz6tI0eOaNCgQSpatGiaDp6QmJjovCe9e/eWr6+vZs2alWJQkWPHjqXrqEiXhpyhQ4cqPDxcRYoU0UMPPeSMMCclhZ2GDRuqa9euKfpvXs9x8fTp03rqqafk4+Oje+65x2vo/ocfflgtWrS44oloeo+ultVGNssKfRPXrl2rWrVqqU+fPoqKilL//v2dx44dO6YJEybo1ltv1cyZM50hlKdMmZJuEyJLSXN0XXquNHfuXJUtW1alSpVSpUqV9N///lenTp3S0qVL1aRJE5UpU0Z33323Wrdurbx582aZ4Z2R8Qg6aWzJkiXKlSuXJk6cqJ07d2rSpEnyeDz69NNPnXWio6PVuXNnFStWLM2ufmzYsEH79u3T77//ri1btujs2bNq0aKFc5VSSpr4Ln/+/Bo1apQuXLiQLj8gV/ubbdu2VZkyZTRnzhyvsJMrVy717t07TZuHXOpKbbqffPJJDRo0SN99951uu+02J+QkJiZq+vTpev311706badH4EpNf4+QkJAs1Xny0qZpEyZM0KhRo5yZ2w8ePKjw8HA1bNjQK+zcjO2is8pkpcnv3caNG/X555/r008/1fHjx7VixQqVLVtWd911l9f6yceUI0eOpEt5/s7p06ez1Fw5l8+9tWnTJuXKlUtjxoyRlFTrXa9ePVWqVElFihRRkyZNVLp06Rs+Nl/aD+Wzzz7Thx9+6HWi1rdvXyfsZOTIVMleeOEFFSpUSJ988okWL16su+++W0FBQXrnnXecdSZMmKDg4GANHTpUUtrsx7/++qsGDRqk4OBglS1bVqNGjVJUVJTuvffeDG+Wm1VHNssKfRPXrl2r2rVrKyAgwKvfmpQUtB599FFncI30duLECfn5+almzZrav3+/1q9frwIFCujVV19VTEyMevfurZo1ayoyMlKnT5/Wtm3bNG3aNHXs2FFRUVFZcrRHZByCThrr16+fc0Das2ePypQp4zUzuJQ0mtYzzzyTZleGPvnkExUvXlwvvPCCc7K8e/duVatWTdHR0ZKSDuBdunTRgAEDMmx0tcvdf//9CggI8Ao70dHR8ng86dK58tJwsH37du3bt08XL150RlbyeDxeVzBPnz6t5s2b65lnnknzslwuK/T3uBEff/yx/Pz8dMcdd6hdu3byeDwaO3aspP81Y2vatKkWLFhwU4WcrDpZ6Zw5c1SwYEFVr15dHo9HDRo00JgxY7RixQqVK1dOzZs31+7duxUVFaXy5ctfd82ZW61YsUIzZsxw+r29/vrrCg4O1vLlyyUlHSu++OILjRs3TtHR0Wk2X83cuXNVpEgR3XnnnfL391fTpk01evRo5/Enn3xSefLk0fTp0zP0YsbSpUsVGhrqzOm2dOlS5cqVS40bN1bZsmW9+n7NnTs3zct24cIFnTlzRk899ZTatGmjfPnyyePx6LXXXkvT7fyVrD6ymZT5fRM3btyowMBABQcHpwh5Q4YMUdWqVTMspMfGxio0NFT169fXRx99pGeffdbr8fHjx6t69eoaP368s+xm+u1B+iHopKGLFy8qPDxco0aN0vHjx1WyZEmvzq0TJ07U0qVLJaVdX4tFixYpV65cmjJlildTkc2bN6tkyZJ69913tWfPHg0dOlSNGjVKt5qTqKgorwPM+PHj9dVXX6WoUWnXrp38/Pw0Z84c5+Rw1apVadoGe8KECV5XYwcOHKgKFSqoUKFCatSokcaNG6dx48bJx8dHH3zwgfbs2aNNmzapRYsWql69erq0B8+q/T2ux+bNm1WsWDGnJuy3336Tx+PRoEGDnBOigwcPqmLFimrZsmWWmiDyWmS1yUrXrVunwoUL6+2339bRo0cVFxenbt26qWnTpnrjjTf03XffKSAgQEFBQSpRooR+/PHHdC/TzeTPP/9UUFCQfHx81KxZM61fv1579uzR/fffr6ioqHRrBrRmzRoVLVpUkydPlpR0nPN4PF7DFkvSo48+qmLFiqXrSezlx+F9+/ZpyJAhunDhghYvXqwiRYro7bff1s8//6yKFSuqVKlSXsdzKW1rti89Ad25c6emTZvmNBlLT9dzISOzZFbfxMtt2rRJVapU0aOPPuoVdnr16qU777wzQ4/ve/fuVUhIiDwej1q1apXiO/nYY4+pWrVqGVYe3BwIOmls2LBheuCBB1S8eHH16tXLOVidO3dOjz32mF544YU0O5ifPXtWDzzwgDM6zOnTp7Vz506NGDFCS5cuVbNmzVSwYEGVK1dOhQsX1tq1a9Nku5f7888/1aRJEzVq1MgZBKFatWoqVaqUvv322xQ/stWrV1e1atX07rvverVPT4v3ZdeuXSpVqpR69OihHTt2aN68eSpevLjmz5+v6dOna+DAgfL19VXPnj01btw4+fr6qnjx4qpevbqaNm2ariP8ZJX+Hjdq6dKluvvuuyX97/2+tNYyuZ32oUOH0mVI4/SUVToEX+qDDz5QpUqVdPz4ced4EhcXpwcffFCNGzdWQkKCTp06pZiYmCzXLyazXHqSeObMGY0YMUJ33nmnIiMjVbBgQU2ZMkWPPvqoypQp4zSXSut9fvr06WrWrJmkpCGag4KC1LNnT+fxS/szZNQIeZcOOHD69GklJiY6gS/5ON2uXTtVrVpVXbt2TdfJOa/2d9M77GSVkc2uRVapkVi3bp1CQ0MVFBSkRx55RL169VKhQoUydJLSZHv37lV4eLhKliyZYpqF2bNnKzg4WIcPH87wciHrIuhcp+QD0KlTp7yuaERHR8vPz081atRwqr7PnTvndB5Oy2ZjZ86cUa1atfTEE0/oyJEj6tu3rxo3bqxixYopMDBQ48eP14IFC/Tpp5+m2wln8vtw8OBBtW/fXo0bN9a8efMkSXfeeacCAwP1zTffOCcRiYmJ6tixo/Lnz6/27dunS5nWr1+vsLAwPfXUU4qMjNSoUaOcx44dO6Y333xTefLk0aJFi7Rz504tX75c69atc37o06tGJyv090gLM2fOVLVq1bR+/XoFBASoZ8+eznv31VdfqUuXLhk243R6yQodgpPNmjVLZcuWdeZWSv5+7t69Wx6PxwnO8LZmzRpnQtUdO3aocuXKmjNnjr7//ns9/PDD6t69uzwej2rXrp0uNd0jR45U165ddebMGZUqVcprP1m8eLFef/31dP8OXXqR6b333lNAQIDXqIcnT55UxYoVNWzYMElJk4B27NhRs2fPzvD+dRmxnax4IeNmsWnTJpUrV06lS5fW8OHDM6SGKfk78fPPP+vHH390+oLu3btXVapUceYDTB68IzIyUtWrV2d0NXgh6FyH5J1v4cKFaty4sdNuNPkE//3331eZMmUUHh6u1q1bq02bNuk27OK7776rXLlyKW/evGrXrp3effddSUkdXe+66650n2Dt0qugq1atUuPGjVWzZk0tWrRIktSkSRMFBgZq5cqVTi3Fo48+qq1bt6Zr2ZJHjSlQoIDX0M1S0sRnbdu29ZoPIVlalimr9vdIjeTX8Ouvvyo2NlaJiYnasmWL6tevr/z58zvzXySv179/f7Vu3TpNJ1rMLFmhQ7CUdJLu4+OjqKgor+V79uxRaGioVq9eneFlykou3WeTa2RjY2PVvn173Xbbbc4QwcuWLVPx4sW1YcMGHTp0SAsWLFCpUqV02223OSHyevzdpIq+vr7q37+/1/Hg8ccfV4cOHdL1hOzS92Xu3Ll644035PF41KhRI+cE/uzZs+rZs6fq1KmjF154QXfccYdq167tPDe9fz8yS1a6kHEzWbNmje66664MGc0xeX/55JNPFBgYqJCQEOXKlUuPPPKI9u/fr9jYWFWtWtUZQCQyMlJ+fn6ZUsuErI2gk0rJB/7PP/9cOXPmVFRUlKZMmaK2bduqYsWKTmfKpUuX6rXXXlOHDh30n//8J9Vzh6TGli1bnFmck8vXp08fde3aNcXQpemlX79+atu2rWrXrq08efIoKChI8+fPlyTdddddCgoKUvPmzVW3bl2vUcTS84d006ZNCgwMVM2aNVOEzIiICLVo0SLdtp0sq/X3SI1Lf2iCgoI0efJk58d/8ODBTs3Url279Msvv2jgwIEqUKBAlpnQNK1kdodgKeniSc6cOTV48GBt375dBw8eVFRUlPz9/WmupqTareQBGBYsWKCXX35Zv/76q55//nkVK1ZM3bp108cff6wxY8bo6aefdr7Hp0+fdmp9UuvvJlV85513NGHCBPn6+ur9999XfHy89u3bp0GDBqlQoULpOhnopZ577jmVKFFCo0aNUp8+fVSuXDmFhoY6rQu+/vprRUREqFatWvrXv/7lhEW3hpxkWeVCxs0mPYc+v9ySJUuUP39+TZo0SfHx8c7gRR07dlRsbKxiY2N15513OjXbaTWICNyFoHMNZsyYoTfffNO5f/r0abVp0ybF6FwDBw5UuXLlnJHOMsO2bds0ZMgQ5cuXL8NOON99913lz59fa9as0eHDh7Vv3z7dddddCgsLc4bVHjFihHr27KnevXs7TW8y4od048aNqlatmh5++GHnSs+JEydUr149de/ePV237YZmEgsXLlTu3Lk1btw4Z8SqZIMHD1b16tWVI0cOhYWFqVKlSq67mpZVOgQnJiZq5syZypMnj0qXLq0KFSqoVKlS6dbv7mZy5swZtWrVSqVKldKUKVPk8XicCUGlpEDSs2dPlSlTRhUqVFCDBg1uuBbsWidVjIiI0Ouvvy6Px6OyZcuqRo0aKlu2bIZMqiglXQQrVqyY1/QGu3btUvXq1RUaGqodO3ZI+t8oaMnf94yYoDOryAoXMpDS8ePH1bNnT7388suSkr63ZcuWVfv27ZUvXz61adNGu3bt0p49exQeHn7dFyzgfgSdv3Hq1Ck1a9ZM4eHhXvMLNG7c2JmY89JakxYtWjgdUDPamjVr9OCDDyokJCRDJ8d68cUXFR4eroSEBOeH8vfff1ft2rUVGBiYYnZpKWN/SNetW6dKlSqpWLFiuvfee9W+fXvVqFHDuXKZ3m3Db9ZmEidOnNAdd9zhNJk6e/as4uLiNGHCBC1btkyJiYk6fPiwPv/8c23evNm1QxpnlQ7BUlJztcWLF+uzzz7T3r17M7s4WUJyc8oKFSrolltu0bhx4yR5X3k+ePCgFi9erEqVKsnj8ahp06Y3vN3UTKq4efNmvfvuu1q8eHGG9l9bs2aNChQo4ExlcOlcQgUKFFDjxo2dQRGSH8tK3/f0llUuZCCl+Ph4zZkzRzt27NCRI0dUo0YNZ17AmTNnyuPxqGXLltq7d+8/Kpgj9Qg612D//v164IEH1KRJE2eo0C5duqh27drOOsnDRQ8fPlwNGzbMlAkez5w5o5UrV2ZY9W3yj8Tw4cNVs2ZNp29JcoD48ssvlTt3blWuXNlpxpZZNm/erHLlyqlKlSp69913nc8now6QN2MziePHj6tBgwYaPXq0tm/frgEDBuiOO+5Q3rx5Va1aNb388suub96Cm8P+/ftVrlw5BQQEKDQ01BnF7PJh/P/880+99NJLaTaHWVaaVPFK++KFCxfk7++vAQMGpChb7dq1lS9fPtWoUSNDypdV/ZOC3c0m+WLFBx98oPDwcOfizqxZs9SkSRMFBARQk4O/lc1wVZLswoULVrx4cRs6dKjlypXLpk2bZvPmzbMhQ4bYwYMHrVOnTmZmljNnTjMz++WXX6xAgQKWkJCQ4eXNlSuXNWzY0Pz9/TNkex6Px8zM7r33Xtu0aZONHDnSzMxuueUWMzOLj4+3O++809q2bWv33ntvhpTpakJDQ23mzJkWHh5uXbt2tezZs1tiYqLlyJEjQ7bv5+dnXbp0sTVr1ljPnj0tLi7Opk2bZidPnsyQ7V8LSV738+bNa+XLl7fXXnvNqlevbrt27bKHHnrI9u7daxUrVrTdu3dbtmwcQpD5ihUrZl999ZV9+umnlidPHmvatKkdPHjQcubMaRcuXDAzs2PHjln+/PntpZdesuDg4DTZbs2aNW3KlCnm8Xhs6dKltmHDBuex/PnzW/HixW3r1q1OGdJLYmKisy9++eWXNn/+fPvkk08sR44c1rt3b1uxYoWNGjXKWd/Hx8cqVKhgixYtsj/++MOGDBmSruXLypJ/x5D1+Pr6mpnZ7t277eTJk5Y7d24zM9u4caPdf//9tn37ditdunRmFhE3AY8uP7uBQ5J5PB776KOPbO7cubZ3717bsGGDlSxZ0p577jkrWLCg9evXzwoWLGhhYWF25swZW7BggX333XdWpUqVzC5+hpo+fbr17NnTnnrqKXvggQesYMGC9tRTT1nVqlVt+PDhZub9Y5xZkj/TzChL8rbNzJYtW2Zly5a1gICADC3D1SSXbc2aNXbo0CHLli2b3X333WZmtnDhQsuWLZu1atXKEhMTLXv27Na9e3czM3vrrbcse/bsnCwgQyV/Xzdu3Gj79u2zEydOWNOmTc3Pz8/WrVtnTz75pB07dsy++uorK1KkiI0ZM8bOnDljAwcOTJfv6+bNm+2hhx6yWrVq2ZNPPmnVq1c3M7PIyEjbsWOHLViwwDlJS2uXHleGDBliM2bMsKJFi9q2bdssIiLC2rVrZwsXLrSYmBirWLGi1atXzxYsWGDx8fG2cuVKa9u2rQUEBNjkyZPTpXzAjdqwYYPVrVvXatWqZb6+vvbjjz/a119/bVWrVs3souFmkFlVSTeL1atX69Zbb9XUqVP1888/a/v27WrcuLEaN26st99+W9u3b1dkZKTatWunhx9+WD/99FNmFzlTJCYmas6cOSpatKhKliypUqVKZWg/mNTIzLJkpffhcp988oly586tMmXKqFChQurWrVuKdeLi4pzBLjJq1CjgSubOnasiRYrozjvvlL+/vxo3bqyJEydK+t9Q9/nz59dDDz0kj8ejjRs3pmt5MntSxddee03FixfX999/L0kaN26cPB6PHnvsMS1fvlyzZs1SgwYN1KhRI91///1Os7577rnHaUablY9P+GdbtWqVunTpoj59+vxjz7NwfQg6f2PSpEkKDg72mhR07969atCggcqWLevMnSP9s0aquZp9+/bpxx9/1FdffZXh/WBwfRITE3Xu3Dm1bt1a7777rnbt2qWPP/5YBQsW1AMPPOCst2TJEjVu3FgVK1Z03ehquLmsWbNGRYsWdfpMrlq1Sh6PxxneX0oapem5557TY489lmGhPDMmVZSSjrsPP/ywPvzwQ0lJIbBAgQJ6/vnnlTdvXnXu3PmKZenfv7/8/Pyy5IiPwOUuHfAIuFYEnb8xY8YMlS9f3uncmlxDsWnTJt12222qXLmypk+fLomrYVeSGYMy4Nokf1+PHTumw4cPq2fPntq1a5ekpB+UL774QoUKFVKHDh2c58yaNUu7d+/OjOICjunTpzujW+7YsUNBQUHq2bOn8/ilA7IkH7MzSkZOqpjs7Nmzmjdvnv7880/9+OOPCgwM1NixYyVJI0eOlMfjUePGjZ33ZcOGDXriiScUFBSUYUNdA0BmoCfx3wgPD7e9e/fam2++aWb/62h//vx5CwsLs6pVq9odd9xhZnRqvJLs2bNndhFwFR6Px+bPn29Nmza1+++/3+bNm2dHjx41M7Ns2bLZnXfeabNmzbIVK1ZYixYtzMysU6dOFhgYmImlBswOHz5sxYsXt7Nnz1qTJk3srrvusokTJ5qZ2ZIlS2zOnDl27NgxM/vfMTujhIWF2aeffmpFihTJsG36+vpa69atLX/+/LZ06VKrVKmSPfzww2aWNPBAly5dLFeuXFayZEkzM6tWrZq1adPGVqxYYTVq1MiwcgJARiPo/I1y5crZlClTbMSIERYVFWW7d++2P//80+bPn2+BgYH21ltvZdgoZ0BaWrNmjUVGRlqTJk2sYcOGlj17dnvxxRftzz//NLP/hZ2pU6fajh077Pfff8/kEuOfRpIzguWRI0fs1KlTZmbWqFEje//9961gwYLWqVMne+utt5zBRRYsWGDff/99ho2oeCXJo0VlpOTXu2PHDjtx4oR5PB47d+6cLVmyxO655x77/PPPLVu2bM4IcM2aNeO3C4DrMeraNZBks2bNsl69elnhwoUtW7ZsduzYMYuJibGaNWtmdvGAVNu8ebP9+OOPFhsba0OHDjWzpJFtWrRoYXXr1rXp06dbgQIFzCxptLxz587Zrbfemoklxj9JdHS0lSxZ0qpVq2ZmZvPmzbPXXnvNDh8+bKGhodauXTs7e/as9evXz95++2174IEH7PDhwzZ+/HibMmWKrVy50ipVqpTJryJzfP/999awYUOrWLGixcfHm6+vr61bty5Tgx8AZBaCTirs2bPHNm3aZGfPnrU6derQhAc3HUl2/vx5K1mypB09etQeeeQRmzZtmvN4cthp0KCBTZ482QoVKpSJpcU/0cGDBy08PNyaNGlizz//vJ07d87Cw8Nt4MCBliNHDouNjbV33nnHOnfubJUqVbL+/ftbmTJlLG/evHbixAmbM2fOP7451rp162zevHmWN29e69evn+XIkcMuXrxI2AHwj0PQAf4hdMl8G7///rs1bdrUbrnlFps9e7aFhoY6j23cuNHCwsKsY8eO9t5772X63Ef451m3bp316tXL6tSpY/nz57f4+Hj773//a2Zmx48ft5kzZ1r//v3t7bfftipVqti6devMz8/PQkNDnX4o+B9CDoB/KoIO4HLJAefkyZN266232okTJ6xAgQK2d+9eq1WrloWGhtqbb77pNVv8Tz/9ZDlz5rQKFSpkYsnxT7Zu3Tp7/PHH7eDBg9a6dWt74403nMeOHTtm/fr1s7Nnz9qsWbMysZQAgKyMS7WAiyWHnOjoaOvWrZvVr1/fHnvsMYuOjjZ/f39bs2aNbdmyxfr06WO//PKL87zQ0FBCDjJVzZo1bcqUKebxeGzp0qW2YcMG57H8+fNb8eLFbevWrU7negAALkfQAVzM4/HYwoUL7f7777c6derYU089Zblz57bWrVvbTz/95ISdX375xR566CHbvn17ZhcZcFStWtU+/fRTu+WWW2zcuHFeYefIkSNWpEgRO3/+fOYVEACQpdF0DXCxM2fOWMeOHa1x48bWv39/279/v9WrV89atGhhkyZNsoSEBMuePbvt2bPHWrRoYV988YUFBARkdrEBL+vXr7du3brZ6dOnrXHjxubj42Mff/yxffnll1a9evXMLh4AIIuiRgdwsfPnz9uWLVusYcOG9scff1jt2rWdkGNmNnPmTPv5558tMDDQtmzZQshBllSjRg2bOXOmZc+e3ZYtW2aBgYG2du1aQg4A4C8RdAAX8/HxsZo1a9ry5cutVq1a1rp1a5swYYKZmR06dMi+/PJLW79+vSUmJlr27NkzubTA1VWpUsU+/PBDq1ixokVERBDKAQB/i6ADuEBCQoIlt0KNj4+3ixcvmplZrly5rESJEjZ48GCrWrWqjR071gk0o0ePth9++MHq169v2bJlc4aXBrKqsLAw+/TTT61IkSKZXRQAwE2APjrATWzlypXWqFEj5/6iRYvsjTfesBw5cliDBg1s0KBBZmZ2//332+rVq61jx45WqFAh27lzp82bN8+WL19O8x8AAOBK1OgAN6mNGzdakyZNLCoqyszMli9fbh06dLCAgAArVKiQDR061B555BEzM5s7d65169bNduzYYZ988ol5PB779ttvCTkAAMC1qNEBblLx8fE2Y8YMe/LJJ23QoEFWs2ZN2759u/Xr188uXrxoS5cutQ4dOlibNm3svffeM7OkGdITEhIsR44c9MkBAACuRo0OcBNJTEx0/u/j42M9evSwMWPG2IgRIywiIsLpZ5MjRw5r0aKFffTRR7ZgwQKLiIhwlvv4+BByAACA6xF0gJtItmzZbO/evTZnzhwzM/voo49s5cqV9uabb9r58+dt69atXuu3aNHC5s6da++884717ds3M4oMAACQKXJkdgEAXLsLFy7YwIEDLTY21latWmVjx461adOm2cMPP2xmZpGRkVasWDH797//7Tznrrvusi+//NJKliyZWcUGAADIcPTRAW4yx44ds7vvvtt++OEHi4yMdObFOXfunH3wwQcWGRlpgwYN8go7AAAA/zTU6AA3mdy5c1vu3LmtWrVqtmPHDvvggw/soYceMl9fX+vcubOZmT3xxBN2+vRpGzVqVCaXFgAAIHNQowPchOLj4+3PP/+07t2725kzZ+yxxx6zLl26OI+PHj3aXnvtNdu8eTOTKwIAgH8kBiMAbkI+Pj5WrFgxGzdunN166602ffp0Zwjpl156yTZu3Ghbt24l5AAAgH8sanSAm9zu3bvt2Wefte3bt5uvr69t377dlixZYnXq1MnsogEAAGQagg7gAvv27bMlS5bY77//bh07drSKFStmdpEAAAAyFUEHAAAAgOvQRwcAAACA6xB0AAAAALgOQQcAAACA6xB0AAAAALgOQQcAAACA6xB0AAAAALgOQQcAAACA6xB0AAAAALgOQQcAAACA6xB0AAAAALgOQQcAAACA6/w/E86xG0+FjyYAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Highest positive stopword weights\n", "util.plot_bar_graph([w for _,w in stopword_weights[-20:]],\n", " [f for f,_ in stopword_weights[-20:]],rotation=45)" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Summary\n", "\n", "* Text classification can be framed as **discriminative** learning problem\n", " * Learn how to *discriminate best output based on input*\n", " * Increase relative/conditional probability of classes\n", "* Ingredients\n", " * Model (commonly used: logistic regression)\n", " * Feature function\n", " * Regularisation\n", "* Evaluation\n", " * Quantitative evaluation: measure accuracy\n", " * Qualitative evaluation: inspect feature weights" ] }, { "cell_type": "markdown", "metadata": { "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## Background Material\n", "* Longer version of lecture on text classification: [notes](chapters/doc_classify.ipynb), [slides](chapters/doc_classify_slides.ipynb)\n", "* [Baselines and Bigrams: Simple, Good Sentiment and Topic Classification](https://www.aclweb.org/anthology/P12-2018), Sida Wang and Christopher D. Manning, ACL 2012 \n", "* [Thumbs up? Sentiment Classification using Machine Learning\n", "Techniques](http://www.cs.cornell.edu/home/llee/papers/sentiment.pdf), Bo Pang, Lillian Lee and Shivakumar Vaithyanathan, EMNLP 2002\n", "* Jurafsky & Martin, [Speech and Language Processing (Third Edition)](https://web.stanford.edu/~jurafsky/slp3/ed3book.pdf): Chapter 4, Naive Bayes and Sentiment Classification + Chapter 5, Logistic Regression" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 1 }